summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorChristopher Pascoe <pascoe@cvs.openbsd.org>2007-03-07 03:04:29 +0000
committerChristopher Pascoe <pascoe@cvs.openbsd.org>2007-03-07 03:04:29 +0000
commitdeba7939c1975b11d9326bbfb3200404f3947879 (patch)
treeb5c81e3978c04a5e313fa4b677ab6fa40e5faada /sys/dev
parent1384680530eaf84c160f89c697e9bd5022bd66ee (diff)
Set ITSDONE otherwise the SCSI layer will sleep forever waiting for our
queued commands to be done.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ata/atascsi.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/dev/ata/atascsi.c b/sys/dev/ata/atascsi.c
index 34b56334515..a77eac4c245 100644
--- a/sys/dev/ata/atascsi.c
+++ b/sys/dev/ata/atascsi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: atascsi.c,v 1.10 2007/03/06 12:25:00 dlg Exp $ */
+/* $OpenBSD: atascsi.c,v 1.11 2007/03/07 03:04:28 pascoe Exp $ */
/*
* Copyright (c) 2007 David Gwynne <dlg@openbsd.org>
@@ -369,6 +369,7 @@ atascsi_disk_inq_done(struct ata_xfer *xa)
bcopy(&inq, xs->data, MIN(sizeof(inq), xs->datalen));
xs->error = XS_NOERROR;
+ xs->flags |= ITSDONE;
scsi_done(xs);
}
@@ -427,6 +428,7 @@ atascsi_disk_capacity_done(struct ata_xfer *xa)
bcopy(&rcd, xs->data, MIN(sizeof(rcd), xs->datalen));
xs->error = XS_NOERROR;
+ xs->flags |= ITSDONE;
scsi_done(xs);
}
@@ -443,6 +445,8 @@ atascsi_disk_sense(struct scsi_xfer *xs)
sd->flags = SKEY_NO_SENSE;
xs->error = XS_NOERROR;
+ xs->flags |= ITSDONE;
+
s = splbio();
scsi_done(xs);
splx(s);
@@ -462,6 +466,8 @@ atascsi_stuffup(struct scsi_xfer *xs)
int s;
xs->error = XS_DRIVER_STUFFUP;
+ xs->flags |= ITSDONE;
+
s = splbio();
scsi_done(xs);
splx(s);