* [PATCH] scsi_lib: Decode T-10 vendor IDs
@ 2016-05-06 8:35 Hannes Reinecke
2016-05-09 3:37 ` Paul Mackerras
0 siblings, 1 reply; 2+ messages in thread
From: Hannes Reinecke @ 2016-05-06 8:35 UTC (permalink / raw)
To: Martin K. Petersen
Cc: Christoph Hellwig, Paul Mackerras, linux-scsi, Hannes Reinecke,
Hannes Reinecke
Some arrays / HBAs will only present T-10 vendor IDs, so we
should be decoding them, too.
Suggested-by: Paul Mackerras <paulus@ozlabs.org>
Signed-off-by: Hannes Reinecke <hare@suse.com>
---
drivers/scsi/scsi_lib.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index b920c5d..a6158f8 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -3064,6 +3064,7 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)
* - EUI-64 based 12-byte
* - NAA IEEE Registered
* - NAA IEEE Extended
+ * - T10 Vendor ID
* as longer descriptors reduce the likelyhood
* of identification clashes.
*/
@@ -3082,6 +3083,21 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)
goto next_desig;
switch (d[1] & 0xf) {
+ case 0x1:
+ /* T-10 Vendor ID */
+ if (cur_id_size > d[3])
+ break;
+ /* Prefer anything */
+ if (cur_id_type > 0x01)
+ break;
+ cur_id_size = d[3];
+ if (cur_id_size + 4 > id_len)
+ cur_id_size = id_len - 4;
+ cur_id_str = d + 4;
+ cur_id_type = d[1] & 0xf;
+ id_size = snprintf(id, id_len, "t10.%*pE",
+ cur_id_size, cur_id_str);
+ break;
case 0x2:
/* EUI-64 */
if (cur_id_size > d[3])
--
1.8.5.6
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] scsi_lib: Decode T-10 vendor IDs
2016-05-06 8:35 [PATCH] scsi_lib: Decode T-10 vendor IDs Hannes Reinecke
@ 2016-05-09 3:37 ` Paul Mackerras
0 siblings, 0 replies; 2+ messages in thread
From: Paul Mackerras @ 2016-05-09 3:37 UTC (permalink / raw)
To: Hannes Reinecke
Cc: Martin K. Petersen, Christoph Hellwig, linux-scsi,
Hannes Reinecke
On Fri, May 06, 2016 at 10:35:07AM +0200, Hannes Reinecke wrote:
> Some arrays / HBAs will only present T-10 vendor IDs, so we
> should be decoding them, too.
>
> Suggested-by: Paul Mackerras <paulus@ozlabs.org>
> Signed-off-by: Hannes Reinecke <hare@suse.com>
> ---
> drivers/scsi/scsi_lib.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index b920c5d..a6158f8 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -3064,6 +3064,7 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)
> * - EUI-64 based 12-byte
> * - NAA IEEE Registered
> * - NAA IEEE Extended
> + * - T10 Vendor ID
> * as longer descriptors reduce the likelyhood
> * of identification clashes.
> */
> @@ -3082,6 +3083,21 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)
> goto next_desig;
>
> switch (d[1] & 0xf) {
> + case 0x1:
> + /* T-10 Vendor ID */
> + if (cur_id_size > d[3])
> + break;
> + /* Prefer anything */
> + if (cur_id_type > 0x01)
> + break;
This doesn't work as desired because cur_id_type is initialized to
0xff. The test needs to be:
+ if (cur_id_type > 0x01 && cur_id_type != 0xff)
+ break;
With that change it works (and you could put my tested-by on it).
Thanks,
Paul.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-05-09 3:37 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-06 8:35 [PATCH] scsi_lib: Decode T-10 vendor IDs Hannes Reinecke
2016-05-09 3:37 ` Paul Mackerras
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).