[kernel/f17] Add proposed patch to fix READ_CAPACITY command on usb keys (rhbz 831807)

Josh Boyer jwboyer at fedoraproject.org
Wed Jun 20 12:35:34 UTC 2012


commit a2fe54c8b0543ab0be1d0ffee73171fa002c4033
Author: Josh Boyer <jwboyer at redhat.com>
Date:   Wed Jun 20 08:35:14 2012 -0400

    Add proposed patch to fix READ_CAPACITY command on usb keys (rhbz 831807)

 kernel.spec                                  |   11 ++-
 usb-storage-try-read_capacity-10-first.patch |  130 ++++++++++++++++++++++++++
 2 files changed, 140 insertions(+), 1 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index c21a804..586e50f 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -54,7 +54,7 @@ Summary: The Linux kernel
 # For non-released -rc kernels, this will be appended after the rcX and
 # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
 #
-%global baserelease 1
+%global baserelease 2
 %global fedora_build %{baserelease}
 
 # base_sublevel is the kernel version we're starting with and patching
@@ -784,6 +784,9 @@ Patch22032: cifs-fix-parsing-of-password-mount-option.patch
 #rhbz 832188
 Patch22033: udl-bind-fix.patch
 
+#rhbz 831807
+Patch22034: usb-storage-try-read_capacity-10-first.patch
+
 # END OF PATCH DEFINITIONS
 
 %endif
@@ -1506,6 +1509,9 @@ ApplyPatch cifs-fix-parsing-of-password-mount-option.patch
 #rhbz 832188
 ApplyPatch udl-bind-fix.patch
 
+#rhbz 831807
+ApplyPatch usb-storage-try-read_capacity-10-first.patch
+
 # END OF PATCH APPLICATIONS
 
 %endif
@@ -2360,6 +2366,9 @@ fi
 #    '-'      |  |
 #              '-'
 %changelog
+* Tue Jun 19 2012 Josh Boyer <jwboyer at redhat.com>
+- Add proposed patch to fix READ_CAPACITY command on usb keys (rhbz 831807)
+
 * Mon Jun 18 2012 Dave Jones <davej at redhat.com>
 - Output taint info when the RSS counter check trips up.
 
diff --git a/usb-storage-try-read_capacity-10-first.patch b/usb-storage-try-read_capacity-10-first.patch
new file mode 100644
index 0000000..c9791cd
--- /dev/null
+++ b/usb-storage-try-read_capacity-10-first.patch
@@ -0,0 +1,130 @@
+Path: news.gmane.org!not-for-mail
+From: Alan Stern <stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz at public.gmane.org>
+Newsgroups: gmane.linux.usb.general
+Subject: Re: USB mass-storage devices and READ CAPACITY(16)
+Date: Sun, 17 Jun 2012 11:26:31 -0400 (EDT)
+Lines: 81
+Approved: news at gmane.org
+Message-ID: <Pine.LNX.4.44L0.1206171123390.16446-100000 at netrider.rowland.org>
+References: <Pine.LNX.4.44L0.1206151703110.1190-100000 at iolanthe.rowland.org>
+NNTP-Posting-Host: plane.gmane.org
+Mime-Version: 1.0
+Content-Type: TEXT/PLAIN; charset=US-ASCII
+X-Trace: dough.gmane.org 1339946799 1694 80.91.229.3 (17 Jun 2012 15:26:39 GMT)
+X-Complaints-To: usenet at dough.gmane.org
+NNTP-Posting-Date: Sun, 17 Jun 2012 15:26:39 +0000 (UTC)
+Cc: Torsten Wohlfarth <towo-BOgDY73gMKaEi8DpZVb4nw at public.gmane.org>,
+	Sturm Flut <sturmflut-Q2DnxKCD/W3WAjrKYNhlQQ at public.gmane.org>,
+	Sergey <sergeyn-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org>,
+	Philippe Valembois - Phil 
+	<lephilousophe-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f at public.gmane.org>,
+	USB list <linux-usb-u79uwXL29TY76Z2rM5mHXA at public.gmane.org>
+To: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA at public.gmane.org>
+Original-X-From: linux-usb-owner-u79uwXL29TY76Z2rM5mHXA at public.gmane.org Sun Jun 17 17:26:37 2012
+Return-path: <linux-usb-owner-u79uwXL29TY76Z2rM5mHXA at public.gmane.org>
+Envelope-to: glug-linux-usb-wOFGN7rlS/M9smdsby/KFg at public.gmane.org
+Original-Received: from vger.kernel.org ([209.132.180.67])
+	by plane.gmane.org with esmtp (Exim 4.69)
+	(envelope-from <linux-usb-owner-u79uwXL29TY76Z2rM5mHXA at public.gmane.org>)
+	id 1SgHN3-0002d5-Pq
+	for glug-linux-usb-wOFGN7rlS/M9smdsby/KFg at public.gmane.org; Sun, 17 Jun 2012 17:26:34 +0200
+Original-Received: (majordomo-u79uwXL29TY76Z2rM5mHXA at public.gmane.org) by vger.kernel.org via listexpand
+	id S1757469Ab2FQP0d (ORCPT <rfc822;glug-linux-usb at m.gmane.org>);
+	Sun, 17 Jun 2012 11:26:33 -0400
+Original-Received: from netrider.rowland.org ([192.131.102.5]:55086 "HELO
+	netrider.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
+	with SMTP id S1757447Ab2FQP0c (ORCPT
+	<rfc822;linux-usb-u79uwXL29TY76Z2rM5mHXA at public.gmane.org>); Sun, 17 Jun 2012 11:26:32 -0400
+Original-Received: (qmail 16789 invoked by uid 500); 17 Jun 2012 11:26:31 -0400
+Original-Received: from localhost (sendmail-bs-savSHZN5Fh8qMp+WYRx65w at public.gmane.org)
+  by localhost with SMTP; 17 Jun 2012 11:26:31 -0400
+X-X-Sender: stern-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b at public.gmane.org
+In-Reply-To: <Pine.LNX.4.44L0.1206151703110.1190-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b at public.gmane.org>
+Original-Sender: linux-usb-owner-u79uwXL29TY76Z2rM5mHXA at public.gmane.org
+Precedence: bulk
+List-ID: <linux-usb.vger.kernel.org>
+X-Mailing-List: linux-usb-u79uwXL29TY76Z2rM5mHXA at public.gmane.org
+Xref: news.gmane.org gmane.linux.usb.general:65976
+Archived-At: <http://permalink.gmane.org/gmane.linux.usb.general/65976>
+
+On Fri, 15 Jun 2012, Alan Stern wrote:
+
+> On Fri, 15 Jun 2012, Hans de Goede wrote:
+> 
+> > Hi,
+> > 
+> > On 06/15/2012 08:20 PM, Alan Stern wrote:
+> > > As we can see from recent bug reports, a lot of USB mass-storage
+> > > devices cannot handle READ CAPACITY(16) commands properly.  They send
+> > > back garbage and are unusable as a result.
+> > >
+> > > Should we go ahead and set a flag on all these devices, telling the sd
+> > > driver to try READ CAPACITY(10) first?  That's a lot easier than adding
+> > > more and more entries to unusual_devs.h.
+> > 
+> > That certainly sound reasonable to me. Note that the 071b:3203 really
+> > needs the US_FL_NO_READ_CAPACITY_16 flag though, as it wrongly reports
+> > a capacity of -1 when there is no sd card in its slot, and in response
+> > to that the kernel tries READ CAPACITY(16) and things go downhill
+> > from there...
+> 
+> Yes, we need to be able to have both flags set for the same device.  
+> For that card reader they would mean try READ CAPACITY(10) first, and 
+> if it fails, don't try READ CAPACITY(16).
+
+In other words, I'm suggesting we adopt this patch and get rid Hans's 
+new unusual_devs entry.
+
+Alan Stern
+
+
+
+
+Index: usb-3.4/include/scsi/scsi_device.h
+===================================================================
+--- usb-3.4.orig/include/scsi/scsi_device.h
++++ usb-3.4/include/scsi/scsi_device.h
+@@ -151,6 +151,7 @@ struct scsi_device {
+ 					   SD_LAST_BUGGY_SECTORS */
+ 	unsigned no_read_disc_info:1;	/* Avoid READ_DISC_INFO cmds */
+ 	unsigned no_read_capacity_16:1; /* Avoid READ_CAPACITY_16 cmds */
++	unsigned try_rc_10_first:1;	/* Try READ_CAPACACITY_10 first */
+ 	unsigned is_visible:1;	/* is the device visible in sysfs */
+ 
+ 	DECLARE_BITMAP(supported_events, SDEV_EVT_MAXBITS); /* supported events */
+Index: usb-3.4/drivers/scsi/sd.c
+===================================================================
+--- usb-3.4.orig/drivers/scsi/sd.c
++++ usb-3.4/drivers/scsi/sd.c
+@@ -1899,6 +1899,8 @@ static int sd_try_rc16_first(struct scsi
+ {
+ 	if (sdp->host->max_cmd_len < 16)
+ 		return 0;
++	if (sdp->try_rc_10_first)
++		return 0;
+ 	if (sdp->scsi_level > SCSI_SPC_2)
+ 		return 1;
+ 	if (scsi_device_protection(sdp))
+Index: usb-3.4/drivers/usb/storage/scsiglue.c
+===================================================================
+--- usb-3.4.orig/drivers/usb/storage/scsiglue.c
++++ usb-3.4/drivers/usb/storage/scsiglue.c
+@@ -202,6 +202,12 @@ static int slave_configure(struct scsi_d
+ 		if (us->fflags & US_FL_NO_READ_CAPACITY_16)
+ 			sdev->no_read_capacity_16 = 1;
+ 
++		/*
++		 * Many devices do not respond properly to READ_CAPACITY_16.
++		 * Tell the SCSI layer to try READ_CAPACITY_10 first.
++		 */
++		sdev->try_rc_10_first = 1;
++
+ 		/* assume SPC3 or latter devices support sense size > 18 */
+ 		if (sdev->scsi_level > SCSI_SPC_2)
+ 			us->fflags |= US_FL_SANE_SENSE;
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-usb" in
+the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA at public.gmane.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+


More information about the scm-commits mailing list