From 3f1a100f0bf5a37a4d66a28727545d45f178cd92 Mon Sep 17 00:00:00 2001 From: Benny Halevy Date: Wed, 12 May 2010 00:14:06 +0300 Subject: [PATCH] --- yaml --- r: 192383 b: refs/heads/master c: ab707e156593ff7fffd615757332dbff6616836a h: refs/heads/master i: 192381: c6bba65b68c5ba275d584e43f29a83ff3f95c6c4 192379: 9609a90700bc33c952873f1f76a243654bf49aeb 192375: 351b7854c86a806cc59440769734a856b8b5b5ca 192367: 457f6f11c52aec149b1c1e0262ca402bc51c0fc1 192351: d85f424d81e3fc40765e530259bba2cfb0457b3c 192319: 591f43ef803be4ef1b0d1b6683575a065b57d729 192255: 9546a77f6f4e0d2ba483d095c88d39719fd0d527 v: v3 --- [refs] | 2 +- trunk/fs/nfsd/nfs4callback.c | 1 + trunk/fs/nfsd/nfs4state.c | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c9a8edd523bb..5de68662c76b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d76829889ac4250a18cfcc1a606bb256bb9c570c +refs/heads/master: ab707e156593ff7fffd615757332dbff6616836a diff --git a/trunk/fs/nfsd/nfs4callback.c b/trunk/fs/nfsd/nfs4callback.c index 1d5051d46b46..77bc9d3c80fd 100644 --- a/trunk/fs/nfsd/nfs4callback.c +++ b/trunk/fs/nfsd/nfs4callback.c @@ -718,6 +718,7 @@ void nfsd4_destroy_callback_queue(void) destroy_workqueue(callback_wq); } +/* must be called under the state lock */ void nfsd4_set_callback_client(struct nfs4_client *clp, struct rpc_clnt *new) { struct rpc_clnt *old = clp->cl_cb_client; diff --git a/trunk/fs/nfsd/nfs4state.c b/trunk/fs/nfsd/nfs4state.c index cc0e9117dd16..ede9dde52fe8 100644 --- a/trunk/fs/nfsd/nfs4state.c +++ b/trunk/fs/nfsd/nfs4state.c @@ -1427,8 +1427,10 @@ nfsd4_destroy_session(struct svc_rqst *r, unhash_session(ses); spin_unlock(&client_lock); + nfs4_lock_state(); /* wait for callbacks */ nfsd4_set_callback_client(ses->se_client, NULL); + nfs4_unlock_state(); nfsd4_put_session(ses); status = nfs_ok; out: