NFS: Handle NFS4ERR_LEASE_MOVED during async RENEW
With NFSv4 minor version 0, the asynchronous lease RENEW heartbeat can return NFS4ERR_LEASE_MOVED. Error recovery logic for async RENEW is a separate code path from the generic NFS proc paths, so it must be updated to handle NFS4ERR_LEASE_MOVED as well. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
60ea681299
commit
f8aba1e8d5
1 changed files with 7 additions and 1 deletions
|
@ -4235,7 +4235,13 @@ static void nfs4_renew_done(struct rpc_task *task, void *calldata)
|
||||||
unsigned long timestamp = data->timestamp;
|
unsigned long timestamp = data->timestamp;
|
||||||
|
|
||||||
trace_nfs4_renew_async(clp, task->tk_status);
|
trace_nfs4_renew_async(clp, task->tk_status);
|
||||||
if (task->tk_status < 0) {
|
switch (task->tk_status) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case -NFS4ERR_LEASE_MOVED:
|
||||||
|
nfs4_schedule_lease_moved_recovery(clp);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
/* Unless we're shutting down, schedule state recovery! */
|
/* Unless we're shutting down, schedule state recovery! */
|
||||||
if (test_bit(NFS_CS_RENEWD, &clp->cl_res_state) == 0)
|
if (test_bit(NFS_CS_RENEWD, &clp->cl_res_state) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Reference in a new issue