[PATCH 1/5] Fix detection of multipath. (#955664)
David Lehman
dlehman at redhat.com
Thu May 2 17:58:00 UTC 2013
- Get wwid from a valid source
- Use addUdevDMDevice for multipath partitions
- Trim 'p' delimiter when converting dm partition name to dm disk name
---
blivet/devicetree.py | 10 ++++++++--
blivet/udev.py | 2 +-
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/blivet/devicetree.py b/blivet/devicetree.py
index eaeff58..691f1b2 100644
--- a/blivet/devicetree.py
+++ b/blivet/devicetree.py
@@ -690,7 +690,12 @@ class DeviceTree(object):
slave_devs.append(slave_dev)
if slave_devs:
- serial = info.get("ID_SERIAL_RAW", info.get("ID_SERIAL_SHORT"))
+ try:
+ serial = info["DM_UUID"].split("-", 1)[1]
+ except (IndexError, AttributeError):
+ log.error("multipath device %s has no DM_UUID" % name)
+ raise DeviceTreeError("multipath %s has no DM_UUID" % name)
+
device = MultipathDevice(name, parents=slave_devs,
serial=serial)
self._addDevice(device)
@@ -1014,7 +1019,8 @@ class DeviceTree(object):
elif udev_device_is_loop(info):
log.info("%s is a loop device" % name)
device = self.addUdevLoopDevice(info)
- elif udev_device_is_dm_mpath(info):
+ elif udev_device_is_dm_mpath(info) and \
+ not udev_device_is_dm_partition(info):
log.info("%s is a multipath device" % name)
device = self.addUdevMultiPathDevice(info)
elif udev_device_is_dm_lvm(info):
diff --git a/blivet/udev.py b/blivet/udev.py
index b944cb2..bdb7ffe 100644
--- a/blivet/udev.py
+++ b/blivet/udev.py
@@ -528,7 +528,7 @@ def udev_device_is_biosraid_member(info):
return False
def udev_device_get_dm_partition_disk(info):
- return re.sub(r'\d*$', '', udev_device_get_name(info))
+ return re.sub(r'p?\d*$', '', udev_device_get_name(info))
def udev_device_is_dm_partition(info):
return (udev_device_is_dm(info) and
--
1.8.1.4
More information about the anaconda-patches
mailing list