Commit 46a87b8a authored by Chuck Lever's avatar Chuck Lever Committed by Trond Myklebust

NFS: When state recovery fails, waiting tasks should exit

NFSv4 state recovery is not always successful.  Failure is signalled
by setting the nfs_client.cl_cons_state to a negative (errno) value,
then waking waiters.

Currently this can happen only during mount processing.  I'm about to
add an explicit case where state recovery failure during normal
operation should force all NFS requests waiting on that state recovery
to exit.
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 6a1a1e34
...@@ -258,7 +258,12 @@ static int nfs4_wait_clnt_recover(struct nfs_client *clp) ...@@ -258,7 +258,12 @@ static int nfs4_wait_clnt_recover(struct nfs_client *clp)
res = wait_on_bit(&clp->cl_state, NFS4CLNT_MANAGER_RUNNING, res = wait_on_bit(&clp->cl_state, NFS4CLNT_MANAGER_RUNNING,
nfs_wait_bit_killable, TASK_KILLABLE); nfs_wait_bit_killable, TASK_KILLABLE);
if (res)
return res; return res;
if (clp->cl_cons_state < 0)
return clp->cl_cons_state;
return 0;
} }
static int nfs4_delay(struct rpc_clnt *clnt, long *timeout) static int nfs4_delay(struct rpc_clnt *clnt, long *timeout)
......
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