Re: cdrecord and "get performance" scsi errors
Hi,
my experimental version of cdrskin is now working
with kernel 2.4 USB. (Whew ...)
The driver(s) disliked libburn announcing a generous
size via sg_io_hdr_t.dxfer_len with commands which
fetch (meta-)data from the drive.
This size was backed by allocated buffer space but
never used to its full extend by the drive's replies.
sg_io_hdr_t.dxfer_len for the Linux sg driver corresponds
with SCSI parameters "Allocation Length" and "Maximum Number
Of Descriptors" for the drive.
It is mentioned explicitely in MMC-5 that the Allocation
Length of a command may be larger than the actual amount
of data available.
Since both, sg_io_hdr_t.dxfer_len and Allocation Length,
have to be predicted in advance, the Linux 2.4 USB driver
does not allow to perform this legal MMC gesture.
In libburn i now changed all SCSI commands of direction
FROM_DRIVE so that they only prescribe reply sizes which
are guaranteed either by the SCSI specs or by a prior
inquiry of those sizes at the drive.
The latter means to first execute the command with a
minimal reply size and to interpret that reply for
learning the maximum reply size. Then the command is
executed a second time for real. (This works of course
only with SCSI commands which have no side effects.)
I am still testing the substantial and delicate changes
within libburn. In a few days they will be published in
development version 0.3.7. Possibly there will also emerge
a "stable" 0.3.6.pl01.
Have a nice day :)
Thomas
Reply to: