NFSv4.1: Retry CREATE_SESSION on NFS4ERR_DELAY
Fix bug where we currently retry the EXCHANGEID call again, eventhough we already have a valid clientid. Instead, delay and retry the CREATE_SESSION call. Signed-off-by: Ricardo Labiaga <Ricardo.Labiaga@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
Родитель
4cea288aaf
Коммит
7d6d63d642
|
@ -5028,10 +5028,20 @@ int nfs4_proc_create_session(struct nfs_client *clp)
|
||||||
int status;
|
int status;
|
||||||
unsigned *ptr;
|
unsigned *ptr;
|
||||||
struct nfs4_session *session = clp->cl_session;
|
struct nfs4_session *session = clp->cl_session;
|
||||||
|
long timeout = 0;
|
||||||
|
int err;
|
||||||
|
|
||||||
dprintk("--> %s clp=%p session=%p\n", __func__, clp, session);
|
dprintk("--> %s clp=%p session=%p\n", __func__, clp, session);
|
||||||
|
|
||||||
status = _nfs4_proc_create_session(clp);
|
do {
|
||||||
|
status = _nfs4_proc_create_session(clp);
|
||||||
|
if (status == -NFS4ERR_DELAY) {
|
||||||
|
err = nfs4_delay(clp->cl_rpcclient, &timeout);
|
||||||
|
if (err)
|
||||||
|
status = err;
|
||||||
|
}
|
||||||
|
} while (status == -NFS4ERR_DELAY);
|
||||||
|
|
||||||
if (status)
|
if (status)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче