summaryrefslogtreecommitdiffstats
path: root/drivers/usb/storage
diff options
context:
space:
mode:
authorOliver Neukum <oneukum@suse.de>2015-02-10 09:27:59 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-02-24 17:38:46 +0100
commitec371326d47385dd3fc8e6c7e0d9e89118d94dd8 (patch)
treefe2c4f70187dae976af85d058732fd71f8c1e06a /drivers/usb/storage
parentuas: Add US_FL_NO_REPORT_OPCODES for JMicron JMS539 (diff)
downloadlinux-ec371326d47385dd3fc8e6c7e0d9e89118d94dd8.tar.xz
linux-ec371326d47385dd3fc8e6c7e0d9e89118d94dd8.zip
usb-storage: support for more than 8 LUNs
This is necessary to make some storage arrays work. Some storage devices have more than 8 LUNs. In addition you can hook up a WideSCSI bus to USB. In these cases even level 2 devices can have more than 8 LUNs. For them it is necessary to simply believe the class specific command and report its result back to the SCSI layer. Off by one Alan noticed is fixed. Signed-off-by: Oliver Neukum <oneukum@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/storage')
-rw-r--r--drivers/usb/storage/usb.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
index d468d02179f4..5600c33fcadb 100644
--- a/drivers/usb/storage/usb.c
+++ b/drivers/usb/storage/usb.c
@@ -889,6 +889,12 @@ static void usb_stor_scan_dwork(struct work_struct *work)
!(us->fflags & US_FL_SCM_MULT_TARG)) {
mutex_lock(&us->dev_mutex);
us->max_lun = usb_stor_Bulk_max_lun(us);
+ /*
+ * Allow proper scanning of devices that present more than 8 LUNs
+ * While not affecting other devices that may need the previous behavior
+ */
+ if (us->max_lun >= 8)
+ us_to_host(us)->max_lun = us->max_lun+1;
mutex_unlock(&us->dev_mutex);
}
scsi_scan_host(us_to_host(us));