public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sd: Try READ CAPACITY 16 first for all SCSI-3 devices
@ 2008-12-23 16:47 Matthew Wilcox
  2008-12-31 10:18 ` Martin K. Petersen
  2009-01-27 19:36 ` James Bottomley
  0 siblings, 2 replies; 9+ messages in thread
From: Matthew Wilcox @ 2008-12-23 16:47 UTC (permalink / raw)
  To: linux-scsi


New features are being added to the READ CAPACITY 16 results, so we want
to try to issue it in preference to READ CAPACITY 10.  Unfortunately,
some USB devices hang when they see a READ CAPACITY 16, so we limit
our chances of causing a hang by restricting this command to devices
which claim conformance to SCSI-3.  USB devices are currently limited
to claiming at most SCSI-2 conformance.

Of course, it's entirely legitimate for devices to not implement READ
CAPACITY 16, so this patch also includes a fallback to READ CAPACITY 10
for SCSI-3 devices.

Signed-off-by: Matthew Wilcox <willy@linux.intel.com>

---
 drivers/scsi/sd.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index f244349..25a923b 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1424,11 +1424,14 @@ sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer)
 	int sector_size;
 	struct scsi_device *sdp = sdkp->device;
 
-	/* Force READ CAPACITY(16) when PROTECT=1 */
-	if (scsi_device_protection(sdp)) {
+	if (sdp->scsi_level > SCSI_2) {
 		sector_size = read_capacity_16(sdkp, sdp, buffer);
 		if (sector_size == -EOVERFLOW)
 			goto got_data;
+		if (sector_size == -ENODEV)
+			return;
+		if (sector_size < 0)
+			sector_size = read_capacity_10(sdkp, sdp, buffer);
 		if (sector_size < 0)
 			return;
 	} else {

-- 
Matthew Wilcox				Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2009-02-25 22:43 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-23 16:47 [PATCH] sd: Try READ CAPACITY 16 first for all SCSI-3 devices Matthew Wilcox
2008-12-31 10:18 ` Martin K. Petersen
2008-12-31 13:50   ` Matthew Wilcox
2008-12-31 13:51     ` Matthew Wilcox
2009-02-23 21:51       ` Matthew Wilcox
2009-02-25 22:23         ` James Bottomley
2009-02-25 22:31           ` Matthew Wilcox
2009-02-25 22:43             ` James Bottomley
2009-01-27 19:36 ` James Bottomley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox