This doesn't come up much because someone's always activating the md arrays before anaconda gets run. --- pyanaconda/storage/devicelibs/mdraid.py | 11 +++++------ pyanaconda/storage/devicetree.py | 18 +++++++----------- 2 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/pyanaconda/storage/devicelibs/mdraid.py b/pyanaconda/storage/devicelibs/mdraid.py index ee6a465..13d7832 100644 --- a/pyanaconda/storage/devicelibs/mdraid.py +++ b/pyanaconda/storage/devicelibs/mdraid.py @@ -240,12 +240,11 @@ def mdexamine(device): stderr="/dev/tty5").split()
info = {} - if vars: - try: - info["device"] = vars[1] - vars = vars[2:] - except IndexError: - return {} + if len(vars) > 1 and vars[1].startswith("/dev/md"): + info["device"] = vars[1] + vars = vars[2:] + elif len(vars) > 1: + vars = vars[1:]
for var in vars: (name, equals, value) = var.partition("=") diff --git a/pyanaconda/storage/devicetree.py b/pyanaconda/storage/devicetree.py index be14ba2..6c531ff 100644 --- a/pyanaconda/storage/devicetree.py +++ b/pyanaconda/storage/devicetree.py @@ -1418,17 +1418,13 @@ class DeviceTree(object):
if not md_name: md_path = md_info.get("device", "") - md_name = devicePathToName(md_info.get("device", "")) - if md_name: - try: - # md_name can be md<minor>, md/<minor>, or md/<name> - if md_name.startswith("md/"): - md_name = md_name[3:] - else: - md_name = md_name[2:] - except (IndexError, ValueError): - md_name = None - else: + if md_path: + md_name = devicePathToName(md_path) + if re.match(r'md\d+$', md_name): + # md0 -> 0 + md_name = md_name[2:] + + if md_name: array = self.getDeviceByName(md_name) if array and array.uuid != md_uuid: md_name = None