]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lsblk: Fall back to ID_SERIAL
authorSven Wiltink <swiltink@transip.nl>
Fri, 1 May 2020 14:35:40 +0000 (16:35 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 4 May 2020 09:21:01 +0000 (11:21 +0200)
In some cases ID_SERIAL_SHORT isn't provided by libudev, but ID_SERIAL
is. An example of this are virtio devices. See the output of udevadm
info:
P: /devices/pci0000:00/0000:00:06.0/virtio2/block/vdb
N: vdb
S: disk/by-id/virtio-08491434ee711d3420e9
S: disk/by-path/pci-0000:00:06.0
S: disk/by-path/virtio-pci-0000:00:06.0
E: DEVLINKS=/dev/disk/by-id/virtio-08491434ee711d3420e9 /dev/disk/by-path/pci-0000:00:06.0 /dev/disk/by-path/virtio-pci-0000:00:06.0
E: DEVNAME=/dev/vdb
E: DEVPATH=/devices/pci0000:00/0000:00:06.0/virtio2/block/vdb
E: DEVTYPE=disk
E: ID_PATH=pci-0000:00:06.0
E: ID_PATH_TAG=pci-0000_00_06_0
E: ID_SERIAL=08491434ee711d3420e9
E: MAJOR=252
E: MINOR=16
E: SUBSYSTEM=block
E: TAGS=:systemd:
E: USEC_INITIALIZED=1403804

[kzak@redhat.com: - add ID_SERIAL also to get_properties_by_file()]

Signed-off-by: Karel Zak <kzak@redhat.com>
misc-utils/lsblk-properties.c

index 6f41eacfd044e8a7ca21af450fdb35108c0e8a66..9e79be35339c9ebd2765422a584fb47122420783 100644 (file)
@@ -107,6 +107,8 @@ static struct lsblk_devprop *get_properties_by_udev(struct lsblk_device *ld)
                data = udev_device_get_property_value(dev, "ID_SCSI_SERIAL");
                if(!data)
                        data = udev_device_get_property_value(dev, "ID_SERIAL_SHORT");
+               if(!data)
+                       data = udev_device_get_property_value(dev, "ID_SERIAL");
                if (data)
                        prop->serial = xstrdup(data);
 
@@ -209,6 +211,7 @@ static struct lsblk_devprop *get_properties_by_file(struct lsblk_device *ld)
                else if (lookup(buf, "ID_WWN", &prop->wwn)) ;
                else if (lookup(buf, "ID_SCSI_SERIAL", &prop->serial)) ;
                else if (lookup(buf, "ID_SERIAL_SHORT", &prop->serial)) ;
+               else if (lookup(buf, "ID_SERIAL", &prop->serial)) ;
 
                /* lsblk specific */
                else if (lookup(buf, "MODE", &prop->mode)) ;