|
@@ -7570,12 +7570,20 @@ static int _nfs4_proc_create_session(struct nfs_client *clp,
|
|
|
status = rpc_call_sync(session->clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT);
|
|
|
trace_nfs4_create_session(clp, status);
|
|
|
|
|
|
+ switch (status) {
|
|
|
+ case -NFS4ERR_STALE_CLIENTID:
|
|
|
+ case -NFS4ERR_DELAY:
|
|
|
+ case -ETIMEDOUT:
|
|
|
+ case -EACCES:
|
|
|
+ case -EAGAIN:
|
|
|
+ goto out;
|
|
|
+ };
|
|
|
+
|
|
|
+ clp->cl_seqid++;
|
|
|
if (!status) {
|
|
|
/* Verify the session's negotiated channel_attrs values */
|
|
|
status = nfs4_verify_channel_attrs(&args, &res);
|
|
|
/* Increment the clientid slot sequence id */
|
|
|
- if (clp->cl_seqid == res.seqid)
|
|
|
- clp->cl_seqid++;
|
|
|
if (status)
|
|
|
goto out;
|
|
|
nfs4_update_session(session, &res);
|