[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <16476de4d4114eb18d4681132812744f@BY2PR03MB299.namprd03.prod.outlook.com>
Date: Sun, 13 Jul 2014 18:49:41 +0000
From: KY Srinivasan <kys@...rosoft.com>
To: "Martin K. Petersen" <martin.petersen@...cle.com>
CC: "hch@...radead.org" <hch@...radead.org>,
James Bottomley <jbottomley@...allels.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"devel@...uxdriverproject.org" <devel@...uxdriverproject.org>,
"apw@...onical.com" <apw@...onical.com>,
"stable@...r.kernel.org" <stable@...r.kernel.org>,
"linux-scsi@...r.kernel.org" <linux-scsi@...r.kernel.org>,
"ohering@...e.com" <ohering@...e.com>,
"jasowang@...hat.com" <jasowang@...hat.com>
Subject: RE: [PATCH 4/8] Drivers: scsi: storvsc: Filter WRITE_SAME_16
> -----Original Message-----
> From: Martin K. Petersen [mailto:martin.petersen@...cle.com]
> Sent: Sunday, July 13, 2014 5:59 AM
> To: KY Srinivasan
> Cc: hch@...radead.org; James Bottomley; linux-kernel@...r.kernel.org;
> devel@...uxdriverproject.org; apw@...onical.com; stable@...r.kernel.org;
> linux-scsi@...r.kernel.org; ohering@...e.com; jasowang@...hat.com
> Subject: Re: [PATCH 4/8] Drivers: scsi: storvsc: Filter WRITE_SAME_16
>
> >>>>> "KY" == KY Srinivasan <kys@...rosoft.com> writes:
>
> KY> Windows hosts do support UNMAP and set the field in the EVPD.
> KY> However, since the host advertises SPC-2 compliance, Linux does not
> KY> even query the VPD page.
>
> >> If we want to enable UNMAP in this case I'd prefer a blacklist entry
> >> than trying UNMAP despite the device not advertising it.
>
> I agree with that. We could do something like the patch below.
>
> However, I do think it's a good idea that you guys are looking into reporting
> SPC-3.
Thanks Martin; this patch would address our present issues. I will get some testing done
and report back.
Regards,
K. Y
>
>
> SCSI: Add a blacklist flag which enables VPD page inquiries
>
> Despite supporting modern SCSI features some storage devices continue to
> claim conformance to an older version of the SPC spec. This is done for
> compatibility with legacy operating systems.
>
> Linux by default will not attempt to read VPD pages on devices that claim
> SPC-2 or older. Introduce a blacklist flag that can be used to trigger VPD page
> inquiries on devices that are known to support them.
>
> Reported-by: KY Srinivasan <kys@...rosoft.com>
> Signed-off-by: Martin K. Petersen <martin.petersen@...cle.com>
>
> diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index
> 4a6e4ba5a400..a5b1a224628a 100644
> --- a/drivers/scsi/scsi_scan.c
> +++ b/drivers/scsi/scsi_scan.c
> @@ -949,7 +949,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)
> + if (*bflags & BLIST_TRY_VPD_PAGES)
> + sdev->try_vpd_pages = 1;
> + else if (*bflags & BLIST_SKIP_VPD_PAGES)
> sdev->skip_vpd_pages = 1;
>
> transport_configure_device(&sdev->sdev_gendev);
> diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index
> 87566b51fcf7..31d32b9077ca 100644
> --- a/drivers/scsi/sd.c
> +++ b/drivers/scsi/sd.c
> @@ -2701,6 +2701,11 @@ static void sd_read_write_same(struct scsi_disk
> *sdkp, unsigned char *buffer)
>
> static int sd_try_extended_inquiry(struct scsi_device *sdp) {
> + /* Attempt VPD inquiry if the device blacklist explicitly calls
> + * for it.
> + */
> + if (sdp->try_vpd_pages)
> + return 1;
> /*
> * Although VPD inquiries can go to SCSI-2 type devices,
> * 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
> 9aa38f7b303b..f579408620f0 100644
> --- a/include/scsi/scsi_device.h
> +++ b/include/scsi/scsi_device.h
> @@ -155,6 +155,7 @@ struct scsi_device {
> unsigned skip_ms_page_8:1; /* do not use MODE SENSE page 0x08
> */
> unsigned skip_ms_page_3f:1; /* do not use MODE SENSE page 0x3f
> */
> unsigned skip_vpd_pages:1; /* do not read VPD pages */
> + unsigned try_vpd_pages:1; /* attempt to read VPD pages */
> unsigned use_192_bytes_for_3f:1; /* ask for 192 bytes from page
> 0x3f */
> unsigned no_start_on_add:1; /* do not issue start on add */
> 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 @@
> #define BLIST_SKIP_VPD_PAGES 0x4000000 /* Ignore SBC-3 VPD pages
> */
> #define BLIST_SCSI3LUN 0x8000000 /* Scan more than 256
> LUNs
> for sequential scan */
> +#define BLIST_TRY_VPD_PAGES 0x10000000 /* Attempt to read VPD
> pages */
> #endif
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists