aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/scsi_scan.c4
-rw-r--r--drivers/scsi/sd.c5
-rw-r--r--include/scsi/scsi_device.h1
-rw-r--r--include/scsi/scsi_devinfo.h1
4 files changed, 10 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index a5a0bdeba857..50536cd6b3f2 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -928,7 +928,9 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
928 928
929 sdev->eh_timeout = SCSI_DEFAULT_EH_TIMEOUT; 929 sdev->eh_timeout = SCSI_DEFAULT_EH_TIMEOUT;
930 930
931 if (*bflags & BLIST_SKIP_VPD_PAGES) 931 if (*bflags & BLIST_TRY_VPD_PAGES)
932 sdev->try_vpd_pages = 1;
933 else if (*bflags & BLIST_SKIP_VPD_PAGES)
932 sdev->skip_vpd_pages = 1; 934 sdev->skip_vpd_pages = 1;
933 935
934 transport_configure_device(&sdev->sdev_gendev); 936 transport_configure_device(&sdev->sdev_gendev);
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 377a5206017e..4d72831eafe5 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -2726,6 +2726,11 @@ static void sd_read_write_same(struct scsi_disk *sdkp, unsigned char *buffer)
2726 2726
2727static int sd_try_extended_inquiry(struct scsi_device *sdp) 2727static int sd_try_extended_inquiry(struct scsi_device *sdp)
2728{ 2728{
2729 /* Attempt VPD inquiry if the device blacklist explicitly calls
2730 * for it.
2731 */
2732 if (sdp->try_vpd_pages)
2733 return 1;
2729 /* 2734 /*
2730 * Although VPD inquiries can go to SCSI-2 type devices, 2735 * Although VPD inquiries can go to SCSI-2 type devices,
2731 * some USB ones crash on receiving them, and the pages 2736 * some USB ones crash on receiving them, and the pages
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
index b895784e2313..1a0d1842962e 100644
--- a/include/scsi/scsi_device.h
+++ b/include/scsi/scsi_device.h
@@ -154,6 +154,7 @@ struct scsi_device {
154 unsigned skip_ms_page_8:1; /* do not use MODE SENSE page 0x08 */ 154 unsigned skip_ms_page_8:1; /* do not use MODE SENSE page 0x08 */
155 unsigned skip_ms_page_3f:1; /* do not use MODE SENSE page 0x3f */ 155 unsigned skip_ms_page_3f:1; /* do not use MODE SENSE page 0x3f */
156 unsigned skip_vpd_pages:1; /* do not read VPD pages */ 156 unsigned skip_vpd_pages:1; /* do not read VPD pages */
157 unsigned try_vpd_pages:1; /* attempt to read VPD pages */
157 unsigned use_192_bytes_for_3f:1; /* ask for 192 bytes from page 0x3f */ 158 unsigned use_192_bytes_for_3f:1; /* ask for 192 bytes from page 0x3f */
158 unsigned no_start_on_add:1; /* do not issue start on add */ 159 unsigned no_start_on_add:1; /* do not issue start on add */
159 unsigned allow_restart:1; /* issue START_UNIT in error handler */ 160 unsigned allow_restart:1; /* issue START_UNIT in error handler */
diff --git a/include/scsi/scsi_devinfo.h b/include/scsi/scsi_devinfo.h
index 8670c04e199e..1fdd6fc5492b 100644
--- a/include/scsi/scsi_devinfo.h
+++ b/include/scsi/scsi_devinfo.h
@@ -34,4 +34,5 @@
34#define BLIST_SKIP_VPD_PAGES 0x4000000 /* Ignore SBC-3 VPD pages */ 34#define BLIST_SKIP_VPD_PAGES 0x4000000 /* Ignore SBC-3 VPD pages */
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#endif 38#endif