NFSv4.1: Handle NFS4ERR_SEQ_MISORDERED when confirming the lease
Apparently the patch "NFS: Always use the same SETCLIENTID boot verifier" is tickling a Linux nfs server bug, and causing a regression: the server can get into a situation where it keeps replying NFS4ERR_SEQ_MISORDERED to our CREATE_SESSION request even when we are sending the correct sequence ID. Fix this by purging the lease and then retrying. Reported-by: Bryan Schumaker <bjschuma@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
Родитель
be0bfed002
Коммит
89a217360e
|
@ -1580,6 +1580,11 @@ out:
|
|||
static int nfs4_handle_reclaim_lease_error(struct nfs_client *clp, int status)
|
||||
{
|
||||
switch (status) {
|
||||
case -NFS4ERR_SEQ_MISORDERED:
|
||||
if (test_and_set_bit(NFS4CLNT_PURGE_STATE, &clp->cl_state))
|
||||
return -ESERVERFAULT;
|
||||
/* Lease confirmation error: retry after purging the lease */
|
||||
ssleep(1);
|
||||
case -NFS4ERR_CLID_INUSE:
|
||||
case -NFS4ERR_STALE_CLIENTID:
|
||||
clear_bit(NFS4CLNT_LEASE_CONFIRM, &clp->cl_state);
|
||||
|
|
Загрузка…
Ссылка в новой задаче