[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Fatal error while burning CD



Hi,

i got an SCSI log of a failed burn run from Michael Lange.

No artsy dance between drive and libburn is to see, which could explain
a misunderstanding between both.
The drive buffer becomes full, after 17 seconds some few sectors seem to
have been actually written, and then the second next WRITE(10) fails with
the "illegal request" error.
Its data would not fit into the buffer, but the drive does not wait until
there is room.

So it has something to do with a full drive buffer.

-------------------------------------------------------------------------

cdrskin can avoid to fill the buffer by an old workaround from the bad old
days of parallel ATA controllers when the CD burner blocked the hard disk
on the same controller while a WRITE(10) was waiting for buffer space in
the burner.

I wonder whether this workaround can avoid the drive's error reply.

If you are curious enough, add to your cdrskin runs this non-cdrecord option

   modesty_on_drive=1:min_percent=75:max_percent=80

It will pause sending of data when the drive buffer is in danger to become
more than 80 percent full. Sending data is resumed when it is below 75
percent full.
(Ye olde cdrecord option -immed is in cdrskin implemented as
   modesty_on_drive=1:min_percent=75:max_percent=95
but for this experiment we should give more free room than 5 percent.)

-------------------------------------------------------------------------
Long story of the SCSI log:

The reported drive buffer capacity is not 2 MiB but 1,179,648 bytes.

All looks well until LBA 416 is written. The most recent buffer inquiry
showed 98304 bytes free. Three more WRITE(10) succeeded which added
91728. So the buffer might be full up to 6576 free bytes. The WRITE(10)
to LBA 416 brings 30576 more bytes.

Now happens nothing for 17 seconds.
Then the pending WRITE(10) command gets a "no problem" reply. The
subsequent WRITE(10) command for LBA 429 ends swiftly without error reply.
Inquiry of the drive buffer reveils 10240 free bytes.

The next WRITE(10) goes to LBA 442 and gets an immediate error reply of
Key 5, ASC A8, ASCQ 04. (As said, ASC A8 is not listed in my copies of SCSI
specifications.)

libburn takes this as fatal error and brings the burn run to an emergency
halt.
The drive needs 110 seconds until it replies success to a TEST UNIT READY
command. That would suffice for the whole 168 MB of payload at the chosen
speed of 10x (= 750 sectors/second).
During that time, the TEST UNIT READYs got replied Key 2, ASC 04, ASCQ 07
which means "Logical unit not ready, operation in progress".

4 seconds later, the CD is ejected and the cdrskin run ends.

-------------------------------------------------------------------------

Have a nice day :)

Thomas


Reply to: