aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJanusz Dziemidowicz <rraptorr@nails.eu.org>2014-07-24 09:48:46 -0400
committerChristoph Hellwig <hch@lst.de>2014-07-29 18:01:10 -0400
commit0213436a2cc5e4a5ca2fabfaa4d3877097f3b13f (patch)
tree192a6c47135e95d157f406aa610bd4e113d63d08
parent884ffee01ddde5af260c7a5d1359c658aa1f0a11 (diff)
scsi: do not issue SCSI RSOC command to Promise Vtrak E610f
Some devices don't like REPORT SUPPORTED OPERATION CODES and will simply timeout causing sd_mod init to take a very very long time. Introduce BLIST_NO_RSOC scsi scan flag, that stops RSOC from being issued. Add it to Promise Vtrak E610f entry in scsi scan blacklist. Fixes bug #79901 reported at https://bugzilla.kernel.org/show_bug.cgi?id=79901 Fixes: 98dcc2946adb ("SCSI: sd: Update WRITE SAME heuristics") Signed-off-by: Janusz Dziemidowicz <rraptorr@nails.eu.org> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Cc: stable@vger.kernel.org Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r--drivers/scsi/scsi_devinfo.c1
-rw-r--r--drivers/scsi/scsi_scan.c6
-rw-r--r--include/scsi/scsi_devinfo.h2
3 files changed, 9 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
index f969aca0b54e..49014a143c6a 100644
--- a/drivers/scsi/scsi_devinfo.c
+++ b/drivers/scsi/scsi_devinfo.c
@@ -222,6 +222,7 @@ static struct {
222 {"PIONEER", "CD-ROM DRM-602X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, 222 {"PIONEER", "CD-ROM DRM-602X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN},
223 {"PIONEER", "CD-ROM DRM-604X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, 223 {"PIONEER", "CD-ROM DRM-604X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN},
224 {"PIONEER", "CD-ROM DRM-624X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, 224 {"PIONEER", "CD-ROM DRM-624X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN},
225 {"Promise", "VTrak E610f", NULL, BLIST_SPARSELUN | BLIST_NO_RSOC},
225 {"Promise", "", NULL, BLIST_SPARSELUN}, 226 {"Promise", "", NULL, BLIST_SPARSELUN},
226 {"QUANTUM", "XP34301", "1071", BLIST_NOTQ}, 227 {"QUANTUM", "XP34301", "1071", BLIST_NOTQ},
227 {"REGAL", "CDC-4X", NULL, BLIST_MAX5LUN | BLIST_SINGLELUN}, 228 {"REGAL", "CDC-4X", NULL, BLIST_MAX5LUN | BLIST_SINGLELUN},
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 50536cd6b3f2..56675dbbf681 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -900,6 +900,12 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
900 if (*bflags & BLIST_USE_10_BYTE_MS) 900 if (*bflags & BLIST_USE_10_BYTE_MS)
901 sdev->use_10_for_ms = 1; 901 sdev->use_10_for_ms = 1;
902 902
903 /* some devices don't like REPORT SUPPORTED OPERATION CODES
904 * and will simply timeout causing sd_mod init to take a very
905 * very long time */
906 if (*bflags & BLIST_NO_RSOC)
907 sdev->no_report_opcodes = 1;
908
903 /* set the device running here so that slave configure 909 /* set the device running here so that slave configure
904 * may do I/O */ 910 * may do I/O */
905 ret = scsi_device_set_state(sdev, SDEV_RUNNING); 911 ret = scsi_device_set_state(sdev, SDEV_RUNNING);
diff --git a/include/scsi/scsi_devinfo.h b/include/scsi/scsi_devinfo.h
index 1fdd6fc5492b..183eaab7c380 100644
--- a/include/scsi/scsi_devinfo.h
+++ b/include/scsi/scsi_devinfo.h
@@ -35,4 +35,6 @@
35#define BLIST_SCSI3LUN 0x8000000 /* Scan more than 256 LUNs 35#define BLIST_SCSI3LUN 0x8000000 /* Scan more than 256 LUNs
36 for sequential scan */ 36 for sequential scan */
37#define BLIST_TRY_VPD_PAGES 0x10000000 /* Attempt to read VPD pages */ 37#define BLIST_TRY_VPD_PAGES 0x10000000 /* Attempt to read VPD pages */
38#define BLIST_NO_RSOC 0x20000000 /* don't try to issue RSOC */
39
38#endif 40#endif