diff options
author | dg <dg@FreeBSD.org> | 1995-05-24 23:33:42 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1995-05-24 23:33:42 +0000 |
commit | 456d8b24246a10fdae8a8b74e98ec78418620428 (patch) | |
tree | 1cdf07142e7e2ac2d8550cf8b7f78f1f7ce7712d | |
parent | f12325f10506a028f4908783cd3ee6224ed86bbf (diff) | |
download | FreeBSD-src-456d8b24246a10fdae8a8b74e98ec78418620428.zip FreeBSD-src-456d8b24246a10fdae8a8b74e98ec78418620428.tar.gz |
This should fix PR 438. Apparently I never tested disklabel on the block
device.
v_numoutput wasn't incremented to match the b_iodone nesting. It's still
fishy that vwakeup() clears B_WRITEINPROG before biodone() has finished;
however, B_WRITEINPROG seems to be never used.
Submitted by: Bruce Evans
-rw-r--r-- | sys/kern/subr_diskslice.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/kern/subr_diskslice.c b/sys/kern/subr_diskslice.c index 0b6bf03..6360027 100644 --- a/sys/kern/subr_diskslice.c +++ b/sys/kern/subr_diskslice.c @@ -43,7 +43,7 @@ * from: wd.c,v 1.55 1994/10/22 01:57:12 phk Exp $ * from: @(#)ufs_disksubr.c 7.16 (Berkeley) 5/4/91 * from: ufs_disksubr.c,v 1.8 1994/06/07 01:21:39 phk Exp $ - * $Id: subr_diskslice.c,v 1.11 1995/04/30 15:16:02 bde Exp $ + * $Id: subr_diskslice.c,v 1.12 1995/05/08 16:24:08 bde Exp $ */ #include <sys/param.h> @@ -57,6 +57,7 @@ #include <sys/stat.h> #include <sys/syslog.h> #include <sys/systm.h> +#include <sys/vnode.h> #define b_cylinder b_resid @@ -204,6 +205,8 @@ if (labelsect != 0) Debugger("labelsect != 0 in dscheck()"); * XXX probably need to copy the data to avoid even * temporarily corrupting the in-core copy. */ + if (bp->b_vp != NULL) + bp->b_vp->v_numoutput++; msg = fixlabel((char *)NULL, sp, (struct disklabel *) (bp->b_data + ic->ic_args[0].ia_long), |