2019-06-18 01:32:05

by Marcos Paulo de Souza

[permalink] [raw]
Subject: [PATCH 0/2] Honor VPD check in usb/storage for SanDisk device

Before this patch, USB storage devices disabled VPD check by always setting
skip_vpd_check.

The first patch add a new entry to scsi_static_device_list related to SanDisk
Cruzer Blade, which have VPD, adding BLIST_TRY_VPD_PAGES flag, which implies
try_vpd_pages.

The second patch check try_vpd_pages, and only set skip_vpd_pages if
try_vpd_pages is not set.

This patches along the wwid one [1], makes SanDisk Cruzer Blade device to
present correctly wwid, vpd_pg80 and vpd_pg83 in sysfs, and let the window open
to support another USB storage devices to support and present VPD.

[1]: https://lkml.org/lkml/2019/6/11/1408

Marcos Paulo de Souza (2):
scsi: devinfo: BLIST_TRY_VPD_PAGES for SanDisk Cruzer Blade
usb: storage: scsiglue: Do not skip VPD if try_vpd_pages is set

drivers/scsi/scsi_devinfo.c | 2 ++
drivers/usb/storage/scsiglue.c | 7 +++++--
2 files changed, 7 insertions(+), 2 deletions(-)

--
2.21.0


2019-06-18 01:32:17

by Marcos Paulo de Souza

[permalink] [raw]
Subject: [PATCH 1/2] scsi: devinfo: BLIST_TRY_VPD_PAGES for SanDisk Cruzer Blade

Currently, all USB devices skip VPD pages, even when the device supports
them (SPC-3 and later), but some of them support VPD, like Cruzer Blade.

Signed-off-by: Marcos Paulo de Souza <[email protected]>
---
drivers/scsi/scsi_devinfo.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
index a08ff3bd6310..df14597752ec 100644
--- a/drivers/scsi/scsi_devinfo.c
+++ b/drivers/scsi/scsi_devinfo.c
@@ -239,6 +239,8 @@ static struct {
{"LSI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
{"ENGENIO", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
{"LENOVO", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
+ {"SanDisk", "Cruzer Blade", NULL, BLIST_TRY_VPD_PAGES |
+ BLIST_INQUIRY_36},
{"SMSC", "USB 2 HS-CF", NULL, BLIST_SPARSELUN | BLIST_INQUIRY_36},
{"SONY", "CD-ROM CDU-8001", NULL, BLIST_BORKEN},
{"SONY", "TSL", NULL, BLIST_FORCELUN}, /* DDS3 & DDS4 autoloaders */
--
2.21.0

2019-06-18 01:32:57

by Marcos Paulo de Souza

[permalink] [raw]
Subject: [PATCH 2/2] usb: storage: scsiglue: Do not skip VPD if try_vpd_pages is set

If BLIST_TRY_VPD_PAGES is set for a device, even for an USB, it should
be honored, so only set skip_vpd_pages is try_vpd_pages is not set.

Signed-off-by: Marcos Paulo de Souza <[email protected]>
---
drivers/usb/storage/scsiglue.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
index 59190d88fa9f..0a9520780771 100644
--- a/drivers/usb/storage/scsiglue.c
+++ b/drivers/usb/storage/scsiglue.c
@@ -195,8 +195,11 @@ static int slave_configure(struct scsi_device *sdev)
*/
sdev->skip_ms_page_8 = 1;

- /* Some devices don't handle VPD pages correctly */
- sdev->skip_vpd_pages = 1;
+ /*
+ * Some devices don't handle VPD pages correctly, so skip vpd
+ * pages if not forced by SCSI layer.
+ */
+ sdev->skip_vpd_pages = sdev->try_vpd_pages == 0;

/* Do not attempt to use REPORT SUPPORTED OPERATION CODES */
sdev->no_report_opcodes = 1;
--
2.21.0

2019-06-18 06:50:26

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: storage: scsiglue: Do not skip VPD if try_vpd_pages is set

On Mon, Jun 17, 2019 at 10:31:46PM -0300, Marcos Paulo de Souza wrote:
> If BLIST_TRY_VPD_PAGES is set for a device, even for an USB, it should
> be honored, so only set skip_vpd_pages is try_vpd_pages is not set.
>
> Signed-off-by: Marcos Paulo de Souza <[email protected]>
> ---
> drivers/usb/storage/scsiglue.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)

Where is patch 1/2 of this series?

confused,

greg k-h

2019-06-18 10:30:46

by Marcos Paulo de Souza

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: storage: scsiglue: Do not skip VPD if try_vpd_pages is set

On Tue, Jun 18, 2019 at 08:49:47AM +0200, Greg Kroah-Hartman wrote:
> On Mon, Jun 17, 2019 at 10:31:46PM -0300, Marcos Paulo de Souza wrote:
> > If BLIST_TRY_VPD_PAGES is set for a device, even for an USB, it should
> > be honored, so only set skip_vpd_pages is try_vpd_pages is not set.
> >
> > Signed-off-by: Marcos Paulo de Souza <[email protected]>
> > ---
> > drivers/usb/storage/scsiglue.c | 7 +++++--
> > 1 file changed, 5 insertions(+), 2 deletions(-)
>
> Where is patch 1/2 of this series?

You can find it here:
https://lore.kernel.org/lkml/[email protected]/

>
> confused,
>
> greg k-h

--
Thanks,
Marcos

2019-06-18 10:54:18

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: storage: scsiglue: Do not skip VPD if try_vpd_pages is set

On Tue, Jun 18, 2019 at 07:30:04AM -0300, Marcos Paulo de Souza wrote:
> On Tue, Jun 18, 2019 at 08:49:47AM +0200, Greg Kroah-Hartman wrote:
> > On Mon, Jun 17, 2019 at 10:31:46PM -0300, Marcos Paulo de Souza wrote:
> > > If BLIST_TRY_VPD_PAGES is set for a device, even for an USB, it should
> > > be honored, so only set skip_vpd_pages is try_vpd_pages is not set.
> > >
> > > Signed-off-by: Marcos Paulo de Souza <[email protected]>
> > > ---
> > > drivers/usb/storage/scsiglue.c | 7 +++++--
> > > 1 file changed, 5 insertions(+), 2 deletions(-)
> >
> > Where is patch 1/2 of this series?
>
> You can find it here:
> https://lore.kernel.org/lkml/[email protected]/

So is this 2/2 patch independant of 1/2 and can go throught the USB
tree, or do they both need to be together?

As it is, I have no idea what to do with this patch :(

thanks,

greg k-h

2019-06-18 10:58:44

by Marcos Paulo de Souza

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: storage: scsiglue: Do not skip VPD if try_vpd_pages is set

On Tue, Jun 18, 2019 at 12:52:03PM +0200, Greg Kroah-Hartman wrote:
> On Tue, Jun 18, 2019 at 07:30:04AM -0300, Marcos Paulo de Souza wrote:
> > On Tue, Jun 18, 2019 at 08:49:47AM +0200, Greg Kroah-Hartman wrote:
> > > On Mon, Jun 17, 2019 at 10:31:46PM -0300, Marcos Paulo de Souza wrote:
> > > > If BLIST_TRY_VPD_PAGES is set for a device, even for an USB, it should
> > > > be honored, so only set skip_vpd_pages is try_vpd_pages is not set.
> > > >
> > > > Signed-off-by: Marcos Paulo de Souza <[email protected]>
> > > > ---
> > > > drivers/usb/storage/scsiglue.c | 7 +++++--
> > > > 1 file changed, 5 insertions(+), 2 deletions(-)
> > >
> > > Where is patch 1/2 of this series?
> >
> > You can find it here:
> > https://lore.kernel.org/lkml/[email protected]/
>
> So is this 2/2 patch independant of 1/2 and can go throught the USB
> tree, or do they both need to be together?

I think it is, since we are not dealing with something specific to a device in
this patch.

>
> As it is, I have no idea what to do with this patch :(
Sorry, I relied in get_maintainer.pl only, so you weren't CCed in both patches.
But feel free to grab this patch in your tree.
>
> thanks,
>
> greg k-h

--
Thanks,
Marcos

2019-06-18 13:48:45

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: storage: scsiglue: Do not skip VPD if try_vpd_pages is set

On Mon, 17 Jun 2019, Marcos Paulo de Souza wrote:

> If BLIST_TRY_VPD_PAGES is set for a device, even for an USB, it should
> be honored, so only set skip_vpd_pages is try_vpd_pages is not set.
>
> Signed-off-by: Marcos Paulo de Souza <[email protected]>
> ---
> drivers/usb/storage/scsiglue.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
> index 59190d88fa9f..0a9520780771 100644
> --- a/drivers/usb/storage/scsiglue.c
> +++ b/drivers/usb/storage/scsiglue.c
> @@ -195,8 +195,11 @@ static int slave_configure(struct scsi_device *sdev)
> */
> sdev->skip_ms_page_8 = 1;
>
> - /* Some devices don't handle VPD pages correctly */
> - sdev->skip_vpd_pages = 1;
> + /*
> + * Some devices don't handle VPD pages correctly, so skip vpd
> + * pages if not forced by SCSI layer.
> + */
> + sdev->skip_vpd_pages = sdev->try_vpd_pages == 0;
>
> /* Do not attempt to use REPORT SUPPORTED OPERATION CODES */
> sdev->no_report_opcodes = 1;

Acked-by: Alan Stern <[email protected]>

Although I think it would be clearer to write:

sdev->skip_vpd_pages = !sdev->try_vpd_pages;

But that's just personal preference. This is okay as it is.

Alan Stern

2019-06-18 15:20:18

by Marcos Paulo de Souza

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: storage: scsiglue: Do not skip VPD if try_vpd_pages is set

On Tue, Jun 18, 2019 at 09:48:01AM -0400, Alan Stern wrote:
> On Mon, 17 Jun 2019, Marcos Paulo de Souza wrote:
>
> > If BLIST_TRY_VPD_PAGES is set for a device, even for an USB, it should
> > be honored, so only set skip_vpd_pages is try_vpd_pages is not set.
> >
> > Signed-off-by: Marcos Paulo de Souza <[email protected]>
> > ---
> > drivers/usb/storage/scsiglue.c | 7 +++++--
> > 1 file changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
> > index 59190d88fa9f..0a9520780771 100644
> > --- a/drivers/usb/storage/scsiglue.c
> > +++ b/drivers/usb/storage/scsiglue.c
> > @@ -195,8 +195,11 @@ static int slave_configure(struct scsi_device *sdev)
> > */
> > sdev->skip_ms_page_8 = 1;
> >
> > - /* Some devices don't handle VPD pages correctly */
> > - sdev->skip_vpd_pages = 1;
> > + /*
> > + * Some devices don't handle VPD pages correctly, so skip vpd
> > + * pages if not forced by SCSI layer.
> > + */
> > + sdev->skip_vpd_pages = sdev->try_vpd_pages == 0;
> >
> > /* Do not attempt to use REPORT SUPPORTED OPERATION CODES */
> > sdev->no_report_opcodes = 1;
>
> Acked-by: Alan Stern <[email protected]>
>
> Although I think it would be clearer to write:
>
> sdev->skip_vpd_pages = !sdev->try_vpd_pages;

I agree. Greg, would you like me to send a v2 of this patch with this change, or
can you apply the change suggested by Alan?

Thanks,
Marcos

>
> But that's just personal preference. This is okay as it is.
>
> Alan Stern
>

--
Thanks,
Marcos

2019-06-18 16:08:28

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: storage: scsiglue: Do not skip VPD if try_vpd_pages is set

On Tue, Jun 18, 2019 at 12:17:39PM -0300, Marcos Paulo de Souza wrote:
> On Tue, Jun 18, 2019 at 09:48:01AM -0400, Alan Stern wrote:
> > On Mon, 17 Jun 2019, Marcos Paulo de Souza wrote:
> >
> > > If BLIST_TRY_VPD_PAGES is set for a device, even for an USB, it should
> > > be honored, so only set skip_vpd_pages is try_vpd_pages is not set.
> > >
> > > Signed-off-by: Marcos Paulo de Souza <[email protected]>
> > > ---
> > > drivers/usb/storage/scsiglue.c | 7 +++++--
> > > 1 file changed, 5 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
> > > index 59190d88fa9f..0a9520780771 100644
> > > --- a/drivers/usb/storage/scsiglue.c
> > > +++ b/drivers/usb/storage/scsiglue.c
> > > @@ -195,8 +195,11 @@ static int slave_configure(struct scsi_device *sdev)
> > > */
> > > sdev->skip_ms_page_8 = 1;
> > >
> > > - /* Some devices don't handle VPD pages correctly */
> > > - sdev->skip_vpd_pages = 1;
> > > + /*
> > > + * Some devices don't handle VPD pages correctly, so skip vpd
> > > + * pages if not forced by SCSI layer.
> > > + */
> > > + sdev->skip_vpd_pages = sdev->try_vpd_pages == 0;
> > >
> > > /* Do not attempt to use REPORT SUPPORTED OPERATION CODES */
> > > sdev->no_report_opcodes = 1;
> >
> > Acked-by: Alan Stern <[email protected]>
> >
> > Although I think it would be clearer to write:
> >
> > sdev->skip_vpd_pages = !sdev->try_vpd_pages;
>
> I agree. Greg, would you like me to send a v2 of this patch with this change, or
> can you apply the change suggested by Alan?

I do not hand-edit patches, sorry. It does not scale, please resend.

greg k-h

2019-06-18 22:46:32

by Marcos Paulo de Souza

[permalink] [raw]
Subject: Re: [PATCH 2/2] usb: storage: scsiglue: Do not skip VPD if try_vpd_pages is set

On Tue, Jun 18, 2019 at 06:07:24PM +0200, Greg Kroah-Hartman wrote:
> On Tue, Jun 18, 2019 at 12:17:39PM -0300, Marcos Paulo de Souza wrote:
> > On Tue, Jun 18, 2019 at 09:48:01AM -0400, Alan Stern wrote:
> > > On Mon, 17 Jun 2019, Marcos Paulo de Souza wrote:
> > >
> > > > If BLIST_TRY_VPD_PAGES is set for a device, even for an USB, it should
> > > > be honored, so only set skip_vpd_pages is try_vpd_pages is not set.
> > > >
> > > > Signed-off-by: Marcos Paulo de Souza <[email protected]>
> > > > ---
> > > > drivers/usb/storage/scsiglue.c | 7 +++++--
> > > > 1 file changed, 5 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
> > > > index 59190d88fa9f..0a9520780771 100644
> > > > --- a/drivers/usb/storage/scsiglue.c
> > > > +++ b/drivers/usb/storage/scsiglue.c
> > > > @@ -195,8 +195,11 @@ static int slave_configure(struct scsi_device *sdev)
> > > > */
> > > > sdev->skip_ms_page_8 = 1;
> > > >
> > > > - /* Some devices don't handle VPD pages correctly */
> > > > - sdev->skip_vpd_pages = 1;
> > > > + /*
> > > > + * Some devices don't handle VPD pages correctly, so skip vpd
> > > > + * pages if not forced by SCSI layer.
> > > > + */
> > > > + sdev->skip_vpd_pages = sdev->try_vpd_pages == 0;
> > > >
> > > > /* Do not attempt to use REPORT SUPPORTED OPERATION CODES */
> > > > sdev->no_report_opcodes = 1;
> > >
> > > Acked-by: Alan Stern <[email protected]>
> > >
> > > Although I think it would be clearer to write:
> > >
> > > sdev->skip_vpd_pages = !sdev->try_vpd_pages;
> >
> > I agree. Greg, would you like me to send a v2 of this patch with this change, or
> > can you apply the change suggested by Alan?
>
> I do not hand-edit patches, sorry. It does not scale, please resend.

No problem, v2 just sent:
https://lore.kernel.org/linux-usb/[email protected]/T/#u

Thanks Alan for the quick review!

>
> greg k-h

2019-06-19 03:22:01

by Martin K. Petersen

[permalink] [raw]
Subject: Re: [PATCH 1/2] scsi: devinfo: BLIST_TRY_VPD_PAGES for SanDisk Cruzer Blade


Marcos,

> Currently, all USB devices skip VPD pages, even when the device
> supports them (SPC-3 and later), but some of them support VPD, like
> Cruzer Blade.

What's your confidence level wrt. all Cruzer Blades handling this
correctly? How many devices have you tested this change with?

--
Martin K. Petersen Oracle Linux Engineering

2019-06-19 09:45:44

by Marcos Paulo de Souza

[permalink] [raw]
Subject: Re: [PATCH 1/2] scsi: devinfo: BLIST_TRY_VPD_PAGES for SanDisk Cruzer Blade

On Tue, Jun 18, 2019 at 11:21:22PM -0400, Martin K. Petersen wrote:
>
> Marcos,
>
> > Currently, all USB devices skip VPD pages, even when the device
> > supports them (SPC-3 and later), but some of them support VPD, like
> > Cruzer Blade.
>
> What's your confidence level wrt. all Cruzer Blades handling this
> correctly? How many devices have you tested this change with?

I've tested three Cruzer Blades that I have at hand, and all of them have VPD
support, and also checked with a friend of mine that also have one. I can't say
about "all others" but so far, 4/4 devices that I tested have VPD. (They were all
SPC-3 or SPC-4 compliant).

>
> --
> Martin K. Petersen Oracle Linux Engineering

2019-06-19 12:03:54

by Marcos Paulo de Souza

[permalink] [raw]
Subject: Re: [PATCH 1/2] scsi: devinfo: BLIST_TRY_VPD_PAGES for SanDisk Cruzer Blade

On Wed, Jun 19, 2019 at 06:45:43AM -0300, Marcos Paulo de Souza wrote:
> On Tue, Jun 18, 2019 at 11:21:22PM -0400, Martin K. Petersen wrote:
> >
> > Marcos,
> >
> > > Currently, all USB devices skip VPD pages, even when the device
> > > supports them (SPC-3 and later), but some of them support VPD, like
> > > Cruzer Blade.
> >
> > What's your confidence level wrt. all Cruzer Blades handling this
> > correctly? How many devices have you tested this change with?
>
> I've tested three Cruzer Blades that I have at hand, and all of them have VPD
> support, and also checked with a friend of mine that also have one. I can't say
> about "all others" but so far, 4/4 devices that I tested have VPD. (They were all
> SPC-3 or SPC-4 compliant).
>

My first idea was to add a vendor:product mapping at SCSI layer, but so far I
haven't found one, so I added the model/vendor found by INQUIRY. Would it be
better to check for prod:vendor (as values, instead of the description)?

Thanks,
Marcos


> >
> > --
> > Martin K. Petersen Oracle Linux Engineering

2019-06-20 20:32:39

by Martin K. Petersen

[permalink] [raw]
Subject: Re: [PATCH 1/2] scsi: devinfo: BLIST_TRY_VPD_PAGES for SanDisk Cruzer Blade


Marcos,

>> What's your confidence level wrt. all Cruzer Blades handling this
>> correctly? How many devices have you tested this change with?
>
> I've tested three Cruzer Blades that I have at hand, and all of them
> have VPD support, and also checked with a friend of mine that also
> have one. I can't say about "all others" but so far, 4/4 devices that
> I tested have VPD. (They were all SPC-3 or SPC-4 compliant).

That's not a very large sample. However, SanDisk have traditionally been
pretty good wrt. spec compliance.

--
Martin K. Petersen Oracle Linux Engineering

2019-06-20 20:33:17

by Martin K. Petersen

[permalink] [raw]
Subject: Re: [PATCH 1/2] scsi: devinfo: BLIST_TRY_VPD_PAGES for SanDisk Cruzer Blade


Marcos,

> My first idea was to add a vendor:product mapping at SCSI layer, but
> so far I haven't found one, so I added the model/vendor found by
> INQUIRY. Would it be better to check for prod:vendor (as values,
> instead of the description)?

Your patch is functionally fine. I'm just trying to establish how risky
it is for me to pick it up.

--
Martin K. Petersen Oracle Linux Engineering

2019-07-03 00:40:38

by Marcos Paulo de Souza

[permalink] [raw]
Subject: Re: [PATCH 1/2] scsi: devinfo: BLIST_TRY_VPD_PAGES for SanDisk Cruzer Blade

On Thu, Jun 20, 2019 at 04:32:38PM -0400, Martin K. Petersen wrote:
>
> Marcos,
>
> > My first idea was to add a vendor:product mapping at SCSI layer, but
> > so far I haven't found one, so I added the model/vendor found by
> > INQUIRY. Would it be better to check for prod:vendor (as values,
> > instead of the description)?
>
> Your patch is functionally fine. I'm just trying to establish how risky
> it is for me to pick it up.

I've tried to find any official document about Cruzer Blade devices, stating
that all of them have at least SPC-3 to support VPD, but no luck so far :(

So feel free to ignore the patch if you think it's too risky.

Thanks,
Marcos

>
> --
> Martin K. Petersen Oracle Linux Engineering

2019-07-12 00:43:57

by Martin K. Petersen

[permalink] [raw]
Subject: Re: [PATCH 1/2] scsi: devinfo: BLIST_TRY_VPD_PAGES for SanDisk Cruzer Blade


Marcos,

> Currently, all USB devices skip VPD pages, even when the device
> supports them (SPC-3 and later), but some of them support VPD, like
> Cruzer Blade.

We'll try it and see what happens. As I mentioned, SanDisk have
traditionally been pretty good wrt. spec compliance.

--
Martin K. Petersen Oracle Linux Engineering