NFSv4: Don't ask for delegated attributes when revalidating the inode
authorTrond Myklebust <trond.myklebust@primarydata.com>
Sat, 7 Apr 2018 17:54:23 +0000 (13:54 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 4 Jun 2018 16:07:07 +0000 (12:07 -0400)
Again, when revalidating the inode, we don't need to ask for attributes
for which we are authoritative.

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

index cd60e8360ef24383230e388faeea765987ff309d..744a6367618db214cda6682e400e5bc174a12e38 100644 (file)
@@ -3832,9 +3832,10 @@ static int _nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle,
                                struct nfs_fattr *fattr, struct nfs4_label *label,
                                struct inode *inode)
 {
+       __u32 bitmask[NFS4_BITMASK_SZ];
        struct nfs4_getattr_arg args = {
                .fh = fhandle,
-               .bitmask = server->attr_bitmask,
+               .bitmask = bitmask,
        };
        struct nfs4_getattr_res res = {
                .fattr = fattr,
@@ -3847,7 +3848,7 @@ static int _nfs4_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle,
                .rpc_resp = &res,
        };
 
-       args.bitmask = nfs4_bitmask(server, label);
+       nfs4_bitmap_copy_adjust(bitmask, nfs4_bitmask(server, label), inode);
 
        nfs_fattr_init(fattr);
        return nfs4_call_sync(server->client, server, &msg, &args.seq_args, &res.seq_res, 0);