[f22-branch 2/3] Make an MDContainerDevice if that is the right model (#1208536)

mulkieran installerbot-noreply at redhat.com
Thu Apr 2 18:37:30 UTC 2015


From: mulhern <amulhern at redhat.com>

Resolves: fed#1208536

Should have gone in right after commit
ea0cfad52f86dc589d7e83656e97fa2c1a750fad.

Signed-off-by: mulhern <amulhern at redhat.com>
---
 blivet/devicetree.py | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/blivet/devicetree.py b/blivet/devicetree.py
index b2688d1..872e81f 100644
--- a/blivet/devicetree.py
+++ b/blivet/devicetree.py
@@ -37,6 +37,7 @@
 from .devices import LVMThinPoolDevice, LVMThinLogicalVolumeDevice
 from .devices import LVMSnapShotDevice, LVMThinSnapShotDevice
 from .devices import MDRaidArrayDevice, MDBiosRaidArrayDevice
+from .devices import MDContainerDevice
 from .devices import MultipathDevice, NoDevice, OpticalDevice
 from .devices import PartitionDevice, ZFCPDiskDevice, iScsiDiskDevice
 from .devices import devicePathToName
@@ -46,6 +47,7 @@
 from .formats.fs import nodev_filesystems
 from .devicelibs import lvm
 from .devicelibs import edd
+from .devicelibs import raid
 from . import udev
 from . import util
 from .platform import platform
@@ -1628,13 +1630,24 @@ def handleUdevMDMemberFormat(self, info, device):
                 log.error("failed to determine name for the md array %s", (md_uuid or "unknown"))
                 return
 
+            array_type = MDRaidArrayDevice
             try:
-                md_array = MDRaidArrayDevice(md_name,
-                                             level=md_level,
-                                             memberDevices=md_devices,
-                                             uuid=md_uuid,
-                                             metadataVersion=md_metadata,
-                                             exists=True)
+                level_obj = raid.getRaidLevel(md_level)
+                if level_obj is raid.Container and getattr(device.format, "biosraid", False):
+                    array_type = MDContainerDevice
+            except raid.RaidError as e:
+                log.error("failed to create md array: %s", e)
+                return
+
+            try:
+                md_array = array_type(
+                   md_name,
+                   level=md_level,
+                   memberDevices=md_devices,
+                   uuid=md_uuid,
+                   metadataVersion=md_metadata,
+                   exists=True
+                )
             except ValueError as e:
                 log.error("failed to create md array: %s", e)
                 return


-- 
To view this commit on github, visit https://github.com/rhinstaller/blivet/commit/cab4564a2006fa43401ffb557153ffb1659ce1fa


More information about the anaconda-patches mailing list