diff options
-rw-r--r-- | fs/nfs/nfs4proc.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index b07d4e23b876..d3c705aa71f6 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -5028,10 +5028,20 @@ int nfs4_proc_create_session(struct nfs_client *clp) | |||
5028 | int status; | 5028 | int status; |
5029 | unsigned *ptr; | 5029 | unsigned *ptr; |
5030 | struct nfs4_session *session = clp->cl_session; | 5030 | struct nfs4_session *session = clp->cl_session; |
5031 | long timeout = 0; | ||
5032 | int err; | ||
5031 | 5033 | ||
5032 | dprintk("--> %s clp=%p session=%p\n", __func__, clp, session); | 5034 | dprintk("--> %s clp=%p session=%p\n", __func__, clp, session); |
5033 | 5035 | ||
5034 | status = _nfs4_proc_create_session(clp); | 5036 | do { |
5037 | status = _nfs4_proc_create_session(clp); | ||
5038 | if (status == -NFS4ERR_DELAY) { | ||
5039 | err = nfs4_delay(clp->cl_rpcclient, &timeout); | ||
5040 | if (err) | ||
5041 | status = err; | ||
5042 | } | ||
5043 | } while (status == -NFS4ERR_DELAY); | ||
5044 | |||
5035 | if (status) | 5045 | if (status) |
5036 | goto out; | 5046 | goto out; |
5037 | 5047 | ||