NFSv4.1: Fix the handling of NFS4ERR_SEQ_MISORDERED errors
Currently, the call to nfs4_schedule_session_recovery() will actually just result in a test of the lease when what we really want is to force a session reset. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> Cc: stable@kernel.org
This commit is contained in:
@@ -1466,7 +1466,10 @@ static int nfs4_reclaim_lease(struct nfs_client *clp)
|
|||||||
#ifdef CONFIG_NFS_V4_1
|
#ifdef CONFIG_NFS_V4_1
|
||||||
void nfs4_schedule_session_recovery(struct nfs4_session *session)
|
void nfs4_schedule_session_recovery(struct nfs4_session *session)
|
||||||
{
|
{
|
||||||
nfs4_schedule_lease_recovery(session->clp);
|
struct nfs_client *clp = session->clp;
|
||||||
|
|
||||||
|
set_bit(NFS4CLNT_SESSION_RESET, &clp->cl_state);
|
||||||
|
nfs4_schedule_lease_recovery(clp);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(nfs4_schedule_session_recovery);
|
EXPORT_SYMBOL_GPL(nfs4_schedule_session_recovery);
|
||||||
|
|
||||||
@@ -1549,6 +1552,7 @@ static int nfs4_reset_session(struct nfs_client *clp)
|
|||||||
status = nfs4_recovery_handle_error(clp, status);
|
status = nfs4_recovery_handle_error(clp, status);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
clear_bit(NFS4CLNT_SESSION_RESET, &clp->cl_state);
|
||||||
/* create_session negotiated new slot table */
|
/* create_session negotiated new slot table */
|
||||||
clear_bit(NFS4CLNT_RECALL_SLOT, &clp->cl_state);
|
clear_bit(NFS4CLNT_RECALL_SLOT, &clp->cl_state);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user