burncd(8) CD-RW blanking problem
Lefteris Chatzibarbas
lefcha at hellug.gr
Tue Dec 9 06:22:00 PST 2003
On Sat, Dec 06, 2003 at 12:40:51PM -0700, Scott Long wrote:
> Mathew Kanner wrote:
> >On Dec 06, Lefteris Chatzibarbas wrote:
> >>The pct variable is always 0, even after the blanking of the CD-RW is
> >>finished (according to the device's LEDs), so the program falls into an
> >>infinite loop.
> >
> > I have the exact same problem. It stays stuck in the loop
> >because ioctl(fd, CDRIOGETPROGRESS, &pct) pct is always 0.
>
> I'm seeing this too. What's odd is that my cd drive is reporting back
> incorrect sense information; the valid bit is not set, the asc/ascq is
> suspect (4/8), and the sense key specific data is all 0. Since other
> fields in the sense data are reasonable, it's not as if no sense data is
> being returned at all. So it looks like the CDRIOGETPROGRESS ioctl
> handler is doing the right thing, but the cd drive is not. Maybe the
> driver is doing something wrong when it issues the erase command, but
> I can't convince myself that that is likely.
The attached patch seems to correct the problem (at least for me). It
is similar to what was done in revision 1.137 of sys/dev/ata/atapi-cd.c
(this has been changed since revision 1.138).
-------------- next part --------------
--- sys/dev/ata/atapi-cd.c.orig Tue Dec 9 13:43:57 2003
+++ sys/dev/ata/atapi-cd.c Tue Dec 9 15:50:33 2003
@@ -1524,7 +1524,12 @@
struct atapi_sense sense;
int8_t dummy[8];
- ata_atapicmd(cdp->device, ccb, dummy, sizeof(dummy), ATA_R_READ, 30);
+ if (ata_atapicmd(cdp->device, ccb, dummy, sizeof(dummy), ATA_R_READ, 30)
+ != EBUSY) {
+ *finished = 100;
+ return 0;
+ }
+
acd_request_sense(cdp->device, &sense);
if (sense.sksv)
More information about the freebsd-current
mailing list