aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4state.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2012-11-29 17:27:47 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2012-12-06 00:30:52 +0100
commitb75ad4cda5a6cd3431b1c65c2739c5ebd2c4b9da (patch)
tree6ba6dd80fc8e118067ca70bd67345864835fe98a /fs/nfs/nfs4state.c
parentNFSv4: Reorder the XDR structures to put sequence at the top, not bottom (diff)
downloadlinux-dev-b75ad4cda5a6cd3431b1c65c2739c5ebd2c4b9da.tar.xz
linux-dev-b75ad4cda5a6cd3431b1c65c2739c5ebd2c4b9da.zip
NFSv4.1: Ensure smooth handover of slots from one task to the next waiting
Currently, we see a lot of bouncing for the value of highest_used_slotid due to the fact that slots are getting freed, instead of getting instantly transmitted to the next waiting task. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4state.c')
-rw-r--r--fs/nfs/nfs4state.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 7d73df5a05d1..78e90a80fc3a 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -255,17 +255,13 @@ static void nfs4_end_drain_session(struct nfs_client *clp)
{
struct nfs4_session *ses = clp->cl_session;
struct nfs4_slot_table *tbl;
- unsigned int i;
if (ses == NULL)
return;
tbl = &ses->fc_slot_table;
if (test_and_clear_bit(NFS4_SESSION_DRAINING, &ses->session_state)) {
spin_lock(&tbl->slot_tbl_lock);
- for (i = 0; i <= tbl->max_slotid; i++) {
- if (rpc_wake_up_next(&tbl->slot_tbl_waitq) == NULL)
- break;
- }
+ nfs41_wake_slot_table(tbl);
spin_unlock(&tbl->slot_tbl_lock);
}
}