← Back to team overview

curtin-dev team mailing list archive

[Merge] ~dbungert/curtin:allow-unrecognized-fstype into curtin:master

 

Dan Bungert has proposed merging ~dbungert/curtin:allow-unrecognized-fstype into curtin:master.

Commit message:
Extend the 'format' schema for unknown fstypes

Permit arbitrary fstype values if preserve == true
Goal here is to enumerate more filesystem formats, ones that blkid
recognizes, but not claim in any way that we can create them.
This is useful for presenting existing filesystem partitions to users
in an installer, as otherwise they just get unhelpfully marked as
'unknown'.

Requested reviews:
  curtin developers (curtin-dev)

For more details, see:
https://code.launchpad.net/~dbungert/curtin/+git/curtin/+merge/406559
-- 
Your team curtin developers is requested to review the proposed merge of ~dbungert/curtin:allow-unrecognized-fstype into curtin:master.
diff --git a/curtin/block/schemas.py b/curtin/block/schemas.py
index 70de260..84a5279 100644
--- a/curtin/block/schemas.py
+++ b/curtin/block/schemas.py
@@ -29,11 +29,6 @@ definitions = {
         'type': 'string',
         'pattern': _uuid_pattern,
     },
-    'fstype': {
-        'type': 'string',
-        'oneOf': [
-            {'pattern': r'^__.*__$'},  # XXX: Accept vmtest values?
-            {'enum': _fstypes}]},
     'params': {
         'type': 'object',
         'patternProperties': {
@@ -187,11 +182,20 @@ FORMAT = {
         'preserve': {'$ref': '#/definitions/preserve'},
         'uuid': {'$ref': '#/definitions/uuid'},    # XXX: This is not used
         'type': {'const': 'format'},
-        'fstype': {'$ref': '#/definitions/fstype'},
+        'fstype': {'type': 'string'},
         'label': {'type': 'string'},
         'volume': {'$ref': '#/definitions/ref_id'},
         'extra_options': {'type': 'array', 'items': {'type': 'string'}},
-    }
+    },
+    'anyOf': [
+        # XXX: Accept vmtest values?
+        {'properties': {'fstype': {'pattern': r'^__.*__$'}}},
+        {'properties': {'fstype': {'enum': _fstypes}}},
+        {
+            'properties': {'preserve': {'enum': [True]}},
+            'required': ['preserve']  # this looks redundant but isn't
+        }
+    ]
 }
 LVM_PARTITION = {
     '$schema': 'http://json-schema.org/draft-07/schema#',
diff --git a/curtin/storage_config.py b/curtin/storage_config.py
index bc3bef2..405a1e2 100644
--- a/curtin/storage_config.py
+++ b/curtin/storage_config.py
@@ -855,21 +855,24 @@ class FilesystemParser(ProbertParser):
             volume_id = self.blockdev_to_id(blockdev_data)
 
             # don't capture non-filesystem usage
-            if data['USAGE'] != "filesystem":
+            # crypto is just a disguised filesystem
+            if data['USAGE'] not in ("filesystem", "crypto"):
                 continue
 
-            # ignore types that we cannot create
-            if data.get('TYPE') not in schemas._fstypes:
+            entry = self.asdict(volume_id, data)
+            if not entry:
                 continue
 
-            entry = self.asdict(volume_id, data)
-            if entry:
-                try:
-                    validate_config(entry)
-                except ValueError as e:
-                    errors.append(e)
-                    continue
-                configs.append(entry)
+            # allow types that we cannot create only if preserve == true
+            if data.get('TYPE') not in schemas._fstypes:
+                entry['preserve'] = True
+
+            try:
+                validate_config(entry)
+            except ValueError as e:
+                errors.append(e)
+                continue
+            configs.append(entry)
         return (configs, errors)
 
     def asdict(self, volume_id, fs_data):
diff --git a/tests/data/probert_storage_win10_bitlocker.json b/tests/data/probert_storage_win10_bitlocker.json
new file mode 100644
index 0000000..2016a56
--- /dev/null
+++ b/tests/data/probert_storage_win10_bitlocker.json
@@ -0,0 +1,1042 @@
+{
+    "network": {
+        "links": [
+            {
+                "addresses": [
+                    {
+                        "address": "127.0.0.1/8",
+                        "family": 2,
+                        "scope": "host",
+                        "source": "static"
+                    },
+                    {
+                        "address": "::1/128",
+                        "family": 10,
+                        "scope": "host",
+                        "source": "static"
+                    }
+                ],
+                "bond": {
+                    "is_master": false,
+                    "is_slave": false,
+                    "lacp_rate": null,
+                    "master": null,
+                    "mode": null,
+                    "slaves": [],
+                    "xmit_hash_policy": null
+                },
+                "bridge": {
+                    "interfaces": [],
+                    "is_bridge": false,
+                    "is_port": false,
+                    "options": {}
+                },
+                "netlink_data": {
+                    "arptype": 772,
+                    "family": 0,
+                    "flags": 65609,
+                    "ifindex": 1,
+                    "is_vlan": false,
+                    "name": "lo"
+                },
+                "type": "lo",
+                "udev_data": {
+                    "DEVPATH": "/devices/virtual/net/lo",
+                    "ID_MM_CANDIDATE": "1",
+                    "ID_NET_LINK_FILE": "/usr/lib/systemd/network/99-default.link",
+                    "ID_NET_NAME": "lo",
+                    "IFINDEX": "1",
+                    "INTERFACE": "lo",
+                    "SUBSYSTEM": "net",
+                    "USEC_INITIALIZED": "1082225",
+                    "attrs": {
+                        "addr_assign_type": "0",
+                        "addr_len": "6",
+                        "address": "00:00:00:00:00:00",
+                        "broadcast": "00:00:00:00:00:00",
+                        "carrier": "1",
+                        "carrier_changes": "0",
+                        "carrier_down_count": "0",
+                        "carrier_up_count": "0",
+                        "dev_id": "0x0",
+                        "dev_port": "0",
+                        "dormant": "0",
+                        "duplex": null,
+                        "flags": "0x9",
+                        "gro_flush_timeout": "0",
+                        "ifalias": "",
+                        "ifindex": "1",
+                        "iflink": "1",
+                        "link_mode": "0",
+                        "mtu": "65536",
+                        "name_assign_type": null,
+                        "napi_defer_hard_irqs": "0",
+                        "netdev_group": "0",
+                        "operstate": "unknown",
+                        "phys_port_id": null,
+                        "phys_port_name": null,
+                        "phys_switch_id": null,
+                        "proto_down": "0",
+                        "speed": null,
+                        "subsystem": "net",
+                        "testing": "0",
+                        "tx_queue_len": "1000",
+                        "type": "772",
+                        "uevent": "INTERFACE=lo\nIFINDEX=1"
+                    }
+                }
+            },
+            {
+                "addresses": [
+                    {
+                        "address": "192.168.122.130/24",
+                        "family": 2,
+                        "scope": "global",
+                        "source": "dhcp"
+                    },
+                    {
+                        "address": "fe80::5054:ff:fe83:cb5f/64",
+                        "family": 10,
+                        "scope": "link",
+                        "source": "static"
+                    }
+                ],
+                "bond": {
+                    "is_master": false,
+                    "is_slave": false,
+                    "lacp_rate": null,
+                    "master": null,
+                    "mode": null,
+                    "slaves": [],
+                    "xmit_hash_policy": null
+                },
+                "bridge": {
+                    "interfaces": [],
+                    "is_bridge": false,
+                    "is_port": false,
+                    "options": {}
+                },
+                "netlink_data": {
+                    "arptype": 1,
+                    "family": 0,
+                    "flags": 69699,
+                    "ifindex": 2,
+                    "is_vlan": false,
+                    "name": "enp1s0"
+                },
+                "type": "eth",
+                "udev_data": {
+                    "DEVPATH": "/devices/pci0000:00/0000:00:02.0/0000:01:00.0/net/enp1s0",
+                    "ID_BUS": "pci",
+                    "ID_MM_CANDIDATE": "1",
+                    "ID_MODEL_FROM_DATABASE": "82574L Gigabit Network Connection",
+                    "ID_MODEL_ID": "0x10d3",
+                    "ID_NET_DRIVER": "e1000e",
+                    "ID_NET_LINK_FILE": "/usr/lib/systemd/network/99-default.link",
+                    "ID_NET_NAME": "enp1s0",
+                    "ID_NET_NAME_MAC": "enx52540083cb5f",
+                    "ID_NET_NAME_PATH": "enp1s0",
+                    "ID_NET_NAMING_SCHEME": "v247",
+                    "ID_PATH": "pci-0000:01:00.0",
+                    "ID_PATH_TAG": "pci-0000_01_00_0",
+                    "ID_PCI_CLASS_FROM_DATABASE": "Network controller",
+                    "ID_PCI_SUBCLASS_FROM_DATABASE": "Ethernet controller",
+                    "ID_VENDOR_FROM_DATABASE": "Intel Corporation",
+                    "ID_VENDOR_ID": "0x8086",
+                    "IFINDEX": "2",
+                    "INTERFACE": "enp1s0",
+                    "SUBSYSTEM": "net",
+                    "SYSTEMD_ALIAS": "/sys/subsystem/net/devices/enp1s0",
+                    "TAGS": ":systemd:",
+                    "USEC_INITIALIZED": "1359667",
+                    "attrs": {
+                        "addr_assign_type": "0",
+                        "addr_len": "6",
+                        "address": "52:54:00:83:cb:5f",
+                        "broadcast": "ff:ff:ff:ff:ff:ff",
+                        "carrier": "1",
+                        "carrier_changes": "2",
+                        "carrier_down_count": "1",
+                        "carrier_up_count": "1",
+                        "dev_id": "0x0",
+                        "dev_port": "0",
+                        "device": null,
+                        "dormant": "0",
+                        "duplex": "full",
+                        "flags": "0x1003",
+                        "gro_flush_timeout": "0",
+                        "ifalias": "",
+                        "ifindex": "2",
+                        "iflink": "2",
+                        "link_mode": "0",
+                        "mtu": "1500",
+                        "name_assign_type": "4",
+                        "napi_defer_hard_irqs": "0",
+                        "netdev_group": "0",
+                        "operstate": "up",
+                        "phys_port_id": null,
+                        "phys_port_name": null,
+                        "phys_switch_id": null,
+                        "proto_down": "0",
+                        "speed": "1000",
+                        "subsystem": "net",
+                        "testing": "0",
+                        "tx_queue_len": "1000",
+                        "type": "1",
+                        "uevent": "INTERFACE=enp1s0\nIFINDEX=2"
+                    }
+                }
+            }
+        ],
+        "routes": [
+            {
+                "dst": "default",
+                "family": 2,
+                "ifindex": 2,
+                "table": 254,
+                "type": 1
+            },
+            {
+                "dst": "192.168.122.0/24",
+                "family": 2,
+                "ifindex": 2,
+                "table": 254,
+                "type": 1
+            },
+            {
+                "dst": "192.168.122.1",
+                "family": 2,
+                "ifindex": 2,
+                "table": 254,
+                "type": 1
+            },
+            {
+                "dst": "127.0.0.0",
+                "family": 2,
+                "ifindex": 1,
+                "table": 255,
+                "type": 3
+            },
+            {
+                "dst": "127.0.0.0/8",
+                "family": 2,
+                "ifindex": 1,
+                "table": 255,
+                "type": 2
+            },
+            {
+                "dst": "127.0.0.1",
+                "family": 2,
+                "ifindex": 1,
+                "table": 255,
+                "type": 2
+            },
+            {
+                "dst": "127.255.255.255",
+                "family": 2,
+                "ifindex": 1,
+                "table": 255,
+                "type": 3
+            },
+            {
+                "dst": "192.168.122.0",
+                "family": 2,
+                "ifindex": 2,
+                "table": 255,
+                "type": 3
+            },
+            {
+                "dst": "192.168.122.130",
+                "family": 2,
+                "ifindex": 2,
+                "table": 255,
+                "type": 2
+            },
+            {
+                "dst": "192.168.122.255",
+                "family": 2,
+                "ifindex": 2,
+                "table": 255,
+                "type": 3
+            },
+            {
+                "dst": "::1",
+                "family": 10,
+                "ifindex": 1,
+                "table": 254,
+                "type": 1
+            },
+            {
+                "dst": "fe80::/64",
+                "family": 10,
+                "ifindex": 2,
+                "table": 254,
+                "type": 1
+            },
+            {
+                "dst": "::1",
+                "family": 10,
+                "ifindex": 1,
+                "table": 255,
+                "type": 2
+            },
+            {
+                "dst": "fe80::5054:ff:fe83:cb5f",
+                "family": 10,
+                "ifindex": 2,
+                "table": 255,
+                "type": 2
+            },
+            {
+                "dst": "ff00::/8",
+                "family": 10,
+                "ifindex": 2,
+                "table": 255,
+                "type": 5
+            }
+        ]
+    },
+    "storage": {
+        "bcache": {
+            "backing": {},
+            "caching": {}
+        },
+        "blockdev": {
+            "/dev/sda": {
+                "DEVLINKS": "/dev/disk/by-id/scsi-1ATA_QEMU_HARDDISK_QM00001 /dev/disk/by-id/scsi-0ATA_QEMU_HARDDISK_QM00001 /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001 /dev/disk/by-path/pci-0000:00:1f.2-ata-1 /dev/disk/by-path/pci-0000:00:1f.2-ata-1.0",
+                "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": "QEMU_HARDDISK",
+                "ID_MODEL_ENC": "QEMU\\x20HARDDISK\\x20\\x20\\x20",
+                "ID_PART_TABLE_TYPE": "gpt",
+                "ID_PART_TABLE_UUID": "17edef9f-34bf-42c9-a15f-cee9aa2e1499",
+                "ID_PATH": "pci-0000:00:1f.2-ata-1.0",
+                "ID_PATH_ATA_COMPAT": "pci-0000:00:1f.2-ata-1",
+                "ID_PATH_TAG": "pci-0000_00_1f_2-ata-1_0",
+                "ID_REVISION": "2.5+",
+                "ID_SCSI": "1",
+                "ID_SCSI_SERIAL": "QM00001",
+                "ID_SERIAL": "QEMU_HARDDISK_QM00001",
+                "ID_SERIAL_SHORT": "QM00001",
+                "ID_TYPE": "disk",
+                "ID_VENDOR": "ATA",
+                "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+                "MAJOR": "8",
+                "MINOR": "0",
+                "MPATH_SBIN_PATH": "/sbin",
+                "SCSI_IDENT_LUN_ATA": "QEMU_HARDDISK_QM00001",
+                "SCSI_IDENT_LUN_T10": "ATA_QEMU_HARDDISK_QM00001",
+                "SCSI_IDENT_LUN_VENDOR": "QM00001",
+                "SCSI_IDENT_SERIAL": "QM00001",
+                "SCSI_MODEL": "QEMU_HARDDISK",
+                "SCSI_MODEL_ENC": "QEMU\\x20HARDDISK\\x20\\x20\\x20",
+                "SCSI_REVISION": "2.5+",
+                "SCSI_TPGS": "0",
+                "SCSI_TYPE": "disk",
+                "SCSI_VENDOR": "ATA",
+                "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+                "SUBSYSTEM": "block",
+                "TAGS": ":systemd:",
+                "USEC_INITIALIZED": "1859322",
+                "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": "85899345920",
+                    "stat": "    1178        0    51786      111        1        0        0        0        0      224      111        0        0        0        0        1        0",
+                    "subsystem": "block",
+                    "uevent": "MAJOR=8\nMINOR=0\nDEVNAME=sda\nDEVTYPE=disk"
+                }
+            },
+            "/dev/sda1": {
+                "DEVLINKS": "/dev/disk/by-id/scsi-1ATA_QEMU_HARDDISK_QM00001-part1 /dev/disk/by-uuid/54E4-27B3 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part1 /dev/disk/by-id/scsi-0ATA_QEMU_HARDDISK_QM00001-part1 /dev/disk/by-partuuid/9f8b9dd0-4c48-4e38-b1c6-d6c130a3b9b1 /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part1 /dev/disk/by-partlabel/EFI\\x20system\\x20partition /dev/disk/by-path/pci-0000:00:1f.2-ata-1-part1 /dev/disk/by-path/pci-0000:00:1f.2-ata-1.0-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_FS_TYPE": "vfat",
+                "ID_FS_USAGE": "filesystem",
+                "ID_FS_UUID": "54E4-27B3",
+                "ID_FS_UUID_ENC": "54E4-27B3",
+                "ID_FS_VERSION": "FAT32",
+                "ID_MODEL": "QEMU_HARDDISK",
+                "ID_MODEL_ENC": "QEMU\\x20HARDDISK\\x20\\x20\\x20",
+                "ID_PART_ENTRY_DISK": "8:0",
+                "ID_PART_ENTRY_FLAGS": "0x8000000000000000",
+                "ID_PART_ENTRY_NAME": "EFI\\x20system\\x20partition",
+                "ID_PART_ENTRY_NUMBER": "1",
+                "ID_PART_ENTRY_OFFSET": "2048",
+                "ID_PART_ENTRY_SCHEME": "gpt",
+                "ID_PART_ENTRY_SIZE": "204800",
+                "ID_PART_ENTRY_TYPE": "c12a7328-f81f-11d2-ba4b-00a0c93ec93b",
+                "ID_PART_ENTRY_UUID": "9f8b9dd0-4c48-4e38-b1c6-d6c130a3b9b1",
+                "ID_PART_TABLE_TYPE": "gpt",
+                "ID_PART_TABLE_UUID": "17edef9f-34bf-42c9-a15f-cee9aa2e1499",
+                "ID_PATH": "pci-0000:00:1f.2-ata-1.0",
+                "ID_PATH_ATA_COMPAT": "pci-0000:00:1f.2-ata-1",
+                "ID_PATH_TAG": "pci-0000_00_1f_2-ata-1_0",
+                "ID_REVISION": "2.5+",
+                "ID_SCSI": "1",
+                "ID_SCSI_SERIAL": "QM00001",
+                "ID_SERIAL": "QEMU_HARDDISK_QM00001",
+                "ID_SERIAL_SHORT": "QM00001",
+                "ID_TYPE": "disk",
+                "ID_VENDOR": "ATA",
+                "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+                "MAJOR": "8",
+                "MINOR": "1",
+                "PARTN": "1",
+                "PARTNAME": "EFI system partition",
+                "SCSI_IDENT_LUN_ATA": "QEMU_HARDDISK_QM00001",
+                "SCSI_IDENT_LUN_T10": "ATA_QEMU_HARDDISK_QM00001",
+                "SCSI_IDENT_LUN_VENDOR": "QM00001",
+                "SCSI_IDENT_SERIAL": "QM00001",
+                "SCSI_MODEL": "QEMU_HARDDISK",
+                "SCSI_MODEL_ENC": "QEMU\\x20HARDDISK\\x20\\x20\\x20",
+                "SCSI_REVISION": "2.5+",
+                "SCSI_TPGS": "0",
+                "SCSI_TYPE": "disk",
+                "SCSI_VENDOR": "ATA",
+                "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+                "SUBSYSTEM": "block",
+                "TAGS": ":systemd:",
+                "UDISKS_IGNORE": "1",
+                "USEC_INITIALIZED": "1865155",
+                "attrs": {
+                    "alignment_offset": "0",
+                    "dev": "8:1",
+                    "discard_alignment": "0",
+                    "inflight": "       0        0",
+                    "partition": "1",
+                    "ro": "0",
+                    "size": "104857600",
+                    "start": "2048",
+                    "stat": "     204        0    12069       17        0        0        0        0        0       84       17        0        0        0        0        0        0",
+                    "subsystem": "block",
+                    "uevent": "MAJOR=8\nMINOR=1\nDEVNAME=sda1\nDEVTYPE=partition\nPARTN=1\nPARTNAME=EFI system partition"
+                }
+            },
+            "/dev/sda2": {
+                "DEVLINKS": "/dev/disk/by-id/scsi-0ATA_QEMU_HARDDISK_QM00001-part2 /dev/disk/by-partlabel/Microsoft\\x20reserved\\x20partition /dev/disk/by-path/pci-0000:00:1f.2-ata-1.0-part2 /dev/disk/by-path/pci-0000:00:1f.2-ata-1-part2 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part2 /dev/disk/by-partuuid/55850c46-570d-4d08-9e84-1339e41b8746 /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part2 /dev/disk/by-id/scsi-1ATA_QEMU_HARDDISK_QM00001-part2",
+                "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_MODEL": "QEMU_HARDDISK",
+                "ID_MODEL_ENC": "QEMU\\x20HARDDISK\\x20\\x20\\x20",
+                "ID_PART_ENTRY_DISK": "8:0",
+                "ID_PART_ENTRY_FLAGS": "0x8000000000000000",
+                "ID_PART_ENTRY_NAME": "Microsoft\\x20reserved\\x20partition",
+                "ID_PART_ENTRY_NUMBER": "2",
+                "ID_PART_ENTRY_OFFSET": "206848",
+                "ID_PART_ENTRY_SCHEME": "gpt",
+                "ID_PART_ENTRY_SIZE": "32768",
+                "ID_PART_ENTRY_TYPE": "e3c9e316-0b5c-4db8-817d-f92df00215ae",
+                "ID_PART_ENTRY_UUID": "55850c46-570d-4d08-9e84-1339e41b8746",
+                "ID_PART_TABLE_TYPE": "gpt",
+                "ID_PART_TABLE_UUID": "17edef9f-34bf-42c9-a15f-cee9aa2e1499",
+                "ID_PATH": "pci-0000:00:1f.2-ata-1.0",
+                "ID_PATH_ATA_COMPAT": "pci-0000:00:1f.2-ata-1",
+                "ID_PATH_TAG": "pci-0000_00_1f_2-ata-1_0",
+                "ID_REVISION": "2.5+",
+                "ID_SCSI": "1",
+                "ID_SCSI_SERIAL": "QM00001",
+                "ID_SERIAL": "QEMU_HARDDISK_QM00001",
+                "ID_SERIAL_SHORT": "QM00001",
+                "ID_TYPE": "disk",
+                "ID_VENDOR": "ATA",
+                "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+                "MAJOR": "8",
+                "MINOR": "2",
+                "PARTN": "2",
+                "PARTNAME": "Microsoft reserved partition",
+                "SCSI_IDENT_LUN_ATA": "QEMU_HARDDISK_QM00001",
+                "SCSI_IDENT_LUN_T10": "ATA_QEMU_HARDDISK_QM00001",
+                "SCSI_IDENT_LUN_VENDOR": "QM00001",
+                "SCSI_IDENT_SERIAL": "QM00001",
+                "SCSI_MODEL": "QEMU_HARDDISK",
+                "SCSI_MODEL_ENC": "QEMU\\x20HARDDISK\\x20\\x20\\x20",
+                "SCSI_REVISION": "2.5+",
+                "SCSI_TPGS": "0",
+                "SCSI_TYPE": "disk",
+                "SCSI_VENDOR": "ATA",
+                "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+                "SUBSYSTEM": "block",
+                "TAGS": ":systemd:",
+                "UDISKS_IGNORE": "1",
+                "USEC_INITIALIZED": "1869681",
+                "attrs": {
+                    "alignment_offset": "0",
+                    "dev": "8:2",
+                    "discard_alignment": "0",
+                    "inflight": "       0        0",
+                    "partition": "2",
+                    "ro": "0",
+                    "size": "16777216",
+                    "start": "206848",
+                    "stat": "     296        0     8336       22        0        0        0        0        0       88       22        0        0        0        0        0        0",
+                    "subsystem": "block",
+                    "uevent": "MAJOR=8\nMINOR=2\nDEVNAME=sda2\nDEVTYPE=partition\nPARTN=2\nPARTNAME=Microsoft reserved partition"
+                }
+            },
+            "/dev/sda3": {
+                "DEVLINKS": "/dev/disk/by-partlabel/Basic\\x20data\\x20partition /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part3 /dev/disk/by-id/scsi-1ATA_QEMU_HARDDISK_QM00001-part3 /dev/disk/by-id/scsi-0ATA_QEMU_HARDDISK_QM00001-part3 /dev/disk/by-path/pci-0000:00:1f.2-ata-1-part3 /dev/disk/by-path/pci-0000:00:1f.2-ata-1.0-part3 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part3 /dev/disk/by-partuuid/695bcd76-922c-4194-9097-17355ed02893",
+                "DEVNAME": "/dev/sda3",
+                "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda3",
+                "DEVTYPE": "partition",
+                "DM_MULTIPATH_DEVICE_PATH": "0",
+                "ID_ATA": "1",
+                "ID_BUS": "ata",
+                "ID_FS_TYPE": "BitLocker",
+                "ID_FS_USAGE": "crypto",
+                "ID_FS_VERSION": "2",
+                "ID_MODEL": "QEMU_HARDDISK",
+                "ID_MODEL_ENC": "QEMU\\x20HARDDISK\\x20\\x20\\x20",
+                "ID_PART_ENTRY_DISK": "8:0",
+                "ID_PART_ENTRY_NAME": "Basic\\x20data\\x20partition",
+                "ID_PART_ENTRY_NUMBER": "3",
+                "ID_PART_ENTRY_OFFSET": "239616",
+                "ID_PART_ENTRY_SCHEME": "gpt",
+                "ID_PART_ENTRY_SIZE": "166486126",
+                "ID_PART_ENTRY_TYPE": "ebd0a0a2-b9e5-4433-87c0-68b6b72699c7",
+                "ID_PART_ENTRY_UUID": "695bcd76-922c-4194-9097-17355ed02893",
+                "ID_PART_TABLE_TYPE": "gpt",
+                "ID_PART_TABLE_UUID": "17edef9f-34bf-42c9-a15f-cee9aa2e1499",
+                "ID_PATH": "pci-0000:00:1f.2-ata-1.0",
+                "ID_PATH_ATA_COMPAT": "pci-0000:00:1f.2-ata-1",
+                "ID_PATH_TAG": "pci-0000_00_1f_2-ata-1_0",
+                "ID_REVISION": "2.5+",
+                "ID_SCSI": "1",
+                "ID_SCSI_SERIAL": "QM00001",
+                "ID_SERIAL": "QEMU_HARDDISK_QM00001",
+                "ID_SERIAL_SHORT": "QM00001",
+                "ID_TYPE": "disk",
+                "ID_VENDOR": "ATA",
+                "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+                "MAJOR": "8",
+                "MINOR": "3",
+                "PARTN": "3",
+                "PARTNAME": "Basic data partition",
+                "SCSI_IDENT_LUN_ATA": "QEMU_HARDDISK_QM00001",
+                "SCSI_IDENT_LUN_T10": "ATA_QEMU_HARDDISK_QM00001",
+                "SCSI_IDENT_LUN_VENDOR": "QM00001",
+                "SCSI_IDENT_SERIAL": "QM00001",
+                "SCSI_MODEL": "QEMU_HARDDISK",
+                "SCSI_MODEL_ENC": "QEMU\\x20HARDDISK\\x20\\x20\\x20",
+                "SCSI_REVISION": "2.5+",
+                "SCSI_TPGS": "0",
+                "SCSI_TYPE": "disk",
+                "SCSI_VENDOR": "ATA",
+                "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+                "SUBSYSTEM": "block",
+                "TAGS": ":systemd:",
+                "USEC_INITIALIZED": "1867565",
+                "attrs": {
+                    "alignment_offset": "0",
+                    "dev": "8:3",
+                    "discard_alignment": "0",
+                    "inflight": "       0        0",
+                    "partition": "3",
+                    "ro": "0",
+                    "size": "85240896512",
+                    "start": "239616",
+                    "stat": "     120        0     2212       16        0        0        0        0        0       56       16        0        0        0        0        0        0",
+                    "subsystem": "block",
+                    "uevent": "MAJOR=8\nMINOR=3\nDEVNAME=sda3\nDEVTYPE=partition\nPARTN=3\nPARTNAME=Basic data partition"
+                }
+            },
+            "/dev/sda4": {
+                "DEVLINKS": "/dev/disk/by-uuid/7448E57248E53410 /dev/disk/by-path/pci-0000:00:1f.2-ata-1-part4 /dev/disk/by-id/scsi-0ATA_QEMU_HARDDISK_QM00001-part4 /dev/disk/by-partuuid/9e09a65a-4ff5-4af1-9b2d-3b5010d0714c /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part4 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part4 /dev/disk/by-path/pci-0000:00:1f.2-ata-1.0-part4 /dev/disk/by-id/scsi-1ATA_QEMU_HARDDISK_QM00001-part4",
+                "DEVNAME": "/dev/sda4",
+                "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda4",
+                "DEVTYPE": "partition",
+                "DM_MULTIPATH_DEVICE_PATH": "0",
+                "ID_ATA": "1",
+                "ID_BUS": "ata",
+                "ID_FS_TYPE": "ntfs",
+                "ID_FS_USAGE": "filesystem",
+                "ID_FS_UUID": "7448E57248E53410",
+                "ID_FS_UUID_ENC": "7448E57248E53410",
+                "ID_MODEL": "QEMU_HARDDISK",
+                "ID_MODEL_ENC": "QEMU\\x20HARDDISK\\x20\\x20\\x20",
+                "ID_PART_ENTRY_DISK": "8:0",
+                "ID_PART_ENTRY_FLAGS": "0x8000000000000001",
+                "ID_PART_ENTRY_NUMBER": "4",
+                "ID_PART_ENTRY_OFFSET": "166727680",
+                "ID_PART_ENTRY_SCHEME": "gpt",
+                "ID_PART_ENTRY_SIZE": "1040384",
+                "ID_PART_ENTRY_TYPE": "de94bba4-06d1-4d40-a16a-bfd50179d6ac",
+                "ID_PART_ENTRY_UUID": "9e09a65a-4ff5-4af1-9b2d-3b5010d0714c",
+                "ID_PART_TABLE_TYPE": "gpt",
+                "ID_PART_TABLE_UUID": "17edef9f-34bf-42c9-a15f-cee9aa2e1499",
+                "ID_PATH": "pci-0000:00:1f.2-ata-1.0",
+                "ID_PATH_ATA_COMPAT": "pci-0000:00:1f.2-ata-1",
+                "ID_PATH_TAG": "pci-0000_00_1f_2-ata-1_0",
+                "ID_REVISION": "2.5+",
+                "ID_SCSI": "1",
+                "ID_SCSI_SERIAL": "QM00001",
+                "ID_SERIAL": "QEMU_HARDDISK_QM00001",
+                "ID_SERIAL_SHORT": "QM00001",
+                "ID_TYPE": "disk",
+                "ID_VENDOR": "ATA",
+                "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+                "MAJOR": "8",
+                "MINOR": "4",
+                "PARTN": "4",
+                "SCSI_IDENT_LUN_ATA": "QEMU_HARDDISK_QM00001",
+                "SCSI_IDENT_LUN_T10": "ATA_QEMU_HARDDISK_QM00001",
+                "SCSI_IDENT_LUN_VENDOR": "QM00001",
+                "SCSI_IDENT_SERIAL": "QM00001",
+                "SCSI_MODEL": "QEMU_HARDDISK",
+                "SCSI_MODEL_ENC": "QEMU\\x20HARDDISK\\x20\\x20\\x20",
+                "SCSI_REVISION": "2.5+",
+                "SCSI_TPGS": "0",
+                "SCSI_TYPE": "disk",
+                "SCSI_VENDOR": "ATA",
+                "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
+                "SUBSYSTEM": "block",
+                "TAGS": ":systemd:",
+                "UDISKS_IGNORE": "1",
+                "USEC_INITIALIZED": "1872214",
+                "attrs": {
+                    "alignment_offset": "0",
+                    "dev": "8:4",
+                    "discard_alignment": "0",
+                    "inflight": "       0        0",
+                    "partition": "4",
+                    "ro": "0",
+                    "size": "532676608",
+                    "start": "166727680",
+                    "stat": "     244        0    16632       29        0        0        0        0        0       72       29        0        0        0        0        0        0",
+                    "subsystem": "block",
+                    "uevent": "MAJOR=8\nMINOR=4\nDEVNAME=sda4\nDEVTYPE=partition\nPARTN=4"
+                }
+            },
+            "/dev/sr0": {
+                "DEVLINKS": "/dev/disk/by-path/pci-0000:00:1f.2-ata-2.0 /dev/dvd /dev/cdrom /dev/disk/by-path/pci-0000:00:1f.2-ata-2 /dev/disk/by-label/Ubuntu\\x20custom /dev/disk/by-id/ata-QEMU_DVD-ROM_QM00003 /dev/disk/by-id/scsi-0QEMU_QEMU_DVD-ROM_QM00003 /dev/disk/by-uuid/2021-07-11-10-08-42-00 /dev/disk/by-id/scsi-1ATA_QEMU_DVD-ROM_QM00003",
+                "DEVNAME": "/dev/sr0",
+                "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sr0",
+                "DEVTYPE": "disk",
+                "ID_ATA": "1",
+                "ID_BUS": "ata",
+                "ID_CDROM": "1",
+                "ID_CDROM_DVD": "1",
+                "ID_CDROM_MEDIA": "1",
+                "ID_CDROM_MEDIA_DVD": "1",
+                "ID_CDROM_MEDIA_SESSION_COUNT": "1",
+                "ID_CDROM_MEDIA_STATE": "complete",
+                "ID_CDROM_MEDIA_TRACK_COUNT": "1",
+                "ID_CDROM_MEDIA_TRACK_COUNT_DATA": "1",
+                "ID_CDROM_MRW": "1",
+                "ID_CDROM_MRW_W": "1",
+                "ID_FOR_SEAT": "block-pci-0000_00_1f_2-ata-2_0",
+                "ID_FS_BOOT_SYSTEM_ID": "EL\\x20TORITO\\x20SPECIFICATION",
+                "ID_FS_LABEL": "Ubuntu_custom",
+                "ID_FS_LABEL_ENC": "Ubuntu\\x20custom",
+                "ID_FS_TYPE": "iso9660",
+                "ID_FS_USAGE": "filesystem",
+                "ID_FS_UUID": "2021-07-11-10-08-42-00",
+                "ID_FS_UUID_ENC": "2021-07-11-10-08-42-00",
+                "ID_MODEL": "QEMU_DVD-ROM",
+                "ID_MODEL_ENC": "QEMU\\x20DVD-ROM\\x20\\x20\\x20\\x20",
+                "ID_PART_TABLE_TYPE": "dos",
+                "ID_PATH": "pci-0000:00:1f.2-ata-2.0",
+                "ID_PATH_ATA_COMPAT": "pci-0000:00:1f.2-ata-2",
+                "ID_PATH_TAG": "pci-0000_00_1f_2-ata-2_0",
+                "ID_REVISION": "2.5+",
+                "ID_SCSI": "1",
+                "ID_SERIAL": "QEMU_DVD-ROM_QM00003",
+                "ID_TYPE": "cd/dvd",
+                "ID_VENDOR": "QEMU",
+                "ID_VENDOR_ENC": "QEMU\\x20\\x20\\x20\\x20",
+                "MAJOR": "11",
+                "MINOR": "0",
+                "SCSI_IDENT_LUN_ATA": "QEMU_DVD-ROM_QM00003",
+                "SCSI_IDENT_LUN_T10": "ATA_QEMU_DVD-ROM_QM00003",
+                "SCSI_IDENT_LUN_VENDOR": "QM00003",
+                "SCSI_MODEL": "QEMU_DVD-ROM",
+                "SCSI_MODEL_ENC": "QEMU\\x20DVD-ROM\\x20\\x20\\x20\\x20",
+                "SCSI_REVISION": "2.5+",
+                "SCSI_TPGS": "0",
+                "SCSI_TYPE": "cd/dvd",
+                "SCSI_VENDOR": "QEMU",
+                "SCSI_VENDOR_ENC": "QEMU\\x20\\x20\\x20\\x20",
+                "SUBSYSTEM": "block",
+                "TAGS": ":seat:systemd:uaccess:",
+                "USEC_INITIALIZED": "2100445",
+                "attrs": {
+                    "alignment_offset": "0",
+                    "bdi": null,
+                    "capability": "119",
+                    "dev": "11:0",
+                    "device": null,
+                    "discard_alignment": "0",
+                    "events": "media_change eject_request",
+                    "events_async": "",
+                    "events_poll_msecs": "-1",
+                    "ext_range": "1",
+                    "hidden": "0",
+                    "inflight": "       0        0",
+                    "range": "1",
+                    "removable": "1",
+                    "ro": "0",
+                    "size": "1303957504",
+                    "stat": "   11868       44  2455445     1276        0        0        0        0        0     5060     1276        0        0        0        0        0        0",
+                    "subsystem": "block",
+                    "uevent": "MAJOR=11\nMINOR=0\nDEVNAME=sr0\nDEVTYPE=disk"
+                },
+                "partitiontable": {
+                    "device": "/dev/sr0",
+                    "id": "0x00000000",
+                    "label": "dos",
+                    "partitions": [
+                        {
+                            "bootable": true,
+                            "node": "/dev/sr0p1",
+                            "size": 2536024,
+                            "start": 64,
+                            "type": "83"
+                        },
+                        {
+                            "node": "/dev/sr0p2",
+                            "size": 10040,
+                            "start": 2536088,
+                            "type": "ef"
+                        }
+                    ],
+                    "sectorsize": 2048,
+                    "unit": "sectors"
+                }
+            }
+        },
+        "dasd": {},
+        "dmcrypt": {},
+        "filesystem": {
+            "/dev/sda1": {
+                "TYPE": "vfat",
+                "USAGE": "filesystem",
+                "UUID": "54E4-27B3",
+                "UUID_ENC": "54E4-27B3",
+                "VERSION": "FAT32"
+            },
+            "/dev/sda3": {
+                "TYPE": "BitLocker",
+                "USAGE": "crypto",
+                "VERSION": "2"
+            },
+            "/dev/sda4": {
+                "TYPE": "ntfs",
+                "USAGE": "filesystem",
+                "UUID": "7448E57248E53410",
+                "UUID_ENC": "7448E57248E53410"
+            },
+            "/dev/sr0": {
+                "BOOT_SYSTEM_ID": "EL\\x20TORITO\\x20SPECIFICATION",
+                "LABEL": "Ubuntu_custom",
+                "LABEL_ENC": "Ubuntu\\x20custom",
+                "TYPE": "iso9660",
+                "USAGE": "filesystem",
+                "UUID": "2021-07-11-10-08-42-00",
+                "UUID_ENC": "2021-07-11-10-08-42-00"
+            }
+        },
+        "lvm": {},
+        "mount": [
+            {
+                "children": [
+                    {
+                        "children": [
+                            {
+                                "fstype": "securityfs",
+                                "options": "rw,nosuid,nodev,noexec,relatime",
+                                "source": "securityfs",
+                                "target": "/sys/kernel/security"
+                            },
+                            {
+                                "children": [
+                                    {
+                                        "fstype": "cgroup2",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,nsdelegate",
+                                        "source": "cgroup2",
+                                        "target": "/sys/fs/cgroup/unified"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,xattr,name=systemd",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/systemd"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,hugetlb",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/hugetlb"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,devices",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/devices"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,net_cls,net_prio",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/net_cls,net_prio"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,blkio",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/blkio"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,pids",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/pids"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,cpu,cpuacct",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/cpu,cpuacct"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,memory",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/memory"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,rdma",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/rdma"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,perf_event",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/perf_event"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,cpuset",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/cpuset"
+                                    },
+                                    {
+                                        "fstype": "cgroup",
+                                        "options": "rw,nosuid,nodev,noexec,relatime,freezer",
+                                        "source": "cgroup",
+                                        "target": "/sys/fs/cgroup/freezer"
+                                    }
+                                ],
+                                "fstype": "tmpfs",
+                                "options": "ro,nosuid,nodev,noexec,size=4096k,nr_inodes=1024,mode=755,inode64",
+                                "source": "tmpfs",
+                                "target": "/sys/fs/cgroup"
+                            },
+                            {
+                                "fstype": "pstore",
+                                "options": "rw,nosuid,nodev,noexec,relatime",
+                                "source": "pstore",
+                                "target": "/sys/fs/pstore"
+                            },
+                            {
+                                "fstype": "efivarfs",
+                                "options": "rw,nosuid,nodev,noexec,relatime",
+                                "source": "efivarfs",
+                                "target": "/sys/firmware/efi/efivars"
+                            },
+                            {
+                                "fstype": "bpf",
+                                "options": "rw,nosuid,nodev,noexec,relatime,mode=700",
+                                "source": "none",
+                                "target": "/sys/fs/bpf"
+                            },
+                            {
+                                "fstype": "tracefs",
+                                "options": "rw,nosuid,nodev,noexec,relatime",
+                                "source": "tracefs",
+                                "target": "/sys/kernel/tracing"
+                            },
+                            {
+                                "fstype": "debugfs",
+                                "options": "rw,nosuid,nodev,noexec,relatime",
+                                "source": "debugfs",
+                                "target": "/sys/kernel/debug"
+                            },
+                            {
+                                "fstype": "fusectl",
+                                "options": "rw,nosuid,nodev,noexec,relatime",
+                                "source": "fusectl",
+                                "target": "/sys/fs/fuse/connections"
+                            },
+                            {
+                                "fstype": "configfs",
+                                "options": "rw,nosuid,nodev,noexec,relatime",
+                                "source": "configfs",
+                                "target": "/sys/kernel/config"
+                            }
+                        ],
+                        "fstype": "sysfs",
+                        "options": "rw,nosuid,nodev,noexec,relatime",
+                        "source": "sysfs",
+                        "target": "/sys"
+                    },
+                    {
+                        "children": [
+                            {
+                                "fstype": "autofs",
+                                "options": "rw,relatime,fd=29,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=16121",
+                                "source": "systemd-1",
+                                "target": "/proc/sys/fs/binfmt_misc"
+                            }
+                        ],
+                        "fstype": "proc",
+                        "options": "rw,nosuid,nodev,noexec,relatime",
+                        "source": "proc",
+                        "target": "/proc"
+                    },
+                    {
+                        "children": [
+                            {
+                                "fstype": "devpts",
+                                "options": "rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000",
+                                "source": "devpts",
+                                "target": "/dev/pts"
+                            },
+                            {
+                                "fstype": "tmpfs",
+                                "options": "rw,nosuid,nodev,inode64",
+                                "source": "tmpfs",
+                                "target": "/dev/shm"
+                            },
+                            {
+                                "fstype": "mqueue",
+                                "options": "rw,nosuid,nodev,noexec,relatime",
+                                "source": "mqueue",
+                                "target": "/dev/mqueue"
+                            },
+                            {
+                                "fstype": "hugetlbfs",
+                                "options": "rw,relatime,pagesize=2M",
+                                "source": "hugetlbfs",
+                                "target": "/dev/hugepages"
+                            }
+                        ],
+                        "fstype": "devtmpfs",
+                        "options": "rw,nosuid,relatime,size=8148668k,nr_inodes=2037167,mode=755,inode64",
+                        "source": "udev",
+                        "target": "/dev"
+                    },
+                    {
+                        "children": [
+                            {
+                                "fstype": "tmpfs",
+                                "options": "rw,nosuid,nodev,noexec,relatime,size=5120k,inode64",
+                                "source": "tmpfs",
+                                "target": "/run/lock"
+                            },
+                            {
+                                "fstype": "tmpfs",
+                                "options": "rw,nosuid,nodev,relatime,size=1636852k,nr_inodes=409213,mode=700,uid=999,gid=999,inode64",
+                                "source": "tmpfs",
+                                "target": "/run/user/999"
+                            }
+                        ],
+                        "fstype": "tmpfs",
+                        "options": "rw,nosuid,nodev,noexec,relatime,size=1636856k,mode=755,inode64",
+                        "source": "tmpfs",
+                        "target": "/run"
+                    },
+                    {
+                        "fstype": "iso9660",
+                        "options": "ro,noatime,nojoliet,check=s,map=n,blocksize=2048",
+                        "source": "/dev/sr0",
+                        "target": "/cdrom"
+                    },
+                    {
+                        "fstype": "squashfs",
+                        "options": "ro,noatime",
+                        "source": "/dev/loop0",
+                        "target": "/rofs"
+                    },
+                    {
+                        "fstype": "squashfs",
+                        "options": "ro,relatime",
+                        "source": "/dev/loop3",
+                        "target": "/usr/lib/modules"
+                    },
+                    {
+                        "fstype": "squashfs",
+                        "options": "ro,relatime",
+                        "source": "/dev/loop0",
+                        "target": "/media/filesystem"
+                    },
+                    {
+                        "fstype": "tmpfs",
+                        "options": "rw,nosuid,nodev,relatime,inode64",
+                        "source": "tmpfs",
+                        "target": "/tmp"
+                    },
+                    {
+                        "fstype": "squashfs",
+                        "options": "ro,nodev,relatime",
+                        "source": "/dev/loop4",
+                        "target": "/snap/snapd/12398"
+                    },
+                    {
+                        "fstype": "squashfs",
+                        "options": "ro,nodev,relatime",
+                        "source": "/dev/loop5",
+                        "target": "/snap/subiquity/x1"
+                    },
+                    {
+                        "fstype": "squashfs",
+                        "options": "ro,nodev,relatime",
+                        "source": "/dev/loop6",
+                        "target": "/snap/core18/2074"
+                    },
+                    {
+                        "fstype": "squashfs",
+                        "options": "ro,nodev,relatime",
+                        "source": "/dev/loop7",
+                        "target": "/snap/core20/1026"
+                    }
+                ],
+                "fstype": "overlay",
+                "options": "rw,relatime,lowerdir=/jnstaller.squashfs:/installer.squashfs:/filesystem.squashfs,upperdir=/cow/upper,workdir=/cow/work",
+                "source": "/cow",
+                "target": "/"
+            }
+        ],
+        "multipath": {},
+        "raid": {},
+        "zfs": {
+            "zpools": {}
+        }
+    }
+}
diff --git a/tests/unittests/test_storage_config.py b/tests/unittests/test_storage_config.py
index 83a47d9..a2308c4 100644
--- a/tests/unittests/test_storage_config.py
+++ b/tests/unittests/test_storage_config.py
@@ -66,6 +66,43 @@ class TestStorageConfigSchema(CiTestCase):
         config = {'config': [disk], 'version': 1}
         storage_config.validate_config(config)
 
