diff options
author | sos <sos@FreeBSD.org> | 2003-12-07 23:15:22 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2003-12-07 23:15:22 +0000 |
commit | 7df01b5cbc8defa98cbd9592a515ff05b77f3093 (patch) | |
tree | 4e7e8d205c75984bc16c3c7f81119e1adc6c9889 /sys/dev/ata/atapi-cd.c | |
parent | 22280ea00b3731497c9c6c9de6b07ec0b276f6b0 (diff) | |
download | FreeBSD-src-7df01b5cbc8defa98cbd9592a515ff05b77f3093.zip FreeBSD-src-7df01b5cbc8defa98cbd9592a515ff05b77f3093.tar.gz |
Try a little harder to catch when fixate finishes.
On the <QSI CD-RW/DVD-ROM SBW-242> that failed causing burncd to
wait forever...
Diffstat (limited to 'sys/dev/ata/atapi-cd.c')
-rw-r--r-- | sys/dev/ata/atapi-cd.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/ata/atapi-cd.c b/sys/dev/ata/atapi-cd.c index 1e835b9..ec35c4e 100644 --- a/sys/dev/ata/atapi-cd.c +++ b/sys/dev/ata/atapi-cd.c @@ -1369,7 +1369,7 @@ acd_fixate(struct acd_softc *cdp, int multisession) int8_t ccb[16] = { ATAPI_CLOSE_TRACK, 0x01, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int timeout = 5*60*2; - int error; + int error, dummy; struct write_param param; if ((error = acd_mode_sense(cdp, ATAPI_CDROM_WRITE_PARAMETERS_PAGE, @@ -1397,9 +1397,11 @@ acd_fixate(struct acd_softc *cdp, int multisession) } while (timeout-- > 0) { + if ((error = acd_get_progress(cdp, &dummy))) + return error; if ((error = acd_test_ready(cdp->device)) != EBUSY) return error; - tsleep(&error, PRIBIO, "acdcld", hz/2); + tsleep(&error, PRIBIO, "acdcld", hz / 2); } return EIO; } |