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

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: