summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/isa/fd.c6
-rw-r--r--sys/dev/isa/mcd.c6
-rw-r--r--sys/dev/isa/wt.c4
-rw-r--r--sys/dev/ofw/ofdisk.c7
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