summaryrefslogtreecommitdiff
path: root/sys/scsi/cd.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/scsi/cd.c')
-rw-r--r--sys/scsi/cd.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/scsi/cd.c b/sys/scsi/cd.c
index b93486e61ab..3f49a9a1e5c 100644
--- a/sys/scsi/cd.c
+++ b/sys/scsi/cd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cd.c,v 1.164 2010/02/28 21:17:00 krw Exp $ */
+/* $OpenBSD: cd.c,v 1.165 2010/04/12 09:51:48 dlg Exp $ */
/* $NetBSD: cd.c,v 1.100 1997/04/02 02:29:30 mycroft Exp $ */
/*
@@ -683,9 +683,8 @@ cd_buf_done(struct scsi_xfer *xs)
{
struct cd_softc *sc = xs->sc_link->device_softc;
struct buf *bp = xs->cookie;
+ int s;
- splassert(IPL_BIO);
-
switch (xs->error) {
case XS_NOERROR:
bp->b_error = 0;
@@ -733,7 +732,9 @@ retry:
disk_unbusy(&sc->sc_dk, bp->b_bcount - xs->resid,
bp->b_flags & B_READ);
+ s = splbio();
biodone(bp);
+ splx(s);
scsi_xs_put(xs);
cdstart(sc); /* restart io */
}