summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2003-12-07 23:15:22 +0000
committersos <sos@FreeBSD.org>2003-12-07 23:15:22 +0000
commit7df01b5cbc8defa98cbd9592a515ff05b77f3093 (patch)
tree4e7e8d205c75984bc16c3c7f81119e1adc6c9889
parent22280ea00b3731497c9c6c9de6b07ec0b276f6b0 (diff)
downloadFreeBSD-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...
-rw-r--r--sys/dev/ata/atapi-cd.c6
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;
}
OpenPOWER on IntegriCloud