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:
parent
e336d945a8
commit
d53eacdf28
@ -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),
|
||||
|
Loading…
Reference in New Issue
Block a user