From mdharm@multivac.one-eyed-alien.net Thu Jul 28 14:57:46 2005 Date: Thu, 28 Jul 2005 14:50:29 -0700 From: Matthew Dharm Subject: USB Storage: wedge SCSI revision at 2 for usb-storage devices Message-ID: <20050728215029.GE31016@one-eyed-alien.net> This patch started life as as479b, and has been rediffed. Please note the order of submission of this latest patch series -- even tho this has an older original number, it is the last patch I'll be sending today. This patch changes the reported SCSI revision level to 2 for all disk-type devices. This is needed in a few cases because the device reports a level of 3 or higher but then crashes when given a REPORT LUNS command (for which support is supposed to be mandatory at those levels). This shouldn't harm us, since it only matters for sparse LUNs and we have separate ways of coping with that. Signed-off-by: Alan Stern Signed-off-by: Matthew Dharm Signed-off-by: Greg Kroah-Hartman --- drivers/usb/storage/scsiglue.c | 8 ++++++++ 1 files changed, 8 insertions(+) --- gregkh-2.6.orig/drivers/usb/storage/scsiglue.c 2005-08-15 17:54:14.000000000 -0700 +++ gregkh-2.6/drivers/usb/storage/scsiglue.c 2005-08-15 17:54:50.000000000 -0700 @@ -156,6 +156,14 @@ if (us->flags & US_FL_FIX_CAPACITY) sdev->fix_capacity = 1; + /* Some devices report a SCSI revision level above 2 but are + * unable to handle the REPORT LUNS command (for which + * support is mandatory at level 3). Since we already have + * a Get-Max-LUN request, we won't lose much by setting the + * revision level down to 2. The only devices that would be + * affected are those with sparse LUNs. */ + sdev->scsi_level = SCSI_2; + /* USB-IDE bridges tend to report SK = 0x04 (Non-recoverable * Hardware Error) when any low-level error occurs, * recoverable or not. Setting this flag tells the SCSI