diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/nfs4proc.c | 11 | ||||
-rw-r--r-- | fs/nfs/nfs4xdr.c | 18 |
2 files changed, 2 insertions, 27 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 2e0fbff37d1f..f01c3d1b54b7 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -788,7 +788,6 @@ struct nfs4_opendata { | |||
788 | struct nfs4_string owner_name; | 788 | struct nfs4_string owner_name; |
789 | struct nfs4_string group_name; | 789 | struct nfs4_string group_name; |
790 | struct nfs_fattr f_attr; | 790 | struct nfs_fattr f_attr; |
791 | struct nfs_fattr dir_attr; | ||
792 | struct dentry *dir; | 791 | struct dentry *dir; |
793 | struct dentry *dentry; | 792 | struct dentry *dentry; |
794 | struct nfs4_state_owner *owner; | 793 | struct nfs4_state_owner *owner; |
@@ -804,12 +803,10 @@ struct nfs4_opendata { | |||
804 | static void nfs4_init_opendata_res(struct nfs4_opendata *p) | 803 | static void nfs4_init_opendata_res(struct nfs4_opendata *p) |
805 | { | 804 | { |
806 | p->o_res.f_attr = &p->f_attr; | 805 | p->o_res.f_attr = &p->f_attr; |
807 | p->o_res.dir_attr = &p->dir_attr; | ||
808 | p->o_res.seqid = p->o_arg.seqid; | 806 | p->o_res.seqid = p->o_arg.seqid; |
809 | p->c_res.seqid = p->c_arg.seqid; | 807 | p->c_res.seqid = p->c_arg.seqid; |
810 | p->o_res.server = p->o_arg.server; | 808 | p->o_res.server = p->o_arg.server; |
811 | nfs_fattr_init(&p->f_attr); | 809 | nfs_fattr_init(&p->f_attr); |
812 | nfs_fattr_init(&p->dir_attr); | ||
813 | nfs_fattr_init_names(&p->f_attr, &p->owner_name, &p->group_name); | 810 | nfs_fattr_init_names(&p->f_attr, &p->owner_name, &p->group_name); |
814 | } | 811 | } |
815 | 812 | ||
@@ -843,7 +840,6 @@ static struct nfs4_opendata *nfs4_opendata_alloc(struct dentry *dentry, | |||
843 | p->o_arg.name = &dentry->d_name; | 840 | p->o_arg.name = &dentry->d_name; |
844 | p->o_arg.server = server; | 841 | p->o_arg.server = server; |
845 | p->o_arg.bitmask = server->attr_bitmask; | 842 | p->o_arg.bitmask = server->attr_bitmask; |
846 | p->o_arg.dir_bitmask = server->cache_consistency_bitmask; | ||
847 | p->o_arg.claim = NFS4_OPEN_CLAIM_NULL; | 843 | p->o_arg.claim = NFS4_OPEN_CLAIM_NULL; |
848 | if (attrs != NULL && attrs->ia_valid != 0) { | 844 | if (attrs != NULL && attrs->ia_valid != 0) { |
849 | __be32 verf[2]; | 845 | __be32 verf[2]; |
@@ -1611,8 +1607,6 @@ static int _nfs4_recover_proc_open(struct nfs4_opendata *data) | |||
1611 | 1607 | ||
1612 | nfs_fattr_map_and_free_names(NFS_SERVER(dir), &data->f_attr); | 1608 | nfs_fattr_map_and_free_names(NFS_SERVER(dir), &data->f_attr); |
1613 | 1609 | ||
1614 | nfs_refresh_inode(dir, o_res->dir_attr); | ||
1615 | |||
1616 | if (o_res->rflags & NFS4_OPEN_RESULT_CONFIRM) { | 1610 | if (o_res->rflags & NFS4_OPEN_RESULT_CONFIRM) { |
1617 | status = _nfs4_proc_open_confirm(data); | 1611 | status = _nfs4_proc_open_confirm(data); |
1618 | if (status != 0) | 1612 | if (status != 0) |
@@ -1645,11 +1639,8 @@ static int _nfs4_proc_open(struct nfs4_opendata *data) | |||
1645 | 1639 | ||
1646 | nfs_fattr_map_and_free_names(server, &data->f_attr); | 1640 | nfs_fattr_map_and_free_names(server, &data->f_attr); |
1647 | 1641 | ||
1648 | if (o_arg->open_flags & O_CREAT) { | 1642 | if (o_arg->open_flags & O_CREAT) |
1649 | update_changeattr(dir, &o_res->cinfo); | 1643 | update_changeattr(dir, &o_res->cinfo); |
1650 | nfs_post_op_update_inode(dir, o_res->dir_attr); | ||
1651 | } else | ||
1652 | nfs_refresh_inode(dir, o_res->dir_attr); | ||
1653 | if ((o_res->rflags & NFS4_OPEN_RESULT_LOCKTYPE_POSIX) == 0) | 1644 | if ((o_res->rflags & NFS4_OPEN_RESULT_LOCKTYPE_POSIX) == 0) |
1654 | server->caps &= ~NFS_CAP_POSIX_LOCK; | 1645 | server->caps &= ~NFS_CAP_POSIX_LOCK; |
1655 | if(o_res->rflags & NFS4_OPEN_RESULT_CONFIRM) { | 1646 | if(o_res->rflags & NFS4_OPEN_RESULT_CONFIRM) { |
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index ac7a3b014d99..6e878dcc0d2d 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c | |||
@@ -431,20 +431,14 @@ static int nfs4_stat_to_errno(int); | |||
431 | #define NFS4_enc_open_sz (compound_encode_hdr_maxsz + \ | 431 | #define NFS4_enc_open_sz (compound_encode_hdr_maxsz + \ |
432 | encode_sequence_maxsz + \ | 432 | encode_sequence_maxsz + \ |
433 | encode_putfh_maxsz + \ | 433 | encode_putfh_maxsz + \ |
434 | encode_savefh_maxsz + \ | ||
435 | encode_open_maxsz + \ | 434 | encode_open_maxsz + \ |
436 | encode_getfh_maxsz + \ | 435 | encode_getfh_maxsz + \ |
437 | encode_getattr_maxsz + \ | ||
438 | encode_restorefh_maxsz + \ | ||
439 | encode_getattr_maxsz) | 436 | encode_getattr_maxsz) |
440 | #define NFS4_dec_open_sz (compound_decode_hdr_maxsz + \ | 437 | #define NFS4_dec_open_sz (compound_decode_hdr_maxsz + \ |
441 | decode_sequence_maxsz + \ | 438 | decode_sequence_maxsz + \ |
442 | decode_putfh_maxsz + \ | 439 | decode_putfh_maxsz + \ |
443 | decode_savefh_maxsz + \ | ||
444 | decode_open_maxsz + \ | 440 | decode_open_maxsz + \ |
445 | decode_getfh_maxsz + \ | 441 | decode_getfh_maxsz + \ |
446 | decode_getattr_maxsz + \ | ||
447 | decode_restorefh_maxsz + \ | ||
448 | decode_getattr_maxsz) | 442 | decode_getattr_maxsz) |
449 | #define NFS4_enc_open_confirm_sz \ | 443 | #define NFS4_enc_open_confirm_sz \ |
450 | (compound_encode_hdr_maxsz + \ | 444 | (compound_encode_hdr_maxsz + \ |
@@ -2191,12 +2185,9 @@ static void nfs4_xdr_enc_open(struct rpc_rqst *req, struct xdr_stream *xdr, | |||
2191 | encode_compound_hdr(xdr, req, &hdr); | 2185 | encode_compound_hdr(xdr, req, &hdr); |
2192 | encode_sequence(xdr, &args->seq_args, &hdr); | 2186 | encode_sequence(xdr, &args->seq_args, &hdr); |
2193 | encode_putfh(xdr, args->fh, &hdr); | 2187 | encode_putfh(xdr, args->fh, &hdr); |
2194 | encode_savefh(xdr, &hdr); | ||
2195 | encode_open(xdr, args, &hdr); | 2188 | encode_open(xdr, args, &hdr); |
2196 | encode_getfh(xdr, &hdr); | 2189 | encode_getfh(xdr, &hdr); |
2197 | encode_getfattr(xdr, args->bitmask, &hdr); | 2190 | encode_getfattr(xdr, args->bitmask, &hdr); |
2198 | encode_restorefh(xdr, &hdr); | ||
2199 | encode_getfattr(xdr, args->dir_bitmask, &hdr); | ||
2200 | encode_nops(&hdr); | 2191 | encode_nops(&hdr); |
2201 | } | 2192 | } |
2202 | 2193 | ||
@@ -6075,19 +6066,12 @@ static int nfs4_xdr_dec_open(struct rpc_rqst *rqstp, struct xdr_stream *xdr, | |||
6075 | status = decode_putfh(xdr); | 6066 | status = decode_putfh(xdr); |
6076 | if (status) | 6067 | if (status) |
6077 | goto out; | 6068 | goto out; |
6078 | status = decode_savefh(xdr); | ||
6079 | if (status) | ||
6080 | goto out; | ||
6081 | status = decode_open(xdr, res); | 6069 | status = decode_open(xdr, res); |
6082 | if (status) | 6070 | if (status) |
6083 | goto out; | 6071 | goto out; |
6084 | if (decode_getfh(xdr, &res->fh) != 0) | 6072 | if (decode_getfh(xdr, &res->fh) != 0) |
6085 | goto out; | 6073 | goto out; |
6086 | if (decode_getfattr(xdr, res->f_attr, res->server) != 0) | 6074 | decode_getfattr(xdr, res->f_attr, res->server); |
6087 | goto out; | ||
6088 | if (decode_restorefh(xdr) != 0) | ||
6089 | goto out; | ||
6090 | decode_getfattr(xdr, res->dir_attr, res->server); | ||
6091 | out: | 6075 | out: |
6092 | return status; | 6076 | return status; |
6093 | } | 6077 | } |