* [PATCH] scsi: storvsc: Workaround for virtual DVD SCSI version
@ 2017-05-03 22:56 Stephen Hemminger
2017-05-04 19:33 ` Greg KH
0 siblings, 1 reply; 3+ messages in thread
From: Stephen Hemminger @ 2017-05-03 22:56 UTC (permalink / raw)
To: stable; +Cc: Stephen Hemminger, Stephen Hemminger, Martin K . Petersen
From: Stephen Hemminger <stephen@networkplumber.org>
commit f1c635b439a5c01776fe3a25b1e2dc546ea82e6f upstream
Hyper-V host emulation of SCSI for virtual DVD device reports SCSI
version 0 (UNKNOWN) but is still capable of supporting REPORTLUN.
Without this patch, a GEN2 Linux guest on Hyper-V will not boot
successfully with virtual DVD ROM device. What happens is that the SCSI
scan process falls back to doing sequential probing by INQUIRY. But the
storvsc driver has a previous workaround that masks/blocks all errors
reports from INQUIRY (or MODE_SENSE) commands. This workaround causes
the scan to then populate a full set of bogus LUN's on the target and
then sends kernel spinning off into a death spiral doing block reads on
the non-existent LUNs.
By setting the correct blacklist flags, the target with the DVD device
is scanned with REPORTLUN which works correctly.
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
---
drivers/scsi/storvsc_drv.c | 27 +++++++++++++++++----------
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 7be04fc0d0e7..6f5d173ea9ff 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -400,8 +400,6 @@ MODULE_PARM_DESC(storvsc_vcpus_per_sub_channel, "Ratio of VCPUs to subchannels")
*/
static int storvsc_timeout = 180;
-static int msft_blist_flags = BLIST_TRY_VPD_PAGES;
-
#if IS_ENABLED(CONFIG_SCSI_FC_ATTRS)
static struct scsi_transport_template *fc_transport_template;
#endif
@@ -1283,6 +1281,22 @@ static int storvsc_do_io(struct hv_device *device,
return ret;
}
+static int storvsc_device_alloc(struct scsi_device *sdevice)
+{
+ /*
+ * Set blist flag to permit the reading of the VPD pages even when
+ * the target may claim SPC-2 compliance. MSFT targets currently
+ * claim SPC-2 compliance while they implement post SPC-2 features.
+ * With this flag we can correctly handle WRITE_SAME_16 issues.
+ *
+ * Hypervisor reports SCSI_UNKNOWN type for DVD ROM device but
+ * still supports REPORT LUN.
+ */
+ sdevice->sdev_bflags = BLIST_REPORTLUN2 | BLIST_TRY_VPD_PAGES;
+
+ return 0;
+}
+
static int storvsc_device_configure(struct scsi_device *sdevice)
{
@@ -1298,14 +1312,6 @@ static int storvsc_device_configure(struct scsi_device *sdevice)
sdevice->no_write_same = 1;
/*
- * Add blist flags to permit the reading of the VPD pages even when
- * the target may claim SPC-2 compliance. MSFT targets currently
- * claim SPC-2 compliance while they implement post SPC-2 features.
- * With this patch we can correctly handle WRITE_SAME_16 issues.
- */
- sdevice->sdev_bflags |= msft_blist_flags;
-
- /*
* If the host is WIN8 or WIN8 R2, claim conformance to SPC-3
* if the device is a MSFT virtual device. If the host is
* WIN10 or newer, allow write_same.
@@ -1569,6 +1575,7 @@ static struct scsi_host_template scsi_driver = {
.eh_host_reset_handler = storvsc_host_reset_handler,
.proc_name = "storvsc_host",
.eh_timed_out = storvsc_eh_timed_out,
+ .slave_alloc = storvsc_device_alloc,
.slave_configure = storvsc_device_configure,
.cmd_per_lun = 255,
.this_id = -1,
--
2.11.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] scsi: storvsc: Workaround for virtual DVD SCSI version
2017-05-03 22:56 [PATCH] scsi: storvsc: Workaround for virtual DVD SCSI version Stephen Hemminger
@ 2017-05-04 19:33 ` Greg KH
2017-05-05 0:03 ` Stephen Hemminger
0 siblings, 1 reply; 3+ messages in thread
From: Greg KH @ 2017-05-04 19:33 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: stable, Stephen Hemminger, Martin K . Petersen
On Wed, May 03, 2017 at 03:56:32PM -0700, Stephen Hemminger wrote:
> From: Stephen Hemminger <stephen@networkplumber.org>
>
> commit f1c635b439a5c01776fe3a25b1e2dc546ea82e6f upstream
>
> Hyper-V host emulation of SCSI for virtual DVD device reports SCSI
> version 0 (UNKNOWN) but is still capable of supporting REPORTLUN.
>
> Without this patch, a GEN2 Linux guest on Hyper-V will not boot
> successfully with virtual DVD ROM device. What happens is that the SCSI
> scan process falls back to doing sequential probing by INQUIRY. But the
> storvsc driver has a previous workaround that masks/blocks all errors
> reports from INQUIRY (or MODE_SENSE) commands. This workaround causes
> the scan to then populate a full set of bogus LUN's on the target and
> then sends kernel spinning off into a death spiral doing block reads on
> the non-existent LUNs.
>
> By setting the correct blacklist flags, the target with the DVD device
> is scanned with REPORTLUN which works correctly.
>
> Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
> Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
> ---
> drivers/scsi/storvsc_drv.c | 27 +++++++++++++++++----------
> 1 file changed, 17 insertions(+), 10 deletions(-)
I've queued this up, but it's interesting how you deleted the changelog
comments here saying this was only needed for 4.11 and no older kernels
:)
thanks,
greg k-h
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] scsi: storvsc: Workaround for virtual DVD SCSI version
2017-05-04 19:33 ` Greg KH
@ 2017-05-05 0:03 ` Stephen Hemminger
0 siblings, 0 replies; 3+ messages in thread
From: Stephen Hemminger @ 2017-05-05 0:03 UTC (permalink / raw)
To: Greg KH; +Cc: stable, Stephen Hemminger, Martin K . Petersen
On Thu, 4 May 2017 12:33:42 -0700
Greg KH <greg@kroah.com> wrote:
> On Wed, May 03, 2017 at 03:56:32PM -0700, Stephen Hemminger wrote:
> > From: Stephen Hemminger <stephen@networkplumber.org>
> >
> > commit f1c635b439a5c01776fe3a25b1e2dc546ea82e6f upstream
> >
> > Hyper-V host emulation of SCSI for virtual DVD device reports SCSI
> > version 0 (UNKNOWN) but is still capable of supporting REPORTLUN.
> >
> > Without this patch, a GEN2 Linux guest on Hyper-V will not boot
> > successfully with virtual DVD ROM device. What happens is that the SCSI
> > scan process falls back to doing sequential probing by INQUIRY. But the
> > storvsc driver has a previous workaround that masks/blocks all errors
> > reports from INQUIRY (or MODE_SENSE) commands. This workaround causes
> > the scan to then populate a full set of bogus LUN's on the target and
> > then sends kernel spinning off into a death spiral doing block reads on
> > the non-existent LUNs.
> >
> > By setting the correct blacklist flags, the target with the DVD device
> > is scanned with REPORTLUN which works correctly.
> >
> > Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
> > Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
> > Reviewed-by: Christoph Hellwig <hch@lst.de>
> > Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
> > ---
> > drivers/scsi/storvsc_drv.c | 27 +++++++++++++++++----------
> > 1 file changed, 17 insertions(+), 10 deletions(-)
>
> I've queued this up, but it's interesting how you deleted the changelog
> comments here saying this was only needed for 4.11 and no older kernels
> :)
At the time I only had reports of problem with 4.11.
But others ran into issue with 4.10 and 4.9
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-05-05 0:03 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-03 22:56 [PATCH] scsi: storvsc: Workaround for virtual DVD SCSI version Stephen Hemminger
2017-05-04 19:33 ` Greg KH
2017-05-05 0:03 ` Stephen Hemminger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox