NFS: Handle NFS4ERR_LEASE_MOVED during async RENEW
[linux-2.6-block.git] / fs / nfs / nfs4proc.c
index 9f2ccf7471eef4ca79555561a2f55ccc48eebd4f..8aa8ff3fd5e769e30198b977534821f957e2562d 100644 (file)
@@ -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;