Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Dec 2003 16:34:26 +0200
From:      Lefteris Chatzibarbas <lefcha@hellug.gr>
To:        Scott Long <scottl@freebsd.org>
Cc:        freebsd-current@freebsd.org
Subject:   Re: burncd(8) CD-RW blanking problem
Message-ID:  <20031209143426.GA19683@igloo.linux.gr>
In-Reply-To: <3FD230C3.1090205@freebsd.org>
References:  <20031206174859.GA22714@igloo.linux.gr> <20031206175502.GB95786@cnd.mcgill.ca> <3FD230C3.1090205@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--0OAP2g/MAC+5xKAE
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

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).



--0OAP2g/MAC+5xKAE
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="patch-atapi-cd.c"

--- 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)

--0OAP2g/MAC+5xKAE--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031209143426.GA19683>