diff options
author | Bob Beck <beck@cvs.openbsd.org> | 2013-06-25 02:53:48 +0000 |
---|---|---|
committer | Bob Beck <beck@cvs.openbsd.org> | 2013-06-25 02:53:48 +0000 |
commit | bdc44403f335a39fb4f8fefe713659a2173c95b0 (patch) | |
tree | fe06cab3923574943c6076b35c92db0d9fbaef3c /sys/nfs | |
parent | 00342b859e7cfc2694cae3ea50581cd5dce57118 (diff) |
When we remove work from the nfs queue, wake up people waiting for
room to queue IO right away, rather than waiting for us to complete the IO
we are working on and potentially do a many buffers DELWRI dance before
waking up the sleepers so they can continue.
ok guether@ tedu@
Diffstat (limited to 'sys/nfs')
-rw-r--r-- | sys/nfs/nfs_syscalls.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/nfs/nfs_syscalls.c b/sys/nfs/nfs_syscalls.c index ce4549057c9..475caba0e64 100644 --- a/sys/nfs/nfs_syscalls.c +++ b/sys/nfs/nfs_syscalls.c @@ -1,4 +1,4 @@ -/* $OpenBSD: nfs_syscalls.c,v 1.94 2012/12/10 22:34:53 beck Exp $ */ +/* $OpenBSD: nfs_syscalls.c,v 1.95 2013/06/25 02:53:47 beck Exp $ */ /* $NetBSD: nfs_syscalls.c,v 1.19 1996/02/18 11:53:52 fvdl Exp $ */ /* @@ -610,6 +610,7 @@ nfssvc_iod(void *arg) /* Take one off the front of the list */ TAILQ_REMOVE(&nfs_bufq, bp, b_freelist); nfs_bufqlen--; + wakeup_one(&nfs_bufqlen); if (bp->b_flags & B_READ) (void) nfs_doio(bp, NULL); else do { @@ -643,7 +644,6 @@ nfssvc_iod(void *arg) (void) nfs_doio(bp, NULL); } while ((bp = nbp) != NULL); - wakeup_one(&nfs_bufqlen); /* wake up anyone waiting for room to enqueue IO */ } if (error) { nfs_asyncdaemon[myiod] = NULL; |