NFSv4: Fix the case where NFSv4 renewal fails
[linux-2.6-block.git] / fs / nfs / nfs4proc.c
index a4d242680299fa91795fc43ffe7492c63cf4dedf..4674f8092da8aaa52ae4af6835c6b150341efe66 100644 (file)
@@ -2594,12 +2594,9 @@ static void nfs4_renew_done(struct rpc_task *task, void *data)
        unsigned long timestamp = (unsigned long)data;
 
        if (task->tk_status < 0) {
-               switch (task->tk_status) {
-                       case -NFS4ERR_STALE_CLIENTID:
-                       case -NFS4ERR_EXPIRED:
-                       case -NFS4ERR_CB_PATH_DOWN:
-                               nfs4_schedule_state_recovery(clp);
-               }
+               /* Unless we're shutting down, schedule state recovery! */
+               if (test_bit(NFS_CS_RENEWD, &clp->cl_res_state) != 0)
+                       nfs4_schedule_state_recovery(clp);
                return;
        }
        spin_lock(&clp->cl_lock);