Commit 95baa25c authored by Trond Myklebust's avatar Trond Myklebust

NFSv4: Fix the case where NFSv4 renewal fails

If the asynchronous lease renewal fails (usually due to a soft timeout),
then we _must_ schedule state recovery in order to ensure that we don't
lose the lease unnecessarily or, if the lease is already lost, that we
recover the locking state promptly...
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent d0367a50
...@@ -2594,12 +2594,9 @@ static void nfs4_renew_done(struct rpc_task *task, void *data) ...@@ -2594,12 +2594,9 @@ static void nfs4_renew_done(struct rpc_task *task, void *data)
unsigned long timestamp = (unsigned long)data; unsigned long timestamp = (unsigned long)data;
if (task->tk_status < 0) { if (task->tk_status < 0) {
switch (task->tk_status) { /* Unless we're shutting down, schedule state recovery! */
case -NFS4ERR_STALE_CLIENTID: if (test_bit(NFS_CS_RENEWD, &clp->cl_res_state) != 0)
case -NFS4ERR_EXPIRED:
case -NFS4ERR_CB_PATH_DOWN:
nfs4_schedule_state_recovery(clp); nfs4_schedule_state_recovery(clp);
}
return; return;
} }
spin_lock(&clp->cl_lock); spin_lock(&clp->cl_lock);
......
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