From ec4434a65f2248fb823ccfb5d2e150bb4da71da1 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 25 Mar 2019 07:10:21 -0500 Subject: [PATCH] common/blkdev: get_device_id: behave if model is lvm and id_model_enc isn't there If that happens, leave ID_MODEL blank and we'll fall back to something else, like ID_SERIAL (which is present in each case I've seen this). Signed-off-by: Sage Weil --- src/ceph-volume/ceph_volume/util/device.py | 2 +- src/common/blkdev.cc | 10 ++++--- .../blkdev-udevadm-info-samples/stud.nvme0n1 | 29 +++++++++++++++++++ .../stud.nvme0n1.devid | 1 + 4 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 src/test/common/blkdev-udevadm-info-samples/stud.nvme0n1 create mode 100644 src/test/common/blkdev-udevadm-info-samples/stud.nvme0n1.devid diff --git a/src/ceph-volume/ceph_volume/util/device.py b/src/ceph-volume/ceph_volume/util/device.py index ae7cf6c56e855..f06cb41ee4e9a 100644 --- a/src/ceph-volume/ceph_volume/util/device.py +++ b/src/ceph-volume/ceph_volume/util/device.py @@ -203,7 +203,7 @@ class Device(object): 'ID_SCSI_SERIAL'] p = disk.udevadm_property(self.abspath, props) if p.get('ID_MODEL','').startswith('LVM PV '): - p['ID_MODEL'] = p.get('ID_MODEL_ENC').replace('\\x20', ' ').strip() + p['ID_MODEL'] = p.get('ID_MODEL_ENC', '').replace('\\x20', ' ').strip() if 'ID_VENDOR' in p and 'ID_MODEL' in p and 'ID_SCSI_SERIAL' in p: dev_id = '_'.join([p['ID_VENDOR'], p['ID_MODEL'], p['ID_SCSI_SERIAL']]) diff --git a/src/common/blkdev.cc b/src/common/blkdev.cc index 35b9bbb275ad6..e01ad3c62e41a 100644 --- a/src/common/blkdev.cc +++ b/src/common/blkdev.cc @@ -486,10 +486,12 @@ std::string get_device_id(const std::string& devname, // sometimes, ID_MODEL is "LVM ..." but ID_MODEL_ENC is correct (but // encoded with \x20 for space). if (id_model.substr(0, 7) == "LVM PV ") { - std::string enc = udev_device_get_property_value(dev, "ID_MODEL_ENC"); - enc = _decode_model_enc(enc); - if (enc.size()) { - id_model = enc; + const char *enc = udev_device_get_property_value(dev, "ID_MODEL_ENC"); + if (enc) { + id_model = _decode_model_enc(enc); + } else { + // ignore ID_MODEL then + id_model.clear(); } } } diff --git a/src/test/common/blkdev-udevadm-info-samples/stud.nvme0n1 b/src/test/common/blkdev-udevadm-info-samples/stud.nvme0n1 new file mode 100644 index 0000000000000..e72c497686b9e --- /dev/null +++ b/src/test/common/blkdev-udevadm-info-samples/stud.nvme0n1 @@ -0,0 +1,29 @@ +P: /devices/pci0000:00/0000:00:03.0/0000:04:00.0/nvme/nvme0/nvme0n1 +N: nvme0n1 +S: disk/by-id/lvm-pv-uuid-eQ399W-P00T-Fdv1-DkWO-4bGJ-VMCN-RstGEU +S: disk/by-id/nvme-INTEL_SSDPE2MX012T4_CVPD6185002R1P2QGN +S: disk/by-id/nvme-nvme.8086-43565044363138353030325231503251474e-494e54454c205353445045324d583031325434-00000001 +S: disk/by-path/pci-0000:04:00.0-nvme-1 +E: DEVLINKS=/dev/disk/by-path/pci-0000:04:00.0-nvme-1 /dev/disk/by-id/lvm-pv-uuid-eQ399W-P00T-Fdv1-DkWO-4bGJ-VMCN-RstGEU /dev/disk/by-id/nvme-nvme.8086-43565044363138353030325231503251474e-494e54454c205353445045324d583031325434-00000001 /dev/disk/by-id/nvme-INTEL_SSDPE2MX012T4_CVPD6185002R1P2QGN +E: DEVNAME=/dev/nvme0n1 +E: DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:04:00.0/nvme/nvme0/nvme0n1 +E: DEVTYPE=disk +E: ID_FS_TYPE=LVM2_member +E: ID_FS_USAGE=raid +E: ID_FS_UUID=eQ399W-P00T-Fdv1-DkWO-4bGJ-VMCN-RstGEU +E: ID_FS_UUID_ENC=eQ399W-P00T-Fdv1-DkWO-4bGJ-VMCN-RstGEU +E: ID_FS_VERSION=LVM2 001 +E: ID_MODEL=LVM PV eQ399W-P00T-Fdv1-DkWO-4bGJ-VMCN-RstGEU on /dev/nvme0n1 +E: ID_PATH=pci-0000:04:00.0-nvme-1 +E: ID_PATH_TAG=pci-0000_04_00_0-nvme-1 +E: ID_SERIAL=INTEL SSDPE2MX012T4_CVPD6185002R1P2QGN +E: ID_SERIAL_SHORT=CVPD6185002R1P2QGN +E: ID_WWN=nvme.8086-43565044363138353030325231503251474e-494e54454c205353445045324d583031325434-00000001 +E: MAJOR=259 +E: MINOR=0 +E: SUBSYSTEM=block +E: SYSTEMD_ALIAS=/dev/block/259:0 +E: SYSTEMD_READY=1 +E: SYSTEMD_WANTS=lvm2-pvscan@259:0.service +E: TAGS=:systemd: +E: USEC_INITIALIZED=13656184 diff --git a/src/test/common/blkdev-udevadm-info-samples/stud.nvme0n1.devid b/src/test/common/blkdev-udevadm-info-samples/stud.nvme0n1.devid new file mode 100644 index 0000000000000..70a46678d3eea --- /dev/null +++ b/src/test/common/blkdev-udevadm-info-samples/stud.nvme0n1.devid @@ -0,0 +1 @@ +INTEL_SSDPE2MX012T4_CVPD6185002R1P2QGN -- 2.39.5