NFSv4: Don't request a GETATTR on open_downgrade.
authorTrond Myklebust <trond.myklebust@primarydata.com>
Thu, 27 Oct 2016 22:27:02 +0000 (18:27 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Thu, 1 Dec 2016 22:21:36 +0000 (17:21 -0500)
If we're not closing the file completely, there is no need to request
close-to-open attributes.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/nfs4xdr.c

index fc89e5ed07eec90f1a0ef12134c9e29a693ee209..c37473721230df28f405bec137725da654cf94fe 100644 (file)
@@ -499,14 +499,12 @@ static int nfs4_stat_to_errno(int);
                                (compound_encode_hdr_maxsz + \
                                 encode_sequence_maxsz + \
                                 encode_putfh_maxsz + \
-                                encode_open_downgrade_maxsz + \
-                                encode_getattr_maxsz)
+                                encode_open_downgrade_maxsz)
 #define NFS4_dec_open_downgrade_sz \
                                (compound_decode_hdr_maxsz + \
                                 decode_sequence_maxsz + \
                                 decode_putfh_maxsz + \
-                                decode_open_downgrade_maxsz + \
-                                decode_getattr_maxsz)
+                                decode_open_downgrade_maxsz)
 #define NFS4_enc_close_sz      (compound_encode_hdr_maxsz + \
                                 encode_sequence_maxsz + \
                                 encode_putfh_maxsz + \
@@ -2328,7 +2326,6 @@ static void nfs4_xdr_enc_open_downgrade(struct rpc_rqst *req,
        encode_sequence(xdr, &args->seq_args, &hdr);
        encode_putfh(xdr, args->fh, &hdr);
        encode_open_downgrade(xdr, args, &hdr);
-       encode_getfattr(xdr, args->bitmask, &hdr);
        encode_nops(&hdr);
 }
 
@@ -6115,9 +6112,6 @@ static int nfs4_xdr_dec_open_downgrade(struct rpc_rqst *rqstp,
        if (status)
                goto out;
        status = decode_open_downgrade(xdr, res);
-       if (status != 0)
-               goto out;
-       decode_getfattr(xdr, res->fattr, res->server);
 out:
        return status;
 }