From: Chuck Lever Date: Thu, 17 Oct 2013 18:13:53 +0000 (-0400) Subject: NFS: Handle NFS4ERR_LEASE_MOVED during async RENEW X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=f8aba1e8d509c0db7a82893e595a7743ce07ea83;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git 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 Signed-off-by: Trond Myklebust --- diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 9f2ccf7471ee..8aa8ff3fd5e7 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -4235,7 +4235,13 @@ static void nfs4_renew_done(struct rpc_task *task, void *calldata) unsigned long timestamp = data->timestamp; 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! */ if (test_bit(NFS_CS_RENEWD, &clp->cl_res_state) == 0) return;