aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorSøren Schmidt <sos@FreeBSD.org>2004-06-01 12:28:45 +0000
committerSøren Schmidt <sos@FreeBSD.org>2004-06-01 12:28:45 +0000
commit86e711a3939394aa106069805cdffbdb578e7acb (patch)
tree7f6106d10a4bee4f7b60f307122486d8c8c53345 /sys/dev
parentc83c43b66e64ff1b769efd5f9009acd4481f73f9 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ata/atapi-cd.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/sys/dev/ata/atapi-cd.c b/sys/dev/ata/atapi-cd.c
index 0d627d50c2c8e..ab1e110ee718c 100644
--- a/sys/dev/ata/atapi-cd.c
+++ b/sys/dev/ata/atapi-cd.c
@@ -488,17 +488,18 @@ acd_geom_access(struct g_provider *pp, int dr, int dw, int de)
if (!(request = ata_alloc_request()))
return ENOMEM;
- request->device = cdp->device;
- request->driver = cdp;
- bcopy(ccb, request->u.atapi.ccb, 16);
- request->flags = ATA_R_ATAPI;
- request->timeout = 5;
-
/* wait if drive is not finished loading the medium */
while (timeout--) {
+ bzero(request, sizeof(struct ata_request));
+ request->device = cdp->device;
+ request->driver = cdp;
+ bcopy(ccb, request->u.atapi.ccb, 16);
+ request->flags = ATA_R_ATAPI;
+ request->timeout = 5;
ata_queue_request(request);
if (!request->error &&
- request->u.atapi.sense_data.sense_key == 2 &&
+ (request->u.atapi.sense_data.sense_key == 2 ||
+ request->u.atapi.sense_data.sense_key == 7) &&
request->u.atapi.sense_data.asc == 4 &&
request->u.atapi.sense_data.ascq == 1)
tsleep(&timeout, PRIBIO, "acdld", hz / 2);