mirror of https://gitee.com/openkylin/linux.git
[SCSI] Workaround for disks that report bad optimal transfer length
Not all disks fill out the VPD pages correctly. Add a blacklist flag that allows us ignore the SBC-3 VPD pages for a given device. The BLIST_SKIP_VPD_PAGES flag triggers our existing skip_vpd_pages scsi_device parameter to bypass VPD scanning. Also blacklist the offending Seagate drive model. Reported-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
c3a634bf78
commit
56f2a8016e
|
@ -228,6 +228,7 @@ static struct {
|
|||
{"SanDisk", "ImageMate CF-SD1", NULL, BLIST_FORCELUN},
|
||||
{"SEAGATE", "ST34555N", "0930", BLIST_NOTQ}, /* Chokes on tagged INQUIRY */
|
||||
{"SEAGATE", "ST3390N", "9546", BLIST_NOTQ},
|
||||
{"SEAGATE", "ST900MM0006", NULL, BLIST_SKIP_VPD_PAGES},
|
||||
{"SGI", "RAID3", "*", BLIST_SPARSELUN},
|
||||
{"SGI", "RAID5", "*", BLIST_SPARSELUN},
|
||||
{"SGI", "TP9100", "*", BLIST_REPORTLUN2},
|
||||
|
|
|
@ -926,6 +926,9 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
|
|||
|
||||
sdev->eh_timeout = SCSI_DEFAULT_EH_TIMEOUT;
|
||||
|
||||
if (*bflags & BLIST_SKIP_VPD_PAGES)
|
||||
sdev->skip_vpd_pages = 1;
|
||||
|
||||
transport_configure_device(&sdev->sdev_gendev);
|
||||
|
||||
if (sdev->host->hostt->slave_configure) {
|
||||
|
|
|
@ -31,4 +31,5 @@
|
|||
#define BLIST_MAX_512 0x800000 /* maximum 512 sector cdb length */
|
||||
#define BLIST_ATTACH_PQ3 0x1000000 /* Scan: Attach to PQ3 devices */
|
||||
#define BLIST_NO_DIF 0x2000000 /* Disable T10 PI (DIF) */
|
||||
#define BLIST_SKIP_VPD_PAGES 0x4000000 /* Ignore SBC-3 VPD pages */
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue