|
@@ -4807,6 +4807,8 @@ struct nfs4_session *nfs4_alloc_session(struct nfs_client *clp)
|
|
|
spin_lock_init(&tbl->slot_tbl_lock);
|
|
|
rpc_init_wait_queue(&tbl->slot_tbl_waitq, "BackChannel Slot table");
|
|
|
|
|
|
+ session->session_state = 1<<NFS4_SESSION_INITING;
|
|
|
+
|
|
|
session->clp = clp;
|
|
|
return session;
|
|
|
}
|
|
@@ -5023,6 +5025,10 @@ int nfs4_init_session(struct nfs_server *server)
|
|
|
if (!nfs4_has_session(clp))
|
|
|
return 0;
|
|
|
|
|
|
+ session = clp->cl_session;
|
|
|
+ if (!test_and_clear_bit(NFS4_SESSION_INITING, &session->session_state))
|
|
|
+ return 0;
|
|
|
+
|
|
|
rsize = server->rsize;
|
|
|
if (rsize == 0)
|
|
|
rsize = NFS_MAX_FILE_IO_SIZE;
|
|
@@ -5030,7 +5036,6 @@ int nfs4_init_session(struct nfs_server *server)
|
|
|
if (wsize == 0)
|
|
|
wsize = NFS_MAX_FILE_IO_SIZE;
|
|
|
|
|
|
- session = clp->cl_session;
|
|
|
session->fc_attrs.max_rqst_sz = wsize + nfs41_maxwrite_overhead;
|
|
|
session->fc_attrs.max_resp_sz = rsize + nfs41_maxread_overhead;
|
|
|
|