提交 0556d1a6 编写于 作者: T Trond Myklebust

NFSv41: nfs4_reset_session must always set NFS4CLNT_SESSION_DRAINING

Otherwise we have no guarantees that other processes won't start another
RPC call while we're resetting the session.
Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
上级 2597641d
...@@ -1211,8 +1211,8 @@ static int nfs4_reset_session(struct nfs_client *clp) ...@@ -1211,8 +1211,8 @@ static int nfs4_reset_session(struct nfs_client *clp)
INIT_COMPLETION(ses->complete); INIT_COMPLETION(ses->complete);
spin_lock(&tbl->slot_tbl_lock); spin_lock(&tbl->slot_tbl_lock);
set_bit(NFS4CLNT_SESSION_DRAINING, &clp->cl_state);
if (tbl->highest_used_slotid != -1) { if (tbl->highest_used_slotid != -1) {
set_bit(NFS4CLNT_SESSION_DRAINING, &clp->cl_state);
spin_unlock(&tbl->slot_tbl_lock); spin_unlock(&tbl->slot_tbl_lock);
status = wait_for_completion_interruptible(&ses->complete); status = wait_for_completion_interruptible(&ses->complete);
if (status) /* -ERESTARTSYS */ if (status) /* -ERESTARTSYS */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册