summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata/ata-all.c
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2004-01-19 15:20:00 +0000
committersos <sos@FreeBSD.org>2004-01-19 15:20:00 +0000
commit5948092ae2b6900a66d24190cc2ee6d4c61f52f0 (patch)
tree813a85f55f80b3469bf9df09c0922c434a2f78a0 /sys/dev/ata/ata-all.c
parentb6945f083eda9ba4a2c3418c60a4583889812645 (diff)
downloadFreeBSD-src-5948092ae2b6900a66d24190cc2ee6d4c61f52f0.zip
FreeBSD-src-5948092ae2b6900a66d24190cc2ee6d4c61f52f0.tar.gz
Fix breakage on timeout/retries. The bug cause a sema to be leaked so
that the calling process would newer wakeup.
Diffstat (limited to 'sys/dev/ata/ata-all.c')
-rw-r--r--sys/dev/ata/ata-all.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c
index a194694..d23c3d9 100644
--- a/sys/dev/ata/ata-all.c
+++ b/sys/dev/ata/ata-all.c
@@ -565,7 +565,7 @@ ata_getparam(struct ata_device *atadev, u_int8_t command)
if (request) {
request->device = atadev;
request->u.ata.command = command;
- request->flags = (ATA_R_READ | ATA_R_AT_HEAD | ATA_R_QUIET);
+ request->flags = (ATA_R_READ | ATA_R_IMMEDIATE | ATA_R_QUIET);
request->data = (caddr_t)atadev->param;
request->timeout = 2;
request->retries = 3;
@@ -576,6 +576,7 @@ ata_getparam(struct ata_device *atadev, u_int8_t command)
if (!(error = request->result))
break;
request->retries--;
+ request->flags |= ATA_R_REQUEUE;
}
ata_free_request(request);
}
OpenPOWER on IntegriCloud