From 601ff7ed0a3ba5172b6bd886ca8ba2bd4d9e655a Mon Sep 17 00:00:00 2001 From: Guillaume Abrioux Date: Tue, 14 Dec 2021 09:57:10 +0100 Subject: [PATCH] ceph-volume: improve mpath devices support ee8887f4c0ff4f91117f31b621b95c8d08019130 was intended for adding mpath devices support in ceph-volume but it has missed the lvm batch scenario. This also fixes the zapping of mpath devices prepared with `ceph-volume raw` Fixes: https://tracker.ceph.com/issues/52908 Signed-off-by: Guillaume Abrioux --- src/ceph-volume/ceph_volume/devices/lvm/zap.py | 2 +- src/ceph-volume/ceph_volume/util/device.py | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/ceph-volume/ceph_volume/devices/lvm/zap.py b/src/ceph-volume/ceph_volume/devices/lvm/zap.py index 231d20a38ac18..e0cbfb1721940 100644 --- a/src/ceph-volume/ceph_volume/devices/lvm/zap.py +++ b/src/ceph-volume/ceph_volume/devices/lvm/zap.py @@ -266,7 +266,7 @@ class Zap(object): for device in devices: mlogger.info("Zapping: %s", device.abspath) - if device.is_mapper: + if device.is_mapper and not device.is_mpath: terminal.error("Refusing to zap the mapper device: {}".format(device)) raise SystemExit(1) if device.is_lvm_member: diff --git a/src/ceph-volume/ceph_volume/util/device.py b/src/ceph-volume/ceph_volume/util/device.py index eac7ae4b7a7c2..20ed448c22f70 100644 --- a/src/ceph-volume/ceph_volume/util/device.py +++ b/src/ceph-volume/ceph_volume/util/device.py @@ -367,6 +367,17 @@ class Device(object): def is_mapper(self): return self.path.startswith(('/dev/mapper', '/dev/dm-')) + @property + def device_type(self): + if self.disk_api: + return self.disk_api['TYPE'] + elif self.blkid_api: + return self.blkid_api['TYPE'] + + @property + def is_mpath(self): + return self.device_type == 'mpath' + @property def is_lv(self): return self.lv_api is not None @@ -387,10 +398,7 @@ class Device(object): elif self.blkid_api: api = self.blkid_api if api: - is_device = api['TYPE'] == 'device' - is_disk = api['TYPE'] == 'disk' - if is_device or is_disk: - return True + return self.device_type in ['disk', 'device', 'mpath'] return False @property -- 2.39.5