49 lines
1.9 KiB
Diff
49 lines
1.9 KiB
Diff
From 4bf7ef1f6b63d025dd047fe5f1c6dea4ef6c3b40 Mon Sep 17 00:00:00 2001
|
|
From: Vojtech Trefny <vtrefny@redhat.com>
|
|
Date: Wed, 12 Aug 2020 10:57:19 +0200
|
|
Subject: [PATCH] Fix name resolution for MD devices and partitions on them
|
|
|
|
UDev data for both member disks/partitions and partitions on arrays
|
|
contain the MD_* properties we must be extra careful when deciding
|
|
what name we'll use for the device.
|
|
|
|
Resolves: rhbz#1862904
|
|
---
|
|
blivet/udev.py | 12 ++++++++++--
|
|
1 file changed, 10 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/blivet/udev.py b/blivet/udev.py
|
|
index 66af9a98..32d6369a 100644
|
|
--- a/blivet/udev.py
|
|
+++ b/blivet/udev.py
|
|
@@ -203,9 +203,16 @@ def device_get_name(udev_info):
|
|
""" Return the best name for a device based on the udev db data. """
|
|
if "DM_NAME" in udev_info:
|
|
name = udev_info["DM_NAME"]
|
|
- elif "MD_DEVNAME" in udev_info and os.path.exists(device_get_sysfs_path(udev_info) + "/md"):
|
|
+ elif "MD_DEVNAME" in udev_info:
|
|
mdname = udev_info["MD_DEVNAME"]
|
|
- if device_is_partition(udev_info):
|
|
+ if device_is_md(udev_info):
|
|
+ # MD RAID array -> use MD_DEVNAME
|
|
+ name = mdname
|
|
+ elif device_get_format(udev_info) == "linux_raid_member":
|
|
+ # MD RAID member -> use SYS_NAME
|
|
+ name = udev_info["SYS_NAME"]
|
|
+ elif device_is_partition(udev_info):
|
|
+ # partition on RAID -> construct name from MD_DEVNAME + partition number
|
|
# for partitions on named RAID we want to use the raid name, not
|
|
# the node, e.g. "raid1" instead of "md127p1"
|
|
partnum = udev_info["ID_PART_ENTRY_NUMBER"]
|
|
@@ -214,6 +221,7 @@ def device_get_name(udev_info):
|
|
else:
|
|
name = mdname + partnum
|
|
else:
|
|
+ # something else -> default to MD_DEVNAME
|
|
name = mdname
|
|
else:
|
|
name = udev_info["SYS_NAME"]
|
|
--
|
|
2.20.1.windows.1
|
|
|