+    @skipUnlessJsonSchema()
+    def test_format_schema_arbitrary_fstype_if_preserve(self):
+        format = {
+            "fstype": "BitLocker",
+            "id": "format-partition-sda3",
+            "preserve": True,
+            "type": "format",
+            "volume": "partition-sda3"
+        }
+        config = {'config': [format], 'version': 1}
+        storage_config.validate_config(config)
+
+    @skipUnlessJsonSchema()
+    def test_format_schema_arbitrary_fstype_fail_when_preserve_false(self):
+        format = {
+            "fstype": "BitLocker",
+            "id": "format-partition-sda3",
+            "preserve": False,
+            "type": "format",
+            "volume": "partition-sda3"
+        }
+        config = {'config': [format], 'version': 1}
+        with self.assertRaises(ValueError):
+            storage_config.validate_config(config)
+
+    @skipUnlessJsonSchema()
+    def test_format_schema_arbitrary_fstype_fail_when_no_preserve(self):
+        format = {
+            "fstype": "BitLocker",
+            "id": "format-partition-sda3",
+            "type": "format",
+            "volume": "partition-sda3"
+        }
+        config = {'config': [format], 'version': 1}
+        with self.assertRaises(ValueError):
+            storage_config.validate_config(config)
+
 
 class TestProbertParser(CiTestCase):
 
@@ -870,7 +907,6 @@ class TestZfsParser(CiTestCase):
         }
 
         zpool_data = self.zfsp.class_data['zpools'][zpool]['datasets'][dataset]
-        print(zpool_data)
         self.assertDictEqual(expected_properties,
                              self.zfsp.get_local_ds_properties(zpool_data))
 
@@ -1053,5 +1089,23 @@ class TestExtractStorageConfig(CiTestCase):
         self.assertEqual(1, len(disks))
         self.assertEqual(expected_dict, disks[0])
 
+    @skipUnlessJsonSchema()
+    def test_arbitrary_fstype_if_preserve_true(self):
+        self.probe_data = _get_data('probert_storage_win10_bitlocker.json')
+        extracted = storage_config.extract_storage_config(self.probe_data)
+        configs = extracted['storage']['config']
+        format = [cfg for cfg in configs if cfg.get('type') == 'format']
+        bitlocker = [entry for entry in format
+                     if entry.get('id') == 'format-partition-sda3']
+        expected_dict = {
+            'id': 'format-partition-sda3',
+            'type': 'format',
+            'volume': 'partition-sda3',
+            'fstype': 'BitLocker',
+            'preserve': True,
+        }
+        self.assertEqual(1, len(bitlocker))
+        self.assertEqual(expected_dict, bitlocker[0])
+
 
 # vi: ts=4 expandtab syntax=python

Follow ups