]> Git Repo - linux.git/commitdiff
nfsd: deal with DELEGRETURN racing with CB_RECALL
authorAndrew Elble <[email protected]>
Mon, 31 Aug 2015 16:06:41 +0000 (12:06 -0400)
committerJ. Bruce Fields <[email protected]>
Wed, 2 Sep 2015 14:05:28 +0000 (10:05 -0400)
We have observed the server sending recalls for delegation stateids
that have already been successfully returned. Change
nfsd4_cb_recall_done() to return success if the client has returned
the delegation. While this does not completely eliminate the sending
of recalls for delegations that have already been returned, this
does prevent unnecessarily declaring the callback path to be down.

Reported-by: Eric Meddaugh <[email protected]>
Signed-off-by: Andrew Elble <[email protected]>
Acked-by: Jeff Layton <[email protected]>
Signed-off-by: J. Bruce Fields <[email protected]>
fs/nfsd/nfs4state.c

index 08746ec1d44a58e43b25eebec73293aa7799d06a..0f1d5691b795751553d02003c32c4ceb90a1ee5c 100644 (file)
@@ -3510,6 +3510,9 @@ static int nfsd4_cb_recall_done(struct nfsd4_callback *cb,
 {
        struct nfs4_delegation *dp = cb_to_delegation(cb);
 
+       if (dp->dl_stid.sc_type == NFS4_CLOSED_DELEG_STID)
+               return 1;
+
        switch (task->tk_status) {
        case 0:
                return 1;
This page took 0.068735 seconds and 4 git commands to generate.