diff options
| author | Søren Schmidt <sos@FreeBSD.org> | 2004-06-01 12:28:45 +0000 |
|---|---|---|
| committer | Søren Schmidt <sos@FreeBSD.org> | 2004-06-01 12:28:45 +0000 |
| commit | 86e711a3939394aa106069805cdffbdb578e7acb (patch) | |
| tree | 7f6106d10a4bee4f7b60f307122486d8c8c53345 /sys/dev | |
| parent | c83c43b66e64ff1b769efd5f9009acd4481f73f9 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/ata/atapi-cd.c | 15 |
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); |
