← Back to team overview

curtin-dev team mailing list archive

[Merge] ~raharper/curtin:fix/block-discover-skip-invalid-wwn-serial into curtin:master

 

Ryan Harper has proposed merging ~raharper/curtin:fix/block-discover-skip-invalid-wwn-serial into curtin:master.

Commit message:
block-discover: ignore invalid id_serial/id_wwn values

When obtaining unique ids for identifying a block storage
device, block-discover looks for ID_WWN and ID_SERIAL values
and will use them in the rendered storage config.  In some cases
the value of these attributes may be invalid.  For example, some
consumer disks might have an invalid WWN number:

0x00000000000000000000

Curtin will also ignore empty values, like
ID_SERIAL='             '

Excluded ids will not be emitted in the final storage config.

LP: #1876848


Requested reviews:
  curtin developers (curtin-dev)
Related bugs:
  Bug #1876848 in subiquity (Ubuntu): "Installation of Focal on a linux raid consistently fails"
  https://bugs.launchpad.net/ubuntu/+source/subiquity/+bug/1876848

For more details, see:
https://code.launchpad.net/~raharper/curtin/+git/curtin/+merge/383547
-- 
Your team curtin developers is requested to review the proposed merge of ~raharper/curtin:fix/block-discover-skip-invalid-wwn-serial into curtin:master.
diff --git a/curtin/storage_config.py b/curtin/storage_config.py
index eccb96b..51efd82 100644
--- a/curtin/storage_config.py
+++ b/curtin/storage_config.py
@@ -664,6 +664,13 @@ class BlockdevParser(ProbertParser):
                 configs.append(entry)
         return (configs, errors)
 
+    def valid_id(self, id_value):
+        # reject wwn=0x0+
+        if id_value.lower().startswith('0x'):
+            return int(id_value, 16) > 0
+        # accept non-empty (removing whitspace) strings
+        return len(''.join(id_value.split())) > 0
+
     def get_unique_ids(self, blockdev):
         """ extract preferred ID_* keys for www and serial values.
 
@@ -679,7 +686,8 @@ class BlockdevParser(ProbertParser):
         for skey, id_keys in source_keys.items():
             for id_key in id_keys:
                 if id_key in blockdev and skey not in uniq:
-                    uniq[skey] = blockdev[id_key]
+                    if self.valid_id(blockdev[id_key]):
+                        uniq[skey] = blockdev[id_key]
 
         return uniq
 
diff --git a/tests/data/probert_storage_bogus_wwn.json b/tests/data/probert_storage_bogus_wwn.json
new file mode 100644
index 0000000..b3211fd
--- /dev/null
+++ b/tests/data/probert_storage_bogus_wwn.json
@@ -0,0 +1,1258 @@
+{
+    "filesystem": {
+        "/dev/sdc": {
+            "BOOT_SYSTEM_ID": "EL\\x20TORITO\\x20SPECIFICATION",
+            "LABEL": "Ubuntu-Server_20.04_LTS_amd64",
+            "LABEL_ENC": "Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
+            "TYPE": "iso9660",
+            "USAGE": "filesystem",
+            "UUID": "2020-04-23-08-02-07-00",
+            "UUID_ENC": "2020-04-23-08-02-07-00",
+            "VERSION": "Joliet Extension"
+        },
+        "/dev/sdc1": {
+            "BOOT_SYSTEM_ID": "EL\\x20TORITO\\x20SPECIFICATION",
+            "LABEL": "Ubuntu-Server_20.04_LTS_amd64",
+            "LABEL_ENC": "Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
+            "TYPE": "iso9660",
+            "USAGE": "filesystem",
+            "UUID": "2020-04-23-08-02-07-00",
+            "UUID_ENC": "2020-04-23-08-02-07-00",
+            "VERSION": "Joliet Extension"
+        },
+        "/dev/sdc2": {
+            "TYPE": "vfat",
+            "USAGE": "filesystem",
+            "UUID": "1AC3-20ED",
+            "UUID_ENC": "1AC3-20ED",
+            "VERSION": "FAT12"
+        },
+        "/dev/sdc3": {
+            "LABEL": "writable",
+            "LABEL_ENC": "writable",
+            "TYPE": "ext4",
+            "USAGE": "filesystem",
+            "UUID": "8bcd1ba9-a05d-4f66-b64a-2d9042753ee7",
+            "UUID_ENC": "8bcd1ba9-a05d-4f66-b64a-2d9042753ee7",
+            "VERSION": "1.0"
+        }
+    },
+    "dmcrypt": {},
+    "mount": [
+        {
+            "target": "/",
+            "source": "/cow",
+            "fstype": "overlay",
+            "options": "rw,relatime,lowerdir=/installer.squashfs:/filesystem.squashfs,upperdir=/cow/upper,workdir=/cow/work",
+            "children": [
+                {
+                    "target": "/sys",
+                    "source": "sysfs",
+                    "fstype": "sysfs",
+                    "options": "rw,nosuid,nodev,noexec,relatime",
+                    "children": [
+                        {
+                            "target": "/sys/kernel/security",
+                            "source": "securityfs",
+                            "fstype": "securityfs",
+                            "options": "rw,nosuid,nodev,noexec,relatime"
+                        },
+                        {
+                            "target": "/sys/fs/cgroup",
+                            "source": "tmpfs",
+                            "fstype": "tmpfs",
+                            "options": "ro,nosuid,nodev,noexec,mode=755",
+                            "children": [
+                                {
+                                    "target": "/sys/fs/cgroup/unified",
+                                    "source": "cgroup2",
+                                    "fstype": "cgroup2",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,nsdelegate"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/systemd",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,xattr,name=systemd"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/rdma",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,rdma"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/cpu,cpuacct",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,cpu,cpuacct"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/pids",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,pids"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/memory",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,memory"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/devices",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,devices"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/freezer",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,freezer"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/net_cls,net_prio",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,net_cls,net_prio"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/perf_event",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,perf_event"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/blkio",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,blkio"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/hugetlb",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,hugetlb"
+                                },
+                                {
+                                    "target": "/sys/fs/cgroup/cpuset",
+                                    "source": "cgroup",
+                                    "fstype": "cgroup",
+                                    "options": "rw,nosuid,nodev,noexec,relatime,cpuset"
+                                }
+                            ]
+                        },
+                        {
+                            "target": "/sys/fs/pstore",
+                            "source": "pstore",
+                            "fstype": "pstore",
+                            "options": "rw,nosuid,nodev,noexec,relatime"
+                        },
+                        {
+                            "target": "/sys/fs/bpf",
+                            "source": "none",
+                            "fstype": "bpf",
+                            "options": "rw,nosuid,nodev,noexec,relatime,mode=700"
+                        },
+                        {
+                            "target": "/sys/kernel/debug",
+                            "source": "debugfs",
+                            "fstype": "debugfs",
+                            "options": "rw,nosuid,nodev,noexec,relatime"
+                        },
+                        {
+                            "target": "/sys/kernel/tracing",
+                            "source": "tracefs",
+                            "fstype": "tracefs",
+                            "options": "rw,nosuid,nodev,noexec,relatime"
+                        },
+                        {
+                            "target": "/sys/kernel/config",
+                            "source": "configfs",
+                            "fstype": "configfs",
+                            "options": "rw,nosuid,nodev,noexec,relatime"
+                        },
+                        {
+                            "target": "/sys/fs/fuse/connections",
+                            "source": "fusectl",
+                            "fstype": "fusectl",
+                            "options": "rw,nosuid,nodev,noexec,relatime"
+                        }
+                    ]
+                },
+                {
+                    "target": "/proc",
+                    "source": "proc",
+                    "fstype": "proc",
+                    "options": "rw,nosuid,nodev,noexec,relatime",
+                    "children": [
+                        {
+                            "target": "/proc/sys/fs/binfmt_misc",
+                            "source": "systemd-1",
+                            "fstype": "autofs",
+                            "options": "rw,relatime,fd=28,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=17022"
+                        }
+                    ]
+                },
+                {
+                    "target": "/dev",
+                    "source": "udev",
+                    "fstype": "devtmpfs",
+                    "options": "rw,nosuid,noexec,relatime,size=16353256k,nr_inodes=4088314,mode=755",
+                    "children": [
+                        {
+                            "target": "/dev/pts",
+                            "source": "devpts",
+                            "fstype": "devpts",
+                            "options": "rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000"
+                        },
+                        {
+                            "target": "/dev/shm",
+                            "source": "tmpfs",
+                            "fstype": "tmpfs",
+                            "options": "rw,nosuid,nodev"
+                        },
+                        {
+                            "target": "/dev/hugepages",
+                            "source": "hugetlbfs",
+                            "fstype": "hugetlbfs",
+                            "options": "rw,relatime,pagesize=2M"
+                        },
+                        {
+                            "target": "/dev/mqueue",
+                            "source": "mqueue",
+                            "fstype": "mqueue",
+                            "options": "rw,nosuid,nodev,noexec,relatime"
+                        }
+                    ]
+                },
+                {
+                    "target": "/run",
+                    "source": "tmpfs",
+                    "fstype": "tmpfs",
+                    "options": "rw,nosuid,nodev,noexec,relatime,size=3279500k,mode=755",
+                    "children": [
+                        {
+                            "target": "/run/lock",
+                            "source": "tmpfs",
+                            "fstype": "tmpfs",
+                            "options": "rw,nosuid,nodev,noexec,relatime,size=5120k"
+                        }
+                    ]
+                },
+                {
+                    "target": "/cdrom",
+                    "source": "/dev/sdc1",
+                    "fstype": "iso9660",
+                    "options": "ro,noatime,nojoliet,check=s,map=n,blocksize=2048"
+                },
+                {
+                    "target": "/rofs",
+                    "source": "/dev/loop0",
+                    "fstype": "squashfs",
+                    "options": "ro,noatime"
+                },
+                {
+                    "target": "/var/log",
+                    "source": "/dev/disk/by-label/writable[/install-logs-2020-05-04.0/log]",
+                    "fstype": "ext4",
+                    "options": "rw,relatime"
+                },
+                {
+                    "target": "/var/crash",
+                    "source": "/dev/disk/by-label/writable[/install-logs-2020-05-04.0/crash]",
+                    "fstype": "ext4",
+                    "options": "rw,relatime"
+                },
+                {
+                    "target": "/usr/lib/modules",
+                    "source": "/dev/loop2",
+                    "fstype": "squashfs",
+                    "options": "ro,relatime"
+                },
+                {
+                    "target": "/media/filesystem",
+                    "source": "/dev/loop0",
+                    "fstype": "squashfs",
+                    "options": "ro,relatime"
+                },
+                {
+                    "target": "/tmp",
+                    "source": "tmpfs",
+                    "fstype": "tmpfs",
+                    "options": "rw,nosuid,nodev,relatime"
+                },
+                {
+                    "target": "/snap/snapd/7264",
+                    "source": "/dev/loop3",
+                    "fstype": "squashfs",
+                    "options": "ro,nodev,relatime"
+                },
+                {
+                    "target": "/snap/core18/1705",
+                    "source": "/dev/loop4",
+                    "fstype": "squashfs",
+                    "options": "ro,nodev,relatime"
+                },
+                {
+                    "target": "/snap/subiquity/1772",
+                    "source": "/dev/loop5",
+                    "fstype": "squashfs",
+                    "options": "ro,nodev,relatime"
+                }
+            ]
+        }
+    ],
+    "multipath": {
+        "paths": [
+            {
+                "device": "nvme0n1",
+                "serial": "S4EVNJ0N203359W     ",
+                "multipath": "[orphan]",
+                "host_wwnn": "[undef]",
+                "target_wwnn": "[undef]",
+                "host_wwpn": "[undef]",
+                "target_wwpn": "[undef]",
+                "host_adapter": "[undef]"
+            },
+            {
+                "device": "sda",
+                "serial": "13207907000097410026",
+                "multipath": "[orphan]",
+                "host_wwnn": "[undef]",
+                "target_wwnn": "ata-1.00",
+                "host_wwpn": "[undef]",
+                "target_wwpn": "[undef]",
+                "host_adapter": "[undef]"
+            },
+            {
+                "device": "sdb",
+                "serial": "1320790700009741003D",
+                "multipath": "[orphan]",
+                "host_wwnn": "[undef]",
+                "target_wwnn": "ata-2.00",
+                "host_wwpn": "[undef]",
+                "target_wwpn": "[undef]",
+                "host_adapter": "[undef]"
+            }
+        ]
+    },
+    "lvm": {},
+    "dasd": {},
+    "raid": {
+        "/dev/md127": {
+            "DEVLINKS": "/dev/md/ubuntu-server:0 /dev/disk/by-id/md-name-ubuntu-server:0 /dev/disk/by-id/md-uuid-079fa971:c86dcd37:05c54ec1:b343dc99",
+            "DEVNAME": "/dev/md127",
+            "DEVPATH": "/devices/virtual/block/md127",
+            "DEVTYPE": "disk",
+            "MAJOR": "9",
+            "MD_DEVICES": "2",
+            "MD_DEVICE_ev_sda2_DEV": "/dev/sda2",
+            "MD_DEVICE_ev_sda2_ROLE": "0",
+            "MD_DEVICE_ev_sdb2_DEV": "/dev/sdb2",
+            "MD_DEVICE_ev_sdb2_ROLE": "1",
+            "MD_DEVNAME": "ubuntu-server:0",
+            "MD_LEVEL": "raid1",
+            "MD_METADATA": "1.2",
+            "MD_NAME": "ubuntu-server:0",
+            "MD_UUID": "079fa971:c86dcd37:05c54ec1:b343dc99",
+            "MINOR": "127",
+            "SUBSYSTEM": "block",
+            "SYSTEMD_WANTS": "mdmonitor.service",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "1083467",
+            "raidlevel": "raid1",
+            "devices": [
+                "/dev/sda2",
+                "/dev/sdb2"
+            ],
+            "spare_devices": []
+        }
+    },
+    "zfs": {
+        "zpools": {}
+    },
+    "blockdev": {
+        "/dev/sdc": {
+            "DEVLINKS": "/dev/disk/by-uuid/2020-04-23-08-02-07-00 /dev/disk/by-path/pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0 /dev/disk/by-id/usb-Generic_Flash_Disk_72FFA457-0:0 /dev/disk/by-label/Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
+            "DEVNAME": "/dev/sdc",
+            "DEVPATH": "/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/host6/target6:0:0/6:0:0:0/block/sdc",
+            "DEVTYPE": "disk",
+            "ID_BUS": "usb",
+            "ID_FS_BOOT_SYSTEM_ID": "EL\\x20TORITO\\x20SPECIFICATION",
+            "ID_FS_LABEL": "Ubuntu-Server_20.04_LTS_amd64",
+            "ID_FS_LABEL_ENC": "Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
+            "ID_FS_TYPE": "iso9660",
+            "ID_FS_USAGE": "filesystem",
+            "ID_FS_UUID": "2020-04-23-08-02-07-00",
+            "ID_FS_UUID_ENC": "2020-04-23-08-02-07-00",
+            "ID_FS_VERSION": "Joliet Extension",
+            "ID_INSTANCE": "0:0",
+            "ID_MODEL": "Flash_Disk",
+            "ID_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
+            "ID_MODEL_ID": "6387",
+            "ID_PART_TABLE_TYPE": "dos",
+            "ID_PART_TABLE_UUID": "36b64baf",
+            "ID_PATH": "pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0",
+            "ID_PATH_TAG": "pci-0000_00_14_0-usb-0_11_1_0-scsi-0_0_0_0",
+            "ID_REVISION": "8.07",
+            "ID_SCSI": "1",
+            "ID_SCSI_INQUIRY": "1",
+            "ID_SERIAL": "Generic_Flash_Disk_72FFA457-0:0",
+            "ID_SERIAL_SHORT": "72FFA457",
+            "ID_TYPE": "disk",
+            "ID_USB_DRIVER": "usb-storage",
+            "ID_USB_INTERFACES": ":080650:",
+            "ID_USB_INTERFACE_NUM": "00",
+            "ID_VENDOR": "Generic",
+            "ID_VENDOR_ENC": "Generic\\x20",
+            "ID_VENDOR_ID": "058f",
+            "MAJOR": "8",
+            "MINOR": "32",
+            "MPATH_SBIN_PATH": "/sbin",
+            "SCSI_MODEL": "Flash_Disk",
+            "SCSI_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
+            "SCSI_REVISION": "8.07",
+            "SCSI_TPGS": "0",
+            "SCSI_TYPE": "disk",
+            "SCSI_VENDOR": "Generic",
+            "SCSI_VENDOR_ENC": "Generic\\x20",
+            "SUBSYSTEM": "block",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "2376183",
+            "attrs": {
+                "alignment_offset": "0",
+                "bdi": null,
+                "capability": "51",
+                "dev": "8:32",
+                "device": null,
+                "discard_alignment": "0",
+                "events": "media_change",
+                "events_async": "",
+                "events_poll_msecs": "-1",
+                "ext_range": "256",
+                "hidden": "0",
+                "inflight": "       0        0",
+                "range": "16",
+                "removable": "1",
+                "ro": "0",
+                "size": "33409990656",
+                "stat": "   15770       95  1885214    86569     1333     1088   284936   138030        0    40216   204400        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=8\nMINOR=32\nDEVNAME=sdc\nDEVTYPE=disk"
+            },
+            "partitiontable": {
+                "label": "dos",
+                "id": "0x36b64baf",
+                "device": "/dev/sdc",
+                "unit": "sectors",
+                "partitions": [
+                    {
+                        "node": "/dev/sdc1",
+                        "start": 0,
+                        "size": 1859584,
+                        "type": "0",
+                        "bootable": true
+                    },
+                    {
+                        "node": "/dev/sdc2",
+                        "start": 21052,
+                        "size": 7936,
+                        "type": "ef"
+                    },
+                    {
+                        "node": "/dev/sdc3",
+                        "start": 1859584,
+                        "size": 63394304,
+                        "type": "83"
+                    }
+                ]
+            }
+        },
+        "/dev/sdc1": {
+            "DEVLINKS": "/dev/disk/by-id/usb-Generic_Flash_Disk_72FFA457-0:0-part1 /dev/disk/by-partuuid/36b64baf-01 /dev/disk/by-uuid/2020-04-23-08-02-07-00 /dev/disk/by-path/pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0-part1 /dev/disk/by-label/Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
+            "DEVNAME": "/dev/sdc1",
+            "DEVPATH": "/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/host6/target6:0:0/6:0:0:0/block/sdc/sdc1",
+            "DEVTYPE": "partition",
+            "ID_BUS": "usb",
+            "ID_FS_BOOT_SYSTEM_ID": "EL\\x20TORITO\\x20SPECIFICATION",
+            "ID_FS_LABEL": "Ubuntu-Server_20.04_LTS_amd64",
+            "ID_FS_LABEL_ENC": "Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
+            "ID_FS_TYPE": "iso9660",
+            "ID_FS_USAGE": "filesystem",
+            "ID_FS_UUID": "2020-04-23-08-02-07-00",
+            "ID_FS_UUID_ENC": "2020-04-23-08-02-07-00",
+            "ID_FS_VERSION": "Joliet Extension",
+            "ID_INSTANCE": "0:0",
+            "ID_MODEL": "Flash_Disk",
+            "ID_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
+            "ID_MODEL_ID": "6387",
+            "ID_PART_ENTRY_DISK": "8:32",
+            "ID_PART_ENTRY_FLAGS": "0x80",
+            "ID_PART_ENTRY_NUMBER": "1",
+            "ID_PART_ENTRY_OFFSET": "0",
+            "ID_PART_ENTRY_SCHEME": "dos",
+            "ID_PART_ENTRY_SIZE": "1859584",
+            "ID_PART_ENTRY_TYPE": "0x0",
+            "ID_PART_ENTRY_UUID": "36b64baf-01",
+            "ID_PART_TABLE_TYPE": "dos",
+            "ID_PART_TABLE_UUID": "36b64baf",
+            "ID_PATH": "pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0",
+            "ID_PATH_TAG": "pci-0000_00_14_0-usb-0_11_1_0-scsi-0_0_0_0",
+            "ID_REVISION": "8.07",
+            "ID_SCSI": "1",
+            "ID_SCSI_INQUIRY": "1",
+            "ID_SERIAL": "Generic_Flash_Disk_72FFA457-0:0",
+            "ID_SERIAL_SHORT": "72FFA457",
+            "ID_TYPE": "disk",
+            "ID_USB_DRIVER": "usb-storage",
+            "ID_USB_INTERFACES": ":080650:",
+            "ID_USB_INTERFACE_NUM": "00",
+            "ID_VENDOR": "Generic",
+            "ID_VENDOR_ENC": "Generic\\x20",
+            "ID_VENDOR_ID": "058f",
+            "MAJOR": "8",
+            "MINOR": "33",
+            "PARTN": "1",
+            "SCSI_MODEL": "Flash_Disk",
+            "SCSI_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
+            "SCSI_REVISION": "8.07",
+            "SCSI_TPGS": "0",
+            "SCSI_TYPE": "disk",
+            "SCSI_VENDOR": "Generic",
+            "SCSI_VENDOR_ENC": "Generic\\x20",
+            "SUBSYSTEM": "block",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "13873530",
+            "attrs": {
+                "alignment_offset": "0",
+                "dev": "8:33",
+                "discard_alignment": "0",
+                "inflight": "       0        0",
+                "partition": "1",
+                "ro": "0",
+                "size": "952107008",
+                "start": "0",
+                "stat": "   15342       92  1866238    81581        0        0        0        0        0    34464    65564        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=8\nMINOR=33\nDEVNAME=sdc1\nDEVTYPE=partition\nPARTN=1"
+            },
+            "partitiontable": {
+                "label": "dos",
+                "id": "0x36b64baf",
+                "device": "/dev/sdc1",
+                "unit": "sectors",
+                "partitions": [
+                    {
+                        "node": "/dev/sdc1p1",
+                        "start": 0,
+                        "size": 1859584,
+                        "type": "0",
+                        "bootable": true
+                    },
+                    {
+                        "node": "/dev/sdc1p2",
+                        "start": 21052,
+                        "size": 7936,
+                        "type": "ef"
+                    },
+                    {
+                        "node": "/dev/sdc1p3",
+                        "start": 1859584,
+                        "size": 63394304,
+                        "type": "83"
+                    }
+                ]
+            }
+        },
+        "/dev/sdc2": {
+            "DEVLINKS": "/dev/disk/by-partuuid/36b64baf-02 /dev/disk/by-id/usb-Generic_Flash_Disk_72FFA457-0:0-part2 /dev/disk/by-path/pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0-part2 /dev/disk/by-uuid/1AC3-20ED",
+            "DEVNAME": "/dev/sdc2",
+            "DEVPATH": "/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/host6/target6:0:0/6:0:0:0/block/sdc/sdc2",
+            "DEVTYPE": "partition",
+            "ID_BUS": "usb",
+            "ID_FS_TYPE": "vfat",
+            "ID_FS_USAGE": "filesystem",
+            "ID_FS_UUID": "1AC3-20ED",
+            "ID_FS_UUID_ENC": "1AC3-20ED",
+            "ID_FS_VERSION": "FAT12",
+            "ID_INSTANCE": "0:0",
+            "ID_MODEL": "Flash_Disk",
+            "ID_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
+            "ID_MODEL_ID": "6387",
+            "ID_PART_ENTRY_DISK": "8:32",
+            "ID_PART_ENTRY_NUMBER": "2",
+            "ID_PART_ENTRY_OFFSET": "21052",
+            "ID_PART_ENTRY_SCHEME": "dos",
+            "ID_PART_ENTRY_SIZE": "7936",
+            "ID_PART_ENTRY_TYPE": "0xef",
+            "ID_PART_ENTRY_UUID": "36b64baf-02",
+            "ID_PART_TABLE_TYPE": "dos",
+            "ID_PART_TABLE_UUID": "36b64baf",
+            "ID_PATH": "pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0",
+            "ID_PATH_TAG": "pci-0000_00_14_0-usb-0_11_1_0-scsi-0_0_0_0",
+            "ID_REVISION": "8.07",
+            "ID_SCSI": "1",
+            "ID_SCSI_INQUIRY": "1",
+            "ID_SERIAL": "Generic_Flash_Disk_72FFA457-0:0",
+            "ID_SERIAL_SHORT": "72FFA457",
+            "ID_TYPE": "disk",
+            "ID_USB_DRIVER": "usb-storage",
+            "ID_USB_INTERFACES": ":080650:",
+            "ID_USB_INTERFACE_NUM": "00",
+            "ID_VENDOR": "Generic",
+            "ID_VENDOR_ENC": "Generic\\x20",
+            "ID_VENDOR_ID": "058f",
+            "MAJOR": "8",
+            "MINOR": "34",
+            "PARTN": "2",
+            "SCSI_MODEL": "Flash_Disk",
+            "SCSI_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
+            "SCSI_REVISION": "8.07",
+            "SCSI_TPGS": "0",
+            "SCSI_TYPE": "disk",
+            "SCSI_VENDOR": "Generic",
+            "SCSI_VENDOR_ENC": "Generic\\x20",
+            "SUBSYSTEM": "block",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "13544949",
+            "attrs": {
+                "alignment_offset": "0",
+                "dev": "8:34",
+                "discard_alignment": "0",
+                "inflight": "       0        0",
+                "partition": "2",
+                "ro": "0",
+                "size": "4063232",
+                "start": "21052",
+                "stat": "       0        0        0        0        0        0        0        0        0        0        0        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=8\nMINOR=34\nDEVNAME=sdc2\nDEVTYPE=partition\nPARTN=2"
+            },
+            "partitiontable": {
+                "label": "dos",
+                "id": "0x00000000",
+                "device": "/dev/sdc2",
+                "unit": "sectors",
+                "grain": "512",
+                "partitions": []
+            }
+        },
+        "/dev/sdc3": {
+            "DEVLINKS": "/dev/disk/by-partuuid/36b64baf-03 /dev/disk/by-id/usb-Generic_Flash_Disk_72FFA457-0:0-part3 /dev/disk/by-uuid/8bcd1ba9-a05d-4f66-b64a-2d9042753ee7 /dev/disk/by-label/writable /dev/disk/by-path/pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0-part3",
+            "DEVNAME": "/dev/sdc3",
+            "DEVPATH": "/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/host6/target6:0:0/6:0:0:0/block/sdc/sdc3",
+            "DEVTYPE": "partition",
+            "ID_BUS": "usb",
+            "ID_FS_LABEL": "writable",
+            "ID_FS_LABEL_ENC": "writable",
+            "ID_FS_TYPE": "ext4",
+            "ID_FS_USAGE": "filesystem",
+            "ID_FS_UUID": "8bcd1ba9-a05d-4f66-b64a-2d9042753ee7",
+            "ID_FS_UUID_ENC": "8bcd1ba9-a05d-4f66-b64a-2d9042753ee7",
+            "ID_FS_VERSION": "1.0",
+            "ID_INSTANCE": "0:0",
+            "ID_MODEL": "Flash_Disk",
+            "ID_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
+            "ID_MODEL_ID": "6387",
+            "ID_PART_ENTRY_DISK": "8:32",
+            "ID_PART_ENTRY_NUMBER": "3",
+            "ID_PART_ENTRY_OFFSET": "1859584",
+            "ID_PART_ENTRY_SCHEME": "dos",
+            "ID_PART_ENTRY_SIZE": "63394304",
+            "ID_PART_ENTRY_TYPE": "0x83",
+            "ID_PART_ENTRY_UUID": "36b64baf-03",
+            "ID_PART_TABLE_TYPE": "dos",
+            "ID_PART_TABLE_UUID": "36b64baf",
+            "ID_PATH": "pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0",
+            "ID_PATH_TAG": "pci-0000_00_14_0-usb-0_11_1_0-scsi-0_0_0_0",
+            "ID_REVISION": "8.07",
+            "ID_SCSI": "1",
+            "ID_SCSI_INQUIRY": "1",
+            "ID_SERIAL": "Generic_Flash_Disk_72FFA457-0:0",
+            "ID_SERIAL_SHORT": "72FFA457",
+            "ID_TYPE": "disk",
+            "ID_USB_DRIVER": "usb-storage",
+            "ID_USB_INTERFACES": ":080650:",
+            "ID_USB_INTERFACE_NUM": "00",
+            "ID_VENDOR": "Generic",
+            "ID_VENDOR_ENC": "Generic\\x20",
+            "ID_VENDOR_ID": "058f",
+            "MAJOR": "8",
+            "MINOR": "35",
+            "PARTN": "3",
+            "SCSI_MODEL": "Flash_Disk",
+            "SCSI_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
+            "SCSI_REVISION": "8.07",
+            "SCSI_TPGS": "0",
+            "SCSI_TYPE": "disk",
+            "SCSI_VENDOR": "Generic",
+            "SCSI_VENDOR_ENC": "Generic\\x20",
+            "SUBSYSTEM": "block",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "12691034",
+            "attrs": {
+                "alignment_offset": "0",
+                "dev": "8:35",
+                "discard_alignment": "0",
+                "inflight": "       0        0",
+                "partition": "3",
+                "ro": "0",
+                "size": "32457883648",
+                "start": "1859584",
+                "stat": "     211        3    10310     4443     1332     1088   284928   137320        0     5916   137836        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=8\nMINOR=35\nDEVNAME=sdc3\nDEVTYPE=partition\nPARTN=3"
+            }
+        },
+        "/dev/nvme0n1": {
+            "DEVLINKS": "/dev/disk/by-id/nvme-Samsung_SSD_970_EVO_Plus_500GB_S4EVNJ0N203359W /dev/disk/by-id/nvme-eui.0025385201404936 /dev/disk/by-path/pci-0000:04:00.0-nvme-1",
+            "DEVNAME": "/dev/nvme0n1",
+            "DEVPATH": "/devices/pci0000:00/0000:00:1c.4/0000:04:00.0/nvme/nvme0/nvme0n1",
+            "DEVTYPE": "disk",
+            "DM_MULTIPATH_DEVICE_PATH": "0",
+            "ID_MODEL": "Samsung SSD 970 EVO Plus 500GB",
+            "ID_PATH": "pci-0000:04:00.0-nvme-1",
+            "ID_PATH_TAG": "pci-0000_04_00_0-nvme-1",
+            "ID_REVISION": "2B2QEXM7",
+            "ID_SERIAL": "Samsung SSD 970 EVO Plus 500GB_S4EVNJ0N203359W",
+            "ID_SERIAL_SHORT": "S4EVNJ0N203359W",
+            "ID_WWN": "eui.0025385201404936",
+            "MAJOR": "259",
+            "MINOR": "0",
+            "MPATH_SBIN_PATH": "/sbin",
+            "SUBSYSTEM": "block",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "1075625",
+            "attrs": {
+                "alignment_offset": "0",
+                "bdi": null,
+                "capability": "50",
+                "dev": "259:0",
+                "device": null,
+                "discard_alignment": "0",
+                "eui": "00 25 38 52 01 40 49 36",
+                "events": "",
+                "events_async": "",
+                "events_poll_msecs": "-1",
+                "ext_range": "256",
+                "hidden": "0",
+                "inflight": "       0        0",
+                "nsid": "1",
+                "range": "0",
+                "removable": "0",
+                "ro": "0",
+                "size": "500107862016",
+                "stat": "     646        0    29360       93        0        0        0        0        0      172       28        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=259\nMINOR=0\nDEVNAME=nvme0n1\nDEVTYPE=disk",
+                "wwid": "eui.0025385201404936"
+            }
+        },
+        "/dev/sda": {
+            "DEVLINKS": "/dev/disk/by-id/scsi-30000000000000000 /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_13207907000097410026 /dev/disk/by-id/wwn-0x0000000000000000 /dev/disk/by-path/pci-0000:00:1f.2-ata-1 /dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_13207907000097410026 /dev/disk/by-id/ata-Corsair_Force_GS_13207907000097410026 /dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_13207907000097410026",
+            "DEVNAME": "/dev/sda",
+            "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda",
+            "DEVTYPE": "disk",
+            "DM_MULTIPATH_DEVICE_PATH": "0",
+            "ID_ATA": "1",
+            "ID_BUS": "ata",
+            "ID_MODEL": "Corsair_Force_GS",
+            "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "ID_PART_TABLE_TYPE": "gpt",
+            "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
+            "ID_PATH": "pci-0000:00:1f.2-ata-1",
+            "ID_PATH_TAG": "pci-0000_00_1f_2-ata-1",
+            "ID_REVISION": "A",
+            "ID_SCSI": "1",
+            "ID_SCSI_INQUIRY": "1",
+            "ID_SERIAL": "Corsair_Force_GS_13207907000097410026",
+            "ID_SERIAL_SHORT": "13207907000097410026",
+            "ID_TYPE": "disk",
+            "ID_VENDOR": "ATA",
+            "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "ID_WWN": "0x0000000000000000",
+            "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
+            "MAJOR": "8",
+            "MINOR": "0",
+            "MPATH_SBIN_PATH": "/sbin",
+            "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_13207907000097410026",
+            "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
+            "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_13207907000097410026",
+            "SCSI_IDENT_LUN_VENDOR": "13207907000097410026",
+            "SCSI_IDENT_SERIAL": "13207907000097410026",
+            "SCSI_MODEL": "Corsair_Force_GS",
+            "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "SCSI_REVISION": "A",
+            "SCSI_TPGS": "0",
+            "SCSI_TYPE": "disk",
+            "SCSI_VENDOR": "ATA",
+            "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "SUBSYSTEM": "block",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "1078655",
+            "attrs": {
+                "alignment_offset": "0",
+                "bdi": null,
+                "capability": "50",
+                "dev": "8:0",
+                "device": null,
+                "discard_alignment": "0",
+                "events": "",
+                "events_async": "",
+                "events_poll_msecs": "-1",
+                "ext_range": "256",
+                "hidden": "0",
+                "inflight": "       0        0",
+                "range": "16",
+                "removable": "0",
+                "ro": "0",
+                "size": "128035676160",
+                "stat": "     711        0    27630      117        1        0        1        0        0      248        0        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=8\nMINOR=0\nDEVNAME=sda\nDEVTYPE=disk"
+            },
+            "partitiontable": {
+                "label": "gpt",
+                "id": "F3254C46-A7DC-4A2B-8ED1-ACB53A05CE0A",
+                "device": "/dev/sda",
+                "unit": "sectors",
+                "firstlba": 34,
+                "lastlba": 250069646,
+                "partitions": [
+                    {
+                        "node": "/dev/sda1",
+                        "start": 2048,
+                        "size": 1,
+                        "type": "21686148-6449-6E6F-744E-656564454649",
+                        "uuid": "91F8E67C-5675-4B6B-B0C4-54B990FBC684",
+                        "name": "BIOS boot partition"
+                    },
+                    {
+                        "node": "/dev/sda2",
+                        "start": 4096,
+                        "size": 247463936,
+                        "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4",
+                        "uuid": "2942FC77-138E-4269-9850-9E80D0D1E13B",
+                        "name": "Linux filesystem"
+                    }
+                ]
+            }
+        },
+        "/dev/sda1": {
+            "DEVLINKS": "/dev/disk/by-id/ata-Corsair_Force_GS_13207907000097410026-part1 /dev/disk/by-id/wwn-0x0000000000000000-part1 /dev/disk/by-path/pci-0000:00:1f.2-ata-1-part1 /dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_13207907000097410026-part1 /dev/disk/by-partuuid/91f8e67c-5675-4b6b-b0c4-54b990fbc684 /dev/disk/by-partlabel/BIOS\\x20boot\\x20partition /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_13207907000097410026-part1 /dev/disk/by-id/scsi-30000000000000000-part1 /dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_13207907000097410026-part1",
+            "DEVNAME": "/dev/sda1",
+            "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1",
+            "DEVTYPE": "partition",
+            "DM_MULTIPATH_DEVICE_PATH": "0",
+            "ID_ATA": "1",
+            "ID_BUS": "ata",
+            "ID_MODEL": "Corsair_Force_GS",
+            "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "ID_PART_ENTRY_DISK": "8:0",
+            "ID_PART_ENTRY_NAME": "BIOS\\x20boot\\x20partition",
+            "ID_PART_ENTRY_NUMBER": "1",
+            "ID_PART_ENTRY_OFFSET": "2048",
+            "ID_PART_ENTRY_SCHEME": "gpt",
+            "ID_PART_ENTRY_SIZE": "1",
+            "ID_PART_ENTRY_TYPE": "21686148-6449-6e6f-744e-656564454649",
+            "ID_PART_ENTRY_UUID": "91f8e67c-5675-4b6b-b0c4-54b990fbc684",
+            "ID_PART_TABLE_TYPE": "gpt",
+            "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
+            "ID_PATH": "pci-0000:00:1f.2-ata-1",
+            "ID_PATH_TAG": "pci-0000_00_1f_2-ata-1",
+            "ID_REVISION": "A",
+            "ID_SCSI": "1",
+            "ID_SCSI_INQUIRY": "1",
+            "ID_SERIAL": "Corsair_Force_GS_13207907000097410026",
+            "ID_SERIAL_SHORT": "13207907000097410026",
+            "ID_TYPE": "disk",
+            "ID_VENDOR": "ATA",
+            "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "ID_WWN": "0x0000000000000000",
+            "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
+            "MAJOR": "8",
+            "MINOR": "1",
+            "PARTN": "1",
+            "PARTNAME": "BIOS boot partition",
+            "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_13207907000097410026",
+            "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
+            "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_13207907000097410026",
+            "SCSI_IDENT_LUN_VENDOR": "13207907000097410026",
+            "SCSI_IDENT_SERIAL": "13207907000097410026",
+            "SCSI_MODEL": "Corsair_Force_GS",
+            "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "SCSI_REVISION": "A",
+            "SCSI_TPGS": "0",
+            "SCSI_TYPE": "disk",
+            "SCSI_VENDOR": "ATA",
+            "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "SUBSYSTEM": "block",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "1081180",
+            "attrs": {
+                "alignment_offset": "0",
+                "dev": "8:1",
+                "discard_alignment": "0",
+                "inflight": "       0        0",
+                "partition": "1",
+                "ro": "0",
+                "size": "512",
+                "start": "2048",
+                "stat": "      12        0       26        7        0        0        0        0        0       44        0        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=8\nMINOR=1\nDEVNAME=sda1\nDEVTYPE=partition\nPARTN=1\nPARTNAME=BIOS boot partition"
+            }
+        },
+        "/dev/sda2": {
+            "DEVLINKS": "/dev/disk/by-id/scsi-30000000000000000-part2 /dev/disk/by-partlabel/Linux\\x20filesystem /dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_13207907000097410026-part2 /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_13207907000097410026-part2 /dev/disk/by-id/ata-Corsair_Force_GS_13207907000097410026-part2 /dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_13207907000097410026-part2 /dev/disk/by-path/pci-0000:00:1f.2-ata-1-part2 /dev/disk/by-id/wwn-0x0000000000000000-part2 /dev/disk/by-partuuid/2942fc77-138e-4269-9850-9e80d0d1e13b",
+            "DEVNAME": "/dev/sda2",
+            "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2",
+            "DEVTYPE": "partition",
+            "DM_MULTIPATH_DEVICE_PATH": "0",
+            "ID_ATA": "1",
+            "ID_BUS": "ata",
+            "ID_FS_LABEL": "ubuntu-server:0",
+            "ID_FS_LABEL_ENC": "ubuntu-server:0",
+            "ID_FS_TYPE": "linux_raid_member",
+            "ID_FS_USAGE": "raid",
+            "ID_FS_UUID": "079fa971-c86d-cd37-05c5-4ec1b343dc99",
+            "ID_FS_UUID_ENC": "079fa971-c86d-cd37-05c5-4ec1b343dc99",
+            "ID_FS_UUID_SUB": "383e86fc-6472-2d62-e62b-bec2529b2c2d",
+            "ID_FS_UUID_SUB_ENC": "383e86fc-6472-2d62-e62b-bec2529b2c2d",
+            "ID_FS_VERSION": "1.2",
+            "ID_MODEL": "Corsair_Force_GS",
+            "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "ID_PART_ENTRY_DISK": "8:0",
+            "ID_PART_ENTRY_NAME": "Linux\\x20filesystem",
+            "ID_PART_ENTRY_NUMBER": "2",
+            "ID_PART_ENTRY_OFFSET": "4096",
+            "ID_PART_ENTRY_SCHEME": "gpt",
+            "ID_PART_ENTRY_SIZE": "247463936",
+            "ID_PART_ENTRY_TYPE": "0fc63daf-8483-4772-8e79-3d69d8477de4",
+            "ID_PART_ENTRY_UUID": "2942fc77-138e-4269-9850-9e80d0d1e13b",
+            "ID_PART_TABLE_TYPE": "gpt",
+            "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
+            "ID_PATH": "pci-0000:00:1f.2-ata-1",
+            "ID_PATH_TAG": "pci-0000_00_1f_2-ata-1",
+            "ID_REVISION": "A",
+            "ID_SCSI": "1",
+            "ID_SCSI_INQUIRY": "1",
+            "ID_SERIAL": "Corsair_Force_GS_13207907000097410026",
+            "ID_SERIAL_SHORT": "13207907000097410026",
+            "ID_TYPE": "disk",
+            "ID_VENDOR": "ATA",
+            "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "ID_WWN": "0x0000000000000000",
+            "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
+            "MAJOR": "8",
+            "MINOR": "2",
+            "PARTN": "2",
+            "PARTNAME": "Linux filesystem",
+            "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_13207907000097410026",
+            "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
+            "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_13207907000097410026",
+            "SCSI_IDENT_LUN_VENDOR": "13207907000097410026",
+            "SCSI_IDENT_SERIAL": "13207907000097410026",
+            "SCSI_MODEL": "Corsair_Force_GS",
+            "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "SCSI_REVISION": "A",
+            "SCSI_TPGS": "0",
+            "SCSI_TYPE": "disk",
+            "SCSI_VENDOR": "ATA",
+            "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "SUBSYSTEM": "block",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "1083076",
+            "attrs": {
+                "alignment_offset": "0",
+                "dev": "8:2",
+                "discard_alignment": "0",
+                "inflight": "       0        0",
+                "partition": "2",
+                "ro": "0",
+                "size": "126701535232",
+                "start": "4096",
+                "stat": "     600        0    21796       80        1        0        1        0        0      188        0        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=8\nMINOR=2\nDEVNAME=sda2\nDEVTYPE=partition\nPARTN=2\nPARTNAME=Linux filesystem"
+            }
+        },
+        "/dev/sdb": {
+            "DEVLINKS": "/dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_1320790700009741003D /dev/disk/by-id/ata-Corsair_Force_GS_1320790700009741003D /dev/disk/by-id/wwn-0x0000000000000000 /dev/disk/by-id/scsi-30000000000000000 /dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_1320790700009741003D /dev/disk/by-path/pci-0000:00:1f.2-ata-2 /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_1320790700009741003D",
+            "DEVNAME": "/dev/sdb",
+            "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb",
+            "DEVTYPE": "disk",
+            "DM_MULTIPATH_DEVICE_PATH": "0",
+            "ID_ATA": "1",
+            "ID_BUS": "ata",
+            "ID_MODEL": "Corsair_Force_GS",
+            "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "ID_PART_TABLE_TYPE": "gpt",
+            "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
+            "ID_PATH": "pci-0000:00:1f.2-ata-2",
+            "ID_PATH_TAG": "pci-0000_00_1f_2-ata-2",
+            "ID_REVISION": "A",
+            "ID_SCSI": "1",
+            "ID_SCSI_INQUIRY": "1",
+            "ID_SERIAL": "Corsair_Force_GS_1320790700009741003D",
+            "ID_SERIAL_SHORT": "1320790700009741003D",
+            "ID_TYPE": "disk",
+            "ID_VENDOR": "ATA",
+            "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "ID_WWN": "0x0000000000000000",
+            "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
+            "MAJOR": "8",
+            "MINOR": "16",
+            "MPATH_SBIN_PATH": "/sbin",
+            "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_1320790700009741003D",
+            "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
+            "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_1320790700009741003D",
+            "SCSI_IDENT_LUN_VENDOR": "1320790700009741003D",
+            "SCSI_IDENT_SERIAL": "1320790700009741003D",
+            "SCSI_MODEL": "Corsair_Force_GS",
+            "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "SCSI_REVISION": "A",
+            "SCSI_TPGS": "0",
+            "SCSI_TYPE": "disk",
+            "SCSI_VENDOR": "ATA",
+            "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "SUBSYSTEM": "block",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "1079071",
+            "attrs": {
+                "alignment_offset": "0",
+                "bdi": null,
+                "capability": "50",
+                "dev": "8:16",
+                "device": null,
+                "discard_alignment": "0",
+                "events": "",
+                "events_async": "",
+                "events_poll_msecs": "-1",
+                "ext_range": "256",
+                "hidden": "0",
+                "inflight": "       0        0",
+                "range": "16",
+                "removable": "0",
+                "ro": "0",
+                "size": "128035676160",
+                "stat": "     298        0    12529       72        1        0        1        0        0      188        0        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=8\nMINOR=16\nDEVNAME=sdb\nDEVTYPE=disk"
+            },
+            "partitiontable": {
+                "label": "gpt",
+                "id": "F3254C46-A7DC-4A2B-8ED1-ACB53A05CE0A",
+                "device": "/dev/sdb",
+                "unit": "sectors",
+                "firstlba": 34,
+                "lastlba": 250069646,
+                "partitions": [
+                    {
+                        "node": "/dev/sdb1",
+                        "start": 2048,
+                        "size": 1,
+                        "type": "21686148-6449-6E6F-744E-656564454649",
+                        "uuid": "D997F579-F242-4C88-B51A-87BF5111545D",
+                        "name": "BIOS boot partition"
+                    },
+                    {
+                        "node": "/dev/sdb2",
+                        "start": 4096,
+                        "size": 247463936,
+                        "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4",
+                        "uuid": "8B3C809D-54AC-4515-B719-CDE1F8A361B7",
+                        "name": "Linux filesystem"
+                    }
+                ]
+            }
+        },
+        "/dev/sdb1": {
+            "DEVLINKS": "/dev/disk/by-path/pci-0000:00:1f.2-ata-2-part1 /dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_1320790700009741003D-part1 /dev/disk/by-id/scsi-30000000000000000-part1 /dev/disk/by-id/ata-Corsair_Force_GS_1320790700009741003D-part1 /dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_1320790700009741003D-part1 /dev/disk/by-partlabel/BIOS\\x20boot\\x20partition /dev/disk/by-partuuid/d997f579-f242-4c88-b51a-87bf5111545d /dev/disk/by-id/wwn-0x0000000000000000-part1 /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_1320790700009741003D-part1",
+            "DEVNAME": "/dev/sdb1",
+            "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb/sdb1",
+            "DEVTYPE": "partition",
+            "DM_MULTIPATH_DEVICE_PATH": "0",
+            "ID_ATA": "1",
+            "ID_BUS": "ata",
+            "ID_MODEL": "Corsair_Force_GS",
+            "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "ID_PART_ENTRY_DISK": "8:16",
+            "ID_PART_ENTRY_NAME": "BIOS\\x20boot\\x20partition",
+            "ID_PART_ENTRY_NUMBER": "1",
+            "ID_PART_ENTRY_OFFSET": "2048",
+            "ID_PART_ENTRY_SCHEME": "gpt",
+            "ID_PART_ENTRY_SIZE": "1",
+            "ID_PART_ENTRY_TYPE": "21686148-6449-6e6f-744e-656564454649",
+            "ID_PART_ENTRY_UUID": "d997f579-f242-4c88-b51a-87bf5111545d",
+            "ID_PART_TABLE_TYPE": "gpt",
+            "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
+            "ID_PATH": "pci-0000:00:1f.2-ata-2",
+            "ID_PATH_TAG": "pci-0000_00_1f_2-ata-2",
+            "ID_REVISION": "A",
+            "ID_SCSI": "1",
+            "ID_SCSI_INQUIRY": "1",
+            "ID_SERIAL": "Corsair_Force_GS_1320790700009741003D",
+            "ID_SERIAL_SHORT": "1320790700009741003D",
+            "ID_TYPE": "disk",
+            "ID_VENDOR": "ATA",
+            "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "ID_WWN": "0x0000000000000000",
+            "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
+            "MAJOR": "8",
+            "MINOR": "17",
+            "PARTN": "1",
+            "PARTNAME": "BIOS boot partition",
+            "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_1320790700009741003D",
+            "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
+            "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_1320790700009741003D",
+            "SCSI_IDENT_LUN_VENDOR": "1320790700009741003D",
+            "SCSI_IDENT_SERIAL": "1320790700009741003D",
+            "SCSI_MODEL": "Corsair_Force_GS",
+            "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "SCSI_REVISION": "A",
+            "SCSI_TPGS": "0",
+            "SCSI_TYPE": "disk",
+            "SCSI_VENDOR": "ATA",
+            "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "SUBSYSTEM": "block",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "1082533",
+            "attrs": {
+                "alignment_offset": "0",
+                "dev": "8:17",
+                "discard_alignment": "0",
+                "inflight": "       0        0",
+                "partition": "1",
+                "ro": "0",
+                "size": "512",
+                "start": "2048",
+                "stat": "      12        0       26       11        0        0        0        0        0       48        0        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=8\nMINOR=17\nDEVNAME=sdb1\nDEVTYPE=partition\nPARTN=1\nPARTNAME=BIOS boot partition"
+            }
+        },
+        "/dev/sdb2": {
+            "DEVLINKS": "/dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_1320790700009741003D-part2 /dev/disk/by-path/pci-0000:00:1f.2-ata-2-part2 /dev/disk/by-partuuid/8b3c809d-54ac-4515-b719-cde1f8a361b7 /dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_1320790700009741003D-part2 /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_1320790700009741003D-part2 /dev/disk/by-id/scsi-30000000000000000-part2 /dev/disk/by-id/ata-Corsair_Force_GS_1320790700009741003D-part2 /dev/disk/by-id/wwn-0x0000000000000000-part2 /dev/disk/by-partlabel/Linux\\x20filesystem",
+            "DEVNAME": "/dev/sdb2",
+            "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb/sdb2",
+            "DEVTYPE": "partition",
+            "DM_MULTIPATH_DEVICE_PATH": "0",
+            "ID_ATA": "1",
+            "ID_BUS": "ata",
+            "ID_FS_LABEL": "ubuntu-server:0",
+            "ID_FS_LABEL_ENC": "ubuntu-server:0",
+            "ID_FS_TYPE": "linux_raid_member",
+            "ID_FS_USAGE": "raid",
+            "ID_FS_UUID": "079fa971-c86d-cd37-05c5-4ec1b343dc99",
+            "ID_FS_UUID_ENC": "079fa971-c86d-cd37-05c5-4ec1b343dc99",
+            "ID_FS_UUID_SUB": "df50ba68-38bd-acc2-3ad1-057980954294",
+            "ID_FS_UUID_SUB_ENC": "df50ba68-38bd-acc2-3ad1-057980954294",
+            "ID_FS_VERSION": "1.2",
+            "ID_MODEL": "Corsair_Force_GS",
+            "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "ID_PART_ENTRY_DISK": "8:16",
+            "ID_PART_ENTRY_NAME": "Linux\\x20filesystem",
+            "ID_PART_ENTRY_NUMBER": "2",
+            "ID_PART_ENTRY_OFFSET": "4096",
+            "ID_PART_ENTRY_SCHEME": "gpt",
+            "ID_PART_ENTRY_SIZE": "247463936",
+            "ID_PART_ENTRY_TYPE": "0fc63daf-8483-4772-8e79-3d69d8477de4",
+            "ID_PART_ENTRY_UUID": "8b3c809d-54ac-4515-b719-cde1f8a361b7",
+            "ID_PART_TABLE_TYPE": "gpt",
+            "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
+            "ID_PATH": "pci-0000:00:1f.2-ata-2",
+            "ID_PATH_TAG": "pci-0000_00_1f_2-ata-2",
+            "ID_REVISION": "A",
+            "ID_SCSI": "1",
+            "ID_SCSI_INQUIRY": "1",
+            "ID_SERIAL": "Corsair_Force_GS_1320790700009741003D",
+            "ID_SERIAL_SHORT": "1320790700009741003D",
+            "ID_TYPE": "disk",
+            "ID_VENDOR": "ATA",
+            "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "ID_WWN": "0x0000000000000000",
+            "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
+            "MAJOR": "8",
+            "MINOR": "18",
+            "PARTN": "2",
+            "PARTNAME": "Linux filesystem",
+            "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_1320790700009741003D",
+            "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
+            "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_1320790700009741003D",
+            "SCSI_IDENT_LUN_VENDOR": "1320790700009741003D",
+            "SCSI_IDENT_SERIAL": "1320790700009741003D",
+            "SCSI_MODEL": "Corsair_Force_GS",
+            "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
+            "SCSI_REVISION": "A",
+            "SCSI_TPGS": "0",
+            "SCSI_TYPE": "disk",
+            "SCSI_VENDOR": "ATA",
+            "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+            "SUBSYSTEM": "block",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "1103395",
+            "attrs": {
+                "alignment_offset": "0",
+                "dev": "8:18",
+                "discard_alignment": "0",
+                "inflight": "       0        0",
+                "partition": "2",
+                "ro": "0",
+                "size": "126701535232",
+                "start": "4096",
+                "stat": "     187        0     6695       31        1        0        1        0        0      140        0        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=8\nMINOR=18\nDEVNAME=sdb2\nDEVTYPE=partition\nPARTN=2\nPARTNAME=Linux filesystem"
+            }
+        },
+        "/dev/md127": {
+            "DEVLINKS": "/dev/md/ubuntu-server:0 /dev/disk/by-id/md-name-ubuntu-server:0 /dev/disk/by-id/md-uuid-079fa971:c86dcd37:05c54ec1:b343dc99",
+            "DEVNAME": "/dev/md127",
+            "DEVPATH": "/devices/virtual/block/md127",
+            "DEVTYPE": "disk",
+            "MAJOR": "9",
+            "MD_DEVICES": "2",
+            "MD_DEVICE_ev_sda2_DEV": "/dev/sda2",
+            "MD_DEVICE_ev_sda2_ROLE": "0",
+            "MD_DEVICE_ev_sdb2_DEV": "/dev/sdb2",
+            "MD_DEVICE_ev_sdb2_ROLE": "1",
+            "MD_DEVNAME": "ubuntu-server:0",
+            "MD_LEVEL": "raid1",
+            "MD_METADATA": "1.2",
+            "MD_NAME": "ubuntu-server:0",
+            "MD_UUID": "079fa971:c86dcd37:05c54ec1:b343dc99",
+            "MINOR": "127",
+            "SUBSYSTEM": "block",
+            "SYSTEMD_WANTS": "mdmonitor.service",
+            "TAGS": ":systemd:",
+            "USEC_INITIALIZED": "1083467",
+            "attrs": {
+                "alignment_offset": "0",
+                "bdi": null,
+                "capability": "50",
+                "dev": "9:127",
+                "discard_alignment": "0",
+                "events": "",
+                "events_async": "",
+                "events_poll_msecs": "-1",
+                "ext_range": "256",
+                "hidden": "0",
+                "inflight": "       0        0",
+                "range": "1",
+                "removable": "0",
+                "ro": "0",
+                "size": "126633377792",
+                "stat": "     619        0    26848        0        0        0        0        0        0        0        0        0        0        0        0",
+                "subsystem": "block",
+                "uevent": "MAJOR=9\nMINOR=127\nDEVNAME=md127\nDEVTYPE=disk"
+            }
+        }
+    },
+    "bcache": {
+        "backing": {},
+        "caching": {}
+    }
+}
diff --git a/tests/unittests/test_storage_config.py b/tests/unittests/test_storage_config.py
index 1f2b833..ecdc565 100644
--- a/tests/unittests/test_storage_config.py
+++ b/tests/unittests/test_storage_config.py
@@ -232,6 +232,34 @@ class TestBlockdevParser(CiTestCase):
         self.assertDictEqual(expected_ids,
                              self.bdevp.get_unique_ids(blockdev))
 
+    def test_get_unique_ids_ignores_empty_wwn_values(self):
+        """ BlockdevParser skips invalid ID_WWN_* values. """
+        self.bdevp.blockdev_data['/dev/sda'] = {
+            'DEVTYPE': 'disk',
+            'DEVNAME': 'sda',
+            'ID_SERIAL': 'Corsair_Force_GS_1785234921906',
+            'ID_SERIAL_SHORT': '1785234921906',
+            'ID_WWN': '0x0000000000000000',
+            'ID_WWN_WITH_EXTENSION': '0x0000000000000000',
+        }
+        blockdev = self.bdevp.blockdev_data['/dev/sda']
+        expected_ids = {'serial': 'Corsair_Force_GS_1785234921906'}
+        self.assertEqual(expected_ids,
+                         self.bdevp.get_unique_ids(blockdev))
+
+    def test_get_unique_ids_ignores_empty_serial_values(self):
+        """ BlockdevParser skips invalid ID_SERIAL_* values. """
+        self.bdevp.blockdev_data['/dev/sda'] = {
+            'DEVTYPE': 'disk',
+            'DEVNAME': 'sda',
+            'ID_SERIAL': '                      ',
+            'ID_SERIAL_SHORT': 'My Serial is My PassPort',
+        }
+        blockdev = self.bdevp.blockdev_data['/dev/sda']
+        expected_ids = {'serial': 'My Serial is My PassPort'}
+        self.assertEqual(expected_ids,
+                         self.bdevp.get_unique_ids(blockdev))
+
     def test_partition_parent_devname(self):
         """ BlockdevParser calculate partition parent name. """
         expected_parent = '/dev/sda'
@@ -984,5 +1012,22 @@ class TestExtractStorageConfig(CiTestCase):
         self.assertEqual(1, len(disks))
         self.assertEqual(expected_dict, disks[0])
 
+    @skipUnlessJsonSchema()
+    def test_blockdev_skips_invalid_wwn(self):
+        self.probe_data = _get_data('probert_storage_bogus_wwn.json')
+        extracted = storage_config.extract_storage_config(self.probe_data)
+        config = extracted['storage']['config']
+        disks = [cfg for cfg in config
+                 if cfg['type'] == 'disk' and cfg['path'] == '/dev/sda']
+        expected_dict = {
+            'id': 'disk-sda',
+            'path': '/dev/sda',
+            'ptable': 'gpt',
+            'serial': 'Corsair_Force_GS_13207907000097410026',
+            'type': 'disk',
+        }
+        self.assertEqual(1, len(disks))
+        self.assertEqual(expected_dict, disks[0])
+
 
 # vi: ts=4 expandtab syntax=python

Follow ups