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
This commit is contained in:
David Greenman 1995-05-24 23:33:42 +00:00
parent e336d945a8
commit d53eacdf28

View File

@ -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),