diff options
author | Janusz Dziemidowicz <rraptorr@nails.eu.org> | 2014-07-24 09:48:46 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2014-07-29 18:01:10 -0400 |
commit | 0213436a2cc5e4a5ca2fabfaa4d3877097f3b13f (patch) | |
tree | 192a6c47135e95d157f406aa610bd4e113d63d08 | |
parent | 884ffee01ddde5af260c7a5d1359c658aa1f0a11 (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.c | 1 | ||||
-rw-r--r-- | drivers/scsi/scsi_scan.c | 6 | ||||
-rw-r--r-- | include/scsi/scsi_devinfo.h | 2 |
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 |