Re: [PATCH] Try #2: Use SCSI read/write(16) with 2TB drives
On Wed, Nov 14, 2012 at 12:55:13AM -0500, Jason J. Herne wrote: --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -887,7 +887,7 @@ static int sd_prep_fn(struct request_queue *q, struct request *rq) SCpnt-cmnd[29] = (unsigned char) (this_count 16) 0xff; SCpnt-cmnd[30] = (unsigned char) (this_count 8) 0xff; SCpnt-cmnd[31] = (unsigned char) this_count 0xff; - } else if (block 0x) { + } else if (sdp-use_16_for_rw) { SCpnt-cmnd[0] += READ_16 - READ_6; SCpnt-cmnd[1] = protect | ((rq-cmd_flags REQ_FUA) ? 0x8 : 0); SCpnt-cmnd[2] = sizeof(block) 4 ? (unsigned char) (block 56) 0xff : 0; @@ -2054,6 +2054,9 @@ got_data: } } + /* Use read/write(16) for 2TB disks */ + sdp-use_16_for_rw = (sdkp-capacity 0x); The comment is pointless if you assume the reading is able to read C. What would help is a link either here or in patch's description to the mail thread where it has been descovered that some 2TB devices don't recognize the small command. + /* Rescale capacity to 512-byte units */ if (sector_size == 4096) sdkp-capacity = 3; Sebastian -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Try #2: Use SCSI read/write(16) with 2TB drives
On Wed, Nov 14, 2012 at 2:02 PM, Sebastian Andrzej Siewior sebast...@breakpoint.cc wrote: On Wed, Nov 14, 2012 at 12:55:13AM -0500, Jason J. Herne wrote: } } + /* Use read/write(16) for 2TB disks */ + sdp-use_16_for_rw = (sdkp-capacity 0x); The comment is pointless if you assume the reading is able to read C. What would help is a link either here or in patch's description to the mail thread where it has been descovered that some 2TB devices don't recognize the small command. I've removed the comment entirely and added a link to the original post within the patch description. Resending in separate e-mail. -- - Jason J. Herne (hern...@gmail.com) -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] Try #2: Use SCSI read/write(16) with 2TB drives
From: Jason J. Herne hern...@gmail.com Force large capacity ( 2TB) drives to use READ/WRITE(16) instead of READ/WRITE(10). Some(most/all?) USB enclosures do not like READ(10) commands when a large capacity drive is installed. Signed-off-by: Jason J. Herne hern...@gmail.com --- drivers/scsi/sd.c |5 - include/scsi/scsi_device.h |1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 12f6fdf..9611d6b 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -887,7 +887,7 @@ static int sd_prep_fn(struct request_queue *q, struct request *rq) SCpnt-cmnd[29] = (unsigned char) (this_count 16) 0xff; SCpnt-cmnd[30] = (unsigned char) (this_count 8) 0xff; SCpnt-cmnd[31] = (unsigned char) this_count 0xff; - } else if (block 0x) { + } else if (sdp-use_16_for_rw) { SCpnt-cmnd[0] += READ_16 - READ_6; SCpnt-cmnd[1] = protect | ((rq-cmd_flags REQ_FUA) ? 0x8 : 0); SCpnt-cmnd[2] = sizeof(block) 4 ? (unsigned char) (block 56) 0xff : 0; @@ -2054,6 +2054,9 @@ got_data: } } + /* Use read/write(16) for 2TB disks */ + sdp-use_16_for_rw = (sdkp-capacity 0x); + /* Rescale capacity to 512-byte units */ if (sector_size == 4096) sdkp-capacity = 3; diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index 88fae8d..19ab8f1 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h @@ -135,6 +135,7 @@ struct scsi_device { * because we did a bus reset. */ unsigned use_10_for_rw:1; /* first try 10-byte read / write */ unsigned use_10_for_ms:1; /* first try 10-byte mode sense/select */ + unsigned use_16_for_rw:1; /* Use read/write(16) over read/write(10) */ unsigned skip_ms_page_8:1; /* do not use MODE SENSE page 0x08 */ unsigned skip_ms_page_3f:1; /* do not use MODE SENSE page 0x3f */ unsigned skip_vpd_pages:1; /* do not read VPD pages */ -- 1.7.9.5 -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html