diff options
author | David Gwynne <dlg@cvs.openbsd.org> | 2009-08-13 11:10:28 +0000 |
---|---|---|
committer | David Gwynne <dlg@cvs.openbsd.org> | 2009-08-13 11:10:28 +0000 |
commit | 16ec2d3df07e1722f916875d00971cd025e9e7aa (patch) | |
tree | 40970696dbfb7a3fbe330070dbb74466c6b3e46f /sys | |
parent | f11b106a50552f475612d2ba6f34b68466c3a2c8 (diff) |
set ITSDONE on the xs before calling scsi_done()
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/pci/arc.c | 6 |
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); } } |