On Mon, Aug 22 2005, Douglas Gilbert wrote:
> if (scsicmd[0] == READ_6 || scsicmd[0] == WRITE_6) {
> - qc->nsect = tf->nsect = scsicmd[4];
> + if (scsicmd[4] == 0) {
> + /*
> + * For READ_6 and WRITE_6 (only)
> + * transfer_len==0 -> 256 blocks !!
> + */
> + if (lba48) {
> + tf->hob_nsect = 1;
> + qc->nsect = 256;
> + } else
> + return 1;
This isn't quite right, for 28-bit lba a 0 sector value means 256
sectors to transfer as well. So just make that:
if (lba48) {
tf->hob_nsect = 1;
qc->nsect = 256;
}
/* continue */
and it should work fine. Similarly for 48-bit lba, 0 means 16^2 sectors.
--
Jens Axboe
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html