nfs41: clear NFS4CLNT_RECALL_SLOT bit on session reset
authorAndy Adamson <andros@netapp.com>
Thu, 21 Jan 2010 19:54:13 +0000 (14:54 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 10 Feb 2010 13:31:00 +0000 (08:31 -0500)
Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs4state.c

index 9164758c1ace41078f39f73a936c2bc2ad595255..2931c46c4127763397a4ff32b96686cd47f6e0d9 100644 (file)
@@ -1291,17 +1291,17 @@ static int nfs4_reset_session(struct nfs_client *clp)
 
        memset(clp->cl_session->sess_id.data, 0, NFS4_MAX_SESSIONID_LEN);
        status = nfs4_proc_create_session(clp);
-       if (status)
+       if (status) {
                status = nfs4_recovery_handle_error(clp, status);
+               goto out;
+       }
+       /* create_session negotiated new slot table */
+       clear_bit(NFS4CLNT_RECALL_SLOT, &clp->cl_state);
 
-out:
-       /*
-        * Let the state manager reestablish state
-        */
-       if (!test_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state) &&
-           status == 0)
+        /* Let the state manager reestablish state */
+       if (!test_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state))
                nfs41_setup_state_renewal(clp);
-
+out:
        return status;
 }