public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] lsscsi: Fix truncation of 128-bit wwn
@ 2017-03-17 12:01 Vaibhav Jain
  2017-04-05 10:26 ` Gris Ge
  0 siblings, 1 reply; 2+ messages in thread
From: Vaibhav Jain @ 2017-03-17 12:01 UTC (permalink / raw)
  To: Doug Gilbert
  Cc: Vaibhav Jain, linux-scsi, Jon Grimm, Vipin K Parashar,
	Ping Tian Han, Gris Ge

Currently with '--wwn' flag, 128-bit wwns gets truncated and their
last 3 hex-digits missing. Below is a comparison of wwn reported by
lsscsi compared to wwn info at /dev/disk/by-id directory.

% lsscsi -w 0:0:5:0
[0:0:5:0]    disk    0x60050764008181941000000000000  /dev/sdad

% ls -l /dev/disk/by-id/wwn-*
lrwxrwxrwx. 1 root root 10 Oct 19 01:08 /dev/disk/by-id/wwn-0x600507640081819410000000000001b1 -> ../../sdad

To fix this, the patch increases the size of member wwn of struct
disk_wwn_node_entry to 35 chars to accommodate the extra '0x' prefix and
null terminator. Also the size of the buffer wwn_str thats used to
output wwn to the std-out is increased to match the corresponding
member of disk_wwn_node_entry.

Link: https://bugs.launchpad.net/ubuntu/+source/lsscsi/+bug/1636467
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1387263

Cc: Jon Grimm <jon.grimm@canonical.com>
Cc: Vipin K Parashar <vipin@linux.vnet.ibm.com>
Cc: Ping Tian Han <pthan@cn.ibm.com>
Cc: Gris Ge <fge@redhat.com>
Reported-by: Ping Tian Han <pthan@cn.ibm.com>
Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
---
Change-log:

v2..v1
- Introduces macro DISK_WWN_MAX_LEN that defines the maximum length of
  wwn read from devfs. (Gris Ge)
- Fix the indentation using space instead of '\t' (Gris Ge)
---
 src/lsscsi.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/lsscsi.c b/src/lsscsi.c
index 974b3f1..5d3c602 100644
--- a/src/lsscsi.c
+++ b/src/lsscsi.c
@@ -209,8 +209,17 @@ struct dev_node_list {
 };
 static struct dev_node_list* dev_node_listhead = NULL;
 
+/* WWN here is extracted from /dev/disk/by-id/wwn-<WWN> which is
+ * created by udev 60-persistent-storage.rules using ID_WWN_WITH_EXTENSION.
+ * The udev ID_WWN_WITH_EXTENSION is the combination of char wwn[17] and
+ * char wwn_vendor_extension[17] from struct scsi_id_device. This macro
+ * defines the maximum length of char-array needed to store this wwn including
+ * the null-terminator.
+ */
+#define DISK_WWN_MAX_LEN 35
+
 struct disk_wwn_node_entry {
-       char wwn[32];
+       char wwn[DISK_WWN_MAX_LEN]; /* '0x' + wwn<128-bit> + <null-terminator> */
        char disk_bname[12];
 };
 
@@ -2939,14 +2948,15 @@ one_sdev_entry(const char * dir_name, const char * devname,
                 }
                 if (wd[0]) {
                         char dev_node[LMAX_NAME] = "";
-                        char wwn_str[34];
+                        char wwn_str[DISK_WWN_MAX_LEN];
                         enum dev_type typ;
 
                         typ = (FT_BLOCK == non_sg.ft) ? BLK_DEV : CHR_DEV;
                         if (get_wwn) {
                                 if ((BLK_DEV == typ) &&
                                     get_disk_wwn(wd, wwn_str, sizeof(wwn_str)))
-                                        printf("%-30s  ", wwn_str);
+                                        printf("%-*s  ", DISK_WWN_MAX_LEN - 1,
+                                               wwn_str);
                                 else
                                         printf("                          "
                                                "      ");
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] lsscsi: Fix truncation of 128-bit wwn
  2017-03-17 12:01 [PATCH v2] lsscsi: Fix truncation of 128-bit wwn Vaibhav Jain
@ 2017-04-05 10:26 ` Gris Ge
  0 siblings, 0 replies; 2+ messages in thread
From: Gris Ge @ 2017-04-05 10:26 UTC (permalink / raw)
  To: Vaibhav Jain
  Cc: Doug Gilbert, linux-scsi, Jon Grimm, Vipin K Parashar,
	Ping Tian Han

[-- Attachment #1: Type: text/plain, Size: 493 bytes --]

On Fri, Mar 17, 2017 at 05:31:40PM +0530, Vaibhav Jain wrote:
> ---
> Change-log:
> 
> v2..v1
> - Introduces macro DISK_WWN_MAX_LEN that defines the maximum length of
>   wwn read from devfs. (Gris Ge)
> - Fix the indentation using space instead of '\t' (Gris Ge)
Patch looks good to me and tested:

    Old:
        [12:2:0:0]   disk    0x600605b00a5796201f9744221d0dc  /dev/sdb
    Fix:
        [12:2:0:0]   disk    0x600605b00a5796201f9744221d0dc495  /dev/sdb

-- 
Gris Ge

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-04-05 10:26 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-17 12:01 [PATCH v2] lsscsi: Fix truncation of 128-bit wwn Vaibhav Jain
2017-04-05 10:26 ` Gris Ge

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox