diff options
author | Bob Beck <beck@cvs.openbsd.org> | 2010-04-12 16:37:39 +0000 |
---|---|---|
committer | Bob Beck <beck@cvs.openbsd.org> | 2010-04-12 16:37:39 +0000 |
commit | b21be0a881207d66328a4b1fb9e42175809eae01 (patch) | |
tree | b9671664237cf20154efede68a325609cf51ebde /sys/nfs/nfs_syscalls.c | |
parent | b468cb40bfbf32b9fe0a861f825aafe2ae4a74cd (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.c | 4 |
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; |