NFSv4.1: nfs4_bind_conn_to_session should drain the session
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Sun, 27 May 2012 17:47:21 +0000 (13:47 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Sun, 27 May 2012 18:00:08 +0000 (14:00 -0400)
In order to avoid races with other RPC calls that end up setting the
NFS4CLNT_BIND_CONN_TO_SESSION flag.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs4state.c

index 7dbca666283a0403b08d1278ae9d5fb7925ba91c..d21ed0309601560e08a6660cac8e9221f6e1035c 100644 (file)
@@ -1782,10 +1782,12 @@ static int nfs4_bind_conn_to_session(struct nfs_client *clp)
        struct rpc_cred *cred;
        int ret;
 
+       nfs4_begin_drain_session(clp);
        cred = nfs4_get_exchange_id_cred(clp);
        ret = nfs4_proc_bind_conn_to_session(clp, cred);
        if (cred)
                put_rpccred(cred);
+       clear_bit(NFS4CLNT_BIND_CONN_TO_SESSION, &clp->cl_state);
        return ret;
 }
 #else /* CONFIG_NFS_V4_1 */