summaryrefslogtreecommitdiff
path: root/sys/nfs/nfs_syscalls.c
diff options
context:
space:
mode:
authorBob Beck <beck@cvs.openbsd.org>2010-04-12 16:37:39 +0000
committerBob Beck <beck@cvs.openbsd.org>2010-04-12 16:37:39 +0000
commitb21be0a881207d66328a4b1fb9e42175809eae01 (patch)
treeb9671664237cf20154efede68a325609cf51ebde /sys/nfs/nfs_syscalls.c
parentb468cb40bfbf32b9fe0a861f825aafe2ae4a74cd (diff)
Don't jump the queue if we have to wait on the client side because
the nfs_bufq is full - instead tsleep waiting for one of our nfsiod's to free up space for us in the queue so we can enqueue on the end. ok blambert@, tedu@, oga@
Diffstat (limited to 'sys/nfs/nfs_syscalls.c')
-rw-r--r--sys/nfs/nfs_syscalls.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/nfs/nfs_syscalls.c b/sys/nfs/nfs_syscalls.c
index 0b9c45ab4d7..77bfff39817 100644
--- a/sys/nfs/nfs_syscalls.c
+++ b/sys/nfs/nfs_syscalls.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: nfs_syscalls.c,v 1.88 2009/10/19 22:24:18 jsg Exp $ */
+/* $OpenBSD: nfs_syscalls.c,v 1.89 2010/04/12 16:37:38 beck Exp $ */
/* $NetBSD: nfs_syscalls.c,v 1.19 1996/02/18 11:53:52 fvdl Exp $ */
/*
@@ -591,6 +591,7 @@ nfssvc_iod(void *arg)
}
nfs_bufqmax += bufcount;
+ wakeup(&nfs_bufqlen); /* wake up anyone waiting for room to enqueue IO */
/* Just loop around doin our stuff until SIGKILL. */
for (;;) {
@@ -635,6 +636,7 @@ 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;