summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2010-04-26 11:58:15 +0000
committermav <mav@FreeBSD.org>2010-04-26 11:58:15 +0000
commitb38c610c42f1f42b7ff92208194e775e0401adfe (patch)
treefe83fe88e90a7025edbd934b731a21015c470ec0
parent653c8ae2c42bcc0f4f0e49074861edcc17bacad0 (diff)
downloadFreeBSD-src-b38c610c42f1f42b7ff92208194e775e0401adfe.zip
FreeBSD-src-b38c610c42f1f42b7ff92208194e775e0401adfe.tar.gz
Mark ATA channel as idle on timeout in non-ATA_CAM mode.
This should fix possible duplicate request completion. Submitted by: mjacob
-rw-r--r--sys/dev/ata/ata-queue.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-queue.c b/sys/dev/ata/ata-queue.c
index a3b1c4e..4aef471 100644
--- a/sys/dev/ata/ata-queue.c
+++ b/sys/dev/ata/ata-queue.c
@@ -513,9 +513,9 @@ ata_timeout(struct ata_request *request)
request->flags |= ATA_R_TIMEOUT;
if (ch->dma.unload)
ch->dma.unload(request);
-#ifdef ATA_CAM
ch->running = NULL;
ch->state = ATA_IDLE;
+#ifdef ATA_CAM
ata_cam_end_transaction(ch->dev, request);
#endif
mtx_unlock(&ch->state_mtx);
OpenPOWER on IntegriCloud