[PATCH 06/11] Fix detection of inactive md arrays. (#873031)

David Lehman dlehman at redhat.com
Fri Nov 9 21:09:16 UTC 2012


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
-- 
1.7.7.6



More information about the anaconda-patches mailing list