* [PATCH 1/2] SCSI & usb-storage: add try_rc_10_first flag [not found] <4FDEE8A1.5030200@redhat.com> @ 2012-06-20 20:04 ` Alan Stern 2012-06-20 20:13 ` Greg KH 0 siblings, 1 reply; 5+ messages in thread From: Alan Stern @ 2012-06-20 20:04 UTC (permalink / raw) To: Greg KH, James E.J. Bottomley Cc: Matthew Dharm, Hans de Goede, Torsten Wohlfarth, Sturm Flut, Sergey, Philippe Valembois - Phil, USB list, SCSI development list Several bug reports have been received recently for USB mass-storage devices that don't handle READ CAPACITY(16) commands properly. They report bogus sizes, in some cases becoming unusable as a result. The bugs were triggered by commit 09b6b51b0b6c1b9bb61815baf205e4d74c89ff04 (SCSI & usb-storage: add flags for VPD pages and REPORT LUNS), which caused usb-storage to stop overriding the SCSI level reported by devices. By default, the sd driver will try READ CAPACITY(16) first for any device whose level is above SCSI_SPC_2. It seems likely that any device large enough to require the use of READ CAPACITY(16) (i.e., 2 TB or more) would be able to handle READ CAPACITY(10) commands properly. Indeed, I don't know of any devices that don't handle READ CAPACITY(10) properly. Therefore this patch (as1559) adds a new flag telling the sd driver to try READ CAPACITY(10) before READ CAPACITY(16), and sets this flag for every USB mass-storage device. If a device really is larger than 2 TB, sd will fall back to READ CAPACITY(16) just as it used to. This fixes Bugzilla #43391. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Acked-by: Hans de Goede <hdegoede@redhat.com> CC: "James E.J. Bottomley" <JBottomley@parallels.com> CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net> CC: <stable@vger.kernel.org> --- drivers/scsi/sd.c | 2 ++ drivers/usb/storage/scsiglue.c | 6 ++++++ include/scsi/scsi_device.h | 1 + 3 files changed, 9 insertions(+) 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; ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] SCSI & usb-storage: add try_rc_10_first flag 2012-06-20 20:04 ` [PATCH 1/2] SCSI & usb-storage: add try_rc_10_first flag Alan Stern @ 2012-06-20 20:13 ` Greg KH 2012-06-22 13:39 ` James Bottomley 0 siblings, 1 reply; 5+ messages in thread From: Greg KH @ 2012-06-20 20:13 UTC (permalink / raw) To: Alan Stern, James E.J. Bottomley Cc: Matthew Dharm, Hans de Goede, Torsten Wohlfarth, Sturm Flut, Sergey, Philippe Valembois - Phil, USB list, SCSI development list On Wed, Jun 20, 2012 at 04:04:19PM -0400, Alan Stern wrote: > Several bug reports have been received recently for USB mass-storage > devices that don't handle READ CAPACITY(16) commands properly. They > report bogus sizes, in some cases becoming unusable as a result. > > The bugs were triggered by commit > 09b6b51b0b6c1b9bb61815baf205e4d74c89ff04 (SCSI & usb-storage: add > flags for VPD pages and REPORT LUNS), which caused usb-storage to stop > overriding the SCSI level reported by devices. By default, the sd > driver will try READ CAPACITY(16) first for any device whose level is > above SCSI_SPC_2. > > It seems likely that any device large enough to require the use of > READ CAPACITY(16) (i.e., 2 TB or more) would be able to handle READ > CAPACITY(10) commands properly. Indeed, I don't know of any devices > that don't handle READ CAPACITY(10) properly. > > Therefore this patch (as1559) adds a new flag telling the sd driver > to try READ CAPACITY(10) before READ CAPACITY(16), and sets this flag > for every USB mass-storage device. If a device really is larger than > 2 TB, sd will fall back to READ CAPACITY(16) just as it used to. > > This fixes Bugzilla #43391. > > Signed-off-by: Alan Stern <stern@rowland.harvard.edu> > Acked-by: Hans de Goede <hdegoede@redhat.com> > CC: "James E.J. Bottomley" <JBottomley@parallels.com> > CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net> > CC: <stable@vger.kernel.org> James, mind if I take this through my trees? thanks, greg k-h ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] SCSI & usb-storage: add try_rc_10_first flag 2012-06-20 20:13 ` Greg KH @ 2012-06-22 13:39 ` James Bottomley 2012-06-22 16:23 ` James Bottomley 0 siblings, 1 reply; 5+ messages in thread From: James Bottomley @ 2012-06-22 13:39 UTC (permalink / raw) To: Greg KH Cc: Alan Stern, Matthew Dharm, Hans de Goede, Torsten Wohlfarth, Sturm Flut, Sergey, Philippe Valembois - Phil, USB list, SCSI development list On Wed, 2012-06-20 at 13:13 -0700, Greg KH wrote: > On Wed, Jun 20, 2012 at 04:04:19PM -0400, Alan Stern wrote: > > Several bug reports have been received recently for USB mass-storage > > devices that don't handle READ CAPACITY(16) commands properly. They > > report bogus sizes, in some cases becoming unusable as a result. > > > > The bugs were triggered by commit > > 09b6b51b0b6c1b9bb61815baf205e4d74c89ff04 (SCSI & usb-storage: add > > flags for VPD pages and REPORT LUNS), which caused usb-storage to stop > > overriding the SCSI level reported by devices. By default, the sd > > driver will try READ CAPACITY(16) first for any device whose level is > > above SCSI_SPC_2. > > > > It seems likely that any device large enough to require the use of > > READ CAPACITY(16) (i.e., 2 TB or more) would be able to handle READ > > CAPACITY(10) commands properly. Indeed, I don't know of any devices > > that don't handle READ CAPACITY(10) properly. > > > > Therefore this patch (as1559) adds a new flag telling the sd driver > > to try READ CAPACITY(10) before READ CAPACITY(16), and sets this flag > > for every USB mass-storage device. If a device really is larger than > > 2 TB, sd will fall back to READ CAPACITY(16) just as it used to. > > > > This fixes Bugzilla #43391. > > > > Signed-off-by: Alan Stern <stern@rowland.harvard.edu> > > Acked-by: Hans de Goede <hdegoede@redhat.com> > > CC: "James E.J. Bottomley" <JBottomley@parallels.com> > > CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net> > > CC: <stable@vger.kernel.org> > > James, mind if I take this through my trees? Actually, you can take 1/2 but I need to do 2/2 as a postmerge. I foresee a conflict with another patch I'm queuing that needs resolving. Let me know when you've got 1/2 in and I'll build the postmerge tree. Thanks, James ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] SCSI & usb-storage: add try_rc_10_first flag 2012-06-22 13:39 ` James Bottomley @ 2012-06-22 16:23 ` James Bottomley 2012-06-23 5:06 ` Greg KH 0 siblings, 1 reply; 5+ messages in thread From: James Bottomley @ 2012-06-22 16:23 UTC (permalink / raw) To: Greg KH Cc: Alan Stern, Matthew Dharm, Hans de Goede, Torsten Wohlfarth, Sturm Flut, Sergey, Philippe Valembois - Phil, USB list, SCSI development list On Fri, 2012-06-22 at 14:39 +0100, James Bottomley wrote: > On Wed, 2012-06-20 at 13:13 -0700, Greg KH wrote: > > On Wed, Jun 20, 2012 at 04:04:19PM -0400, Alan Stern wrote: > > > Several bug reports have been received recently for USB mass-storage > > > devices that don't handle READ CAPACITY(16) commands properly. They > > > report bogus sizes, in some cases becoming unusable as a result. > > > > > > The bugs were triggered by commit > > > 09b6b51b0b6c1b9bb61815baf205e4d74c89ff04 (SCSI & usb-storage: add > > > flags for VPD pages and REPORT LUNS), which caused usb-storage to stop > > > overriding the SCSI level reported by devices. By default, the sd > > > driver will try READ CAPACITY(16) first for any device whose level is > > > above SCSI_SPC_2. > > > > > > It seems likely that any device large enough to require the use of > > > READ CAPACITY(16) (i.e., 2 TB or more) would be able to handle READ > > > CAPACITY(10) commands properly. Indeed, I don't know of any devices > > > that don't handle READ CAPACITY(10) properly. > > > > > > Therefore this patch (as1559) adds a new flag telling the sd driver > > > to try READ CAPACITY(10) before READ CAPACITY(16), and sets this flag > > > for every USB mass-storage device. If a device really is larger than > > > 2 TB, sd will fall back to READ CAPACITY(16) just as it used to. > > > > > > This fixes Bugzilla #43391. > > > > > > Signed-off-by: Alan Stern <stern@rowland.harvard.edu> > > > Acked-by: Hans de Goede <hdegoede@redhat.com> > > > CC: "James E.J. Bottomley" <JBottomley@parallels.com> > > > CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net> > > > CC: <stable@vger.kernel.org> > > > > James, mind if I take this through my trees? > > Actually, you can take 1/2 but I need to do 2/2 as a postmerge. I > foresee a conflict with another patch I'm queuing that needs resolving. > > Let me know when you've got 1/2 in and I'll build the postmerge tree. Actually, forget I said this ... the postmerge has to be the other way around. James ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] SCSI & usb-storage: add try_rc_10_first flag 2012-06-22 16:23 ` James Bottomley @ 2012-06-23 5:06 ` Greg KH 0 siblings, 0 replies; 5+ messages in thread From: Greg KH @ 2012-06-23 5:06 UTC (permalink / raw) To: James Bottomley Cc: Alan Stern, Matthew Dharm, Hans de Goede, Torsten Wohlfarth, Sturm Flut, Sergey, Philippe Valembois - Phil, USB list, SCSI development list On Fri, Jun 22, 2012 at 05:23:07PM +0100, James Bottomley wrote: > On Fri, 2012-06-22 at 14:39 +0100, James Bottomley wrote: > > On Wed, 2012-06-20 at 13:13 -0700, Greg KH wrote: > > > On Wed, Jun 20, 2012 at 04:04:19PM -0400, Alan Stern wrote: > > > > Several bug reports have been received recently for USB mass-storage > > > > devices that don't handle READ CAPACITY(16) commands properly. They > > > > report bogus sizes, in some cases becoming unusable as a result. > > > > > > > > The bugs were triggered by commit > > > > 09b6b51b0b6c1b9bb61815baf205e4d74c89ff04 (SCSI & usb-storage: add > > > > flags for VPD pages and REPORT LUNS), which caused usb-storage to stop > > > > overriding the SCSI level reported by devices. By default, the sd > > > > driver will try READ CAPACITY(16) first for any device whose level is > > > > above SCSI_SPC_2. > > > > > > > > It seems likely that any device large enough to require the use of > > > > READ CAPACITY(16) (i.e., 2 TB or more) would be able to handle READ > > > > CAPACITY(10) commands properly. Indeed, I don't know of any devices > > > > that don't handle READ CAPACITY(10) properly. > > > > > > > > Therefore this patch (as1559) adds a new flag telling the sd driver > > > > to try READ CAPACITY(10) before READ CAPACITY(16), and sets this flag > > > > for every USB mass-storage device. If a device really is larger than > > > > 2 TB, sd will fall back to READ CAPACITY(16) just as it used to. > > > > > > > > This fixes Bugzilla #43391. > > > > > > > > Signed-off-by: Alan Stern <stern@rowland.harvard.edu> > > > > Acked-by: Hans de Goede <hdegoede@redhat.com> > > > > CC: "James E.J. Bottomley" <JBottomley@parallels.com> > > > > CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net> > > > > CC: <stable@vger.kernel.org> > > > > > > James, mind if I take this through my trees? > > > > Actually, you can take 1/2 but I need to do 2/2 as a postmerge. I > > foresee a conflict with another patch I'm queuing that needs resolving. > > > > Let me know when you've got 1/2 in and I'll build the postmerge tree. > > Actually, forget I said this ... the postmerge has to be the other way > around. As these will probably make it to Linus before 3.5 is out, why would that be needed? Anyway, they are in my tree now, hopefully all should be fine. thanks, greg k-h ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-06-23 5:06 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <4FDEE8A1.5030200@redhat.com>
2012-06-20 20:04 ` [PATCH 1/2] SCSI & usb-storage: add try_rc_10_first flag Alan Stern
2012-06-20 20:13 ` Greg KH
2012-06-22 13:39 ` James Bottomley
2012-06-22 16:23 ` James Bottomley
2012-06-23 5:06 ` Greg KH
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.