diff options
author | sos <sos@FreeBSD.org> | 2004-01-19 15:20:00 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2004-01-19 15:20:00 +0000 |
commit | 5948092ae2b6900a66d24190cc2ee6d4c61f52f0 (patch) | |
tree | 813a85f55f80b3469bf9df09c0922c434a2f78a0 /sys/dev/ata/ata-all.c | |
parent | b6945f083eda9ba4a2c3418c60a4583889812645 (diff) | |
download | FreeBSD-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.c | 3 |
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); } |