diff options
-rw-r--r-- | sys/dev/isa/fd.c | 6 | ||||
-rw-r--r-- | sys/dev/isa/mcd.c | 6 | ||||
-rw-r--r-- | sys/dev/isa/wt.c | 4 | ||||
-rw-r--r-- | sys/dev/ofw/ofdisk.c | 7 |
4 files changed, 18 insertions, 5 deletions
diff --git a/sys/dev/isa/fd.c b/sys/dev/isa/fd.c index 33af8f328e9..3b371f21324 100644 --- a/sys/dev/isa/fd.c +++ b/sys/dev/isa/fd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: fd.c,v 1.44 2002/03/14 01:26:56 millert Exp $ */ +/* $OpenBSD: fd.c,v 1.45 2002/05/24 13:31:10 art Exp $ */ /* $NetBSD: fd.c,v 1.90 1996/05/12 23:12:03 mycroft Exp $ */ /*- @@ -415,7 +415,9 @@ bad: done: /* Toss transfer; we're done early. */ bp->b_resid = bp->b_bcount; + s = splbio(); biodone(bp); + splx(s); } void @@ -441,6 +443,8 @@ fdfinish(fd, bp) { struct fdc_softc *fdc = (void *)fd->sc_dev.dv_parent; + splassert(IPL_BIO); + /* * Move this drive to the end of the queue to give others a `fair' * chance. We only force a switch if N operations are completed while diff --git a/sys/dev/isa/mcd.c b/sys/dev/isa/mcd.c index 9486395ff64..898dafba85c 100644 --- a/sys/dev/isa/mcd.c +++ b/sys/dev/isa/mcd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mcd.c,v 1.30 2002/03/14 01:26:56 millert Exp $ */ +/* $OpenBSD: mcd.c,v 1.31 2002/05/24 13:31:11 art Exp $ */ /* $NetBSD: mcd.c,v 1.60 1998/01/14 12:14:41 drochner Exp $ */ /* @@ -514,7 +514,9 @@ bad: bp->b_flags |= B_ERROR; done: bp->b_resid = bp->b_bcount; + s = splbio(); biodone(bp); + splx(s); } void @@ -545,7 +547,9 @@ loop: MCD_TRACE("start: drive not valid\n", 0, 0, 0, 0); bp->b_error = EIO; bp->b_flags |= B_ERROR; + s = splbio(); biodone(bp); + splx(s); goto loop; } diff --git a/sys/dev/isa/wt.c b/sys/dev/isa/wt.c index 21b56da722e..7cf63520562 100644 --- a/sys/dev/isa/wt.c +++ b/sys/dev/isa/wt.c @@ -1,4 +1,4 @@ -/* $OpenBSD: wt.c,v 1.15 2002/03/14 01:26:57 millert Exp $ */ +/* $OpenBSD: wt.c,v 1.16 2002/05/24 13:31:11 art Exp $ */ /* $NetBSD: wt.c,v 1.33 1996/05/12 23:54:22 mycroft Exp $ */ /* @@ -613,7 +613,9 @@ errxit: bp->b_error = EIO; } xit: + s = splbio(); biodone(bp); + splx(s); return; } diff --git a/sys/dev/ofw/ofdisk.c b/sys/dev/ofw/ofdisk.c index 82d815b4ab6..8b67daf84d9 100644 --- a/sys/dev/ofw/ofdisk.c +++ b/sys/dev/ofw/ofdisk.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ofdisk.c,v 1.5 2002/03/14 01:26:58 millert Exp $ */ +/* $OpenBSD: ofdisk.c,v 1.6 2002/05/24 13:31:11 art Exp $ */ /* $NetBSD: ofdisk.c,v 1.3 1996/10/13 01:38:13 christos Exp $ */ /* @@ -236,6 +236,7 @@ ofdstrategy(bp) int read; int (*OF_io)(int, void *, int); daddr_t blkno = bp->b_blkno; + int s; bp->b_resid = 0; if (bp->b_bcount == 0) @@ -272,7 +273,9 @@ ofdstrategy(bp) disk_unbusy(&of->sc_dk, bp->b_bcount - bp->b_resid); done: - biodone(bp); + s = splbio(); + biodone(bp);' + splx(s); } static void |