summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorDavid Gwynne <dlg@cvs.openbsd.org>2009-08-13 11:10:28 +0000
committerDavid Gwynne <dlg@cvs.openbsd.org>2009-08-13 11:10:28 +0000
commit16ec2d3df07e1722f916875d00971cd025e9e7aa (patch)
tree40970696dbfb7a3fbe330070dbb74466c6b3e46f /sys
parentf11b106a50552f475612d2ba6f34b68466c3a2c8 (diff)
set ITSDONE on the xs before calling scsi_done()
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pci/arc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/pci/arc.c b/sys/dev/pci/arc.c
index 889dda85db4..a701b70fb70 100644
--- a/sys/dev/pci/arc.c
+++ b/sys/dev/pci/arc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: arc.c,v 1.78 2009/02/16 21:19:07 miod Exp $ */
+/* $OpenBSD: arc.c,v 1.79 2009/08/13 11:10:27 dlg Exp $ */
/*
* Copyright (c) 2006 David Gwynne <dlg@openbsd.org>
@@ -726,6 +726,7 @@ arc_scsi_cmd(struct scsi_xfer *xs)
xs->sense.flags = SKEY_ILLEGAL_REQUEST;
xs->sense.add_sense_code = 0x20;
xs->error = XS_SENSE;
+ xs->flags |= ITSDONE;
s = splbio();
scsi_done(xs);
splx(s);
@@ -737,6 +738,7 @@ arc_scsi_cmd(struct scsi_xfer *xs)
splx(s);
if (ccb == NULL) {
xs->error = XS_DRIVER_STUFFUP;
+ xs->flags |= ITSDONE;
s = splbio();
scsi_done(xs);
splx(s);
@@ -747,6 +749,7 @@ arc_scsi_cmd(struct scsi_xfer *xs)
if (arc_load_xs(ccb) != 0) {
xs->error = XS_DRIVER_STUFFUP;
+ xs->flags |= ITSDONE;
s = splbio();
arc_put_ccb(sc, ccb);
scsi_done(xs);
@@ -787,6 +790,7 @@ arc_scsi_cmd(struct scsi_xfer *xs)
rv = COMPLETE;
if (arc_complete(sc, ccb, xs->timeout) != 0) {
xs->error = XS_DRIVER_STUFFUP;
+ xs->flags |= ITSDONE;
scsi_done(xs);
}
}