OSDN Git Service

NFSv4: Don't retry the GETATTR on old stateid in nfs4_delegreturn_done()
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Sun, 27 Oct 2019 02:37:40 +0000 (22:37 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 4 Nov 2019 02:28:46 +0000 (21:28 -0500)
If the server returns NFS4ERR_OLD_STATEID, then just skip retrying the
GETATTR when replaying the delegreturn compound. We know nothing will
have changed on the server.

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

index 33a8e53..a64ce95 100644 (file)
@@ -6198,6 +6198,10 @@ static void nfs4_delegreturn_done(struct rpc_task *task, void *calldata)
        case -NFS4ERR_OLD_STATEID:
                if (!nfs4_refresh_delegation_stateid(&data->stateid, data->inode))
                        nfs4_stateid_seqid_inc(&data->stateid);
+               if (data->args.bitmask) {
+                       data->args.bitmask = NULL;
+                       data->res.fattr = NULL;
+               }
                goto out_restart;
        case -NFS4ERR_ACCESS:
                if (data->args.bitmask) {