Commit 1a2dd948 authored by Trond Myklebust's avatar Trond Myklebust

NFSv4.1: Handle slot recalls before doing state recovery

Handling a slot recall situation should always takes precedence over
state recovery to allow the server to manage its resources.
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 8ed27d4f
...@@ -1814,7 +1814,6 @@ static int nfs4_recall_slot(struct nfs_client *clp) ...@@ -1814,7 +1814,6 @@ static int nfs4_recall_slot(struct nfs_client *clp)
spin_unlock(&fc_tbl->slot_tbl_lock); spin_unlock(&fc_tbl->slot_tbl_lock);
kfree(old); kfree(old);
nfs4_end_drain_session(clp);
return 0; return 0;
} }
...@@ -1920,6 +1919,16 @@ static void nfs4_state_manager(struct nfs_client *clp) ...@@ -1920,6 +1919,16 @@ static void nfs4_state_manager(struct nfs_client *clp)
continue; continue;
} }
/* Recall session slots */
if (test_and_clear_bit(NFS4CLNT_RECALL_SLOT, &clp->cl_state)
&& nfs4_has_session(clp)) {
section = "recall slot";
status = nfs4_recall_slot(clp);
if (status < 0)
goto out_error;
continue;
}
/* First recover reboot state... */ /* First recover reboot state... */
if (test_bit(NFS4CLNT_RECLAIM_REBOOT, &clp->cl_state)) { if (test_bit(NFS4CLNT_RECLAIM_REBOOT, &clp->cl_state)) {
section = "reclaim reboot"; section = "reclaim reboot";
...@@ -1953,16 +1962,6 @@ static void nfs4_state_manager(struct nfs_client *clp) ...@@ -1953,16 +1962,6 @@ static void nfs4_state_manager(struct nfs_client *clp)
nfs_client_return_marked_delegations(clp); nfs_client_return_marked_delegations(clp);
continue; continue;
} }
/* Recall session slots */
if (test_and_clear_bit(NFS4CLNT_RECALL_SLOT, &clp->cl_state)
&& nfs4_has_session(clp)) {
section = "recall slot";
status = nfs4_recall_slot(clp);
if (status < 0)
goto out_error;
continue;
}
nfs4_clear_state_manager_bit(clp); nfs4_clear_state_manager_bit(clp);
/* Did we race with an attempt to give us more work? */ /* Did we race with an attempt to give us more work? */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment