On Sat, Aug 27 2005, Douglas Gilbert wrote: > Jeff Garzik wrote: > > Does the attached look OK to everybody? > > > > Jeff, > Yes. > > And after an exchange with Jens, it would probably be > safer to map transfer_length=0 for READ_10 and READ_16 > (as well as WRITE_10 and WRITE_16) to a nop on the ATA > side. Otherwise an ATA disk may attempt to transfer 2**16 > sectors. [Only READ_6 and WRITE_6 have the quirky "0 means > 256" definition, in the larger commands "0 means 0".] Yes, that part needs to be added as well. Jeff, the below looks good for the READ/WRITE_6 case. > > if (scsicmd[0] == READ_6 || scsicmd[0] == WRITE_6) { > > qc->nsect = tf->nsect = scsicmd[4]; > > + if (!qc->nsect) { > > + qc->nsect = 256; > > + if (lba48) > > + tf->hob_nsect = 1; > > + } > > + > > tf->lbal = scsicmd[3]; > > tf->lbam = scsicmd[2]; > > tf->lbah = scsicmd[1] & 0x1f; /* mask out reserved bits */ > > -- Jens Axboe - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html