summaryrefslogtreecommitdiff
path: root/sys/ufs/lfs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/ufs/lfs')
-rw-r--r--sys/ufs/lfs/lfs_bio.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/ufs/lfs/lfs_bio.c b/sys/ufs/lfs/lfs_bio.c
index f95957927cb..6b18e8b1a03 100644
--- a/sys/ufs/lfs/lfs_bio.c
+++ b/sys/ufs/lfs/lfs_bio.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: lfs_bio.c,v 1.6 2001/02/23 14:52:52 csapuntz Exp $ */
+/* $OpenBSD: lfs_bio.c,v 1.7 2001/08/19 15:07:34 miod Exp $ */
/* $NetBSD: lfs_bio.c,v 1.5 1996/02/09 22:28:49 christos Exp $ */
/*
@@ -44,6 +44,7 @@
#include <sys/resourcevar.h>
#include <sys/mount.h>
#include <sys/kernel.h>
+#include <sys/timeout.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
@@ -72,6 +73,8 @@ int lfs_writing; /* Set if already kicked off a writer
#define WRITE_THRESHHOLD ((nbuf >> 1) - 10)
#define LFS_BUFWAIT 2
+struct timeout wakeup_timeout;
+
int
lfs_bwrite(v)
void *v;
@@ -124,10 +127,11 @@ lfs_bwrite(v)
bp->b_synctime = time.tv_sec + 30;
s = splbio();
if (bdirties.tqh_first == bp) {
- untimeout((void (*)__P((void *)))wakeup,
- &bdirties);
- timeout((void (*)__P((void *)))wakeup,
- &bdirties, 30 * hz);
+ if (timeout_triggered(&wakeup_timeout))
+ timeout_del(&wakeup_timeout);
+ if (!timeout_intialized(&wakeup_timeout))
+ timeout_set(&wakeup_timeout, wakeup, &bdirties);
+ timeout_add(&wakeup_timeout, 30 * hz);
}
bp->b_flags &= ~(B_READ | B_ERROR);
buf_dirty(bp);