Re: [PATCH] Meke dmraid devices recursive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Joel Granados Moreno wrote:
For raid{10,01} to properly work pyblock needs to activate and
deactivate the dmraid sets properly.  When activating it should activate
the leafs of the tree first.  On deactivation it should start with the
root.

device.py - Added an activeMembers attribute that will hold the members
            children that are activated by the activate function.  On
            acitvation the children get activated first.  On
            deactivation the father goes first and then the children.
            This only applies for RaidSet objects.
---
 device.py |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)


Looks good.

Regards,

Hans


diff --git a/device.py b/device.py
index df08edc..828f198 100644
--- a/device.py
+++ b/device.py
@@ -572,6 +572,7 @@ class RaidSet:
         self._RaidSet__map = None
         self._RaidSet__parts = []
         self._RaidSet__name = rs.name
+        self._RaidSet__activeMembers = []
         self.active = False
         self.mknod = False
@@ -796,6 +797,13 @@ class RaidSet:
     def activate(self, degradedOk=False, mknod=False):
         if self.active:
             return
+
+        # We put the active members in a list so we can deactivate them later.
+        for member in self.members:
+            if isinstance(member, RaidSet):
+                member.activate(degradedOk=degradedOk, mknod=mknod)
+                self._RaidSet__activeMembers.append(member)
+
         if mknod:
             try:
                 _os.unlink(self.prefix+self.name)
@@ -826,6 +834,11 @@ class RaidSet:
             self.active = False
         elif len(parts) > 0:
             raise RuntimeError, "raidset has active partitions"
+
+        for activeMember in self._RaidSet__activeMembers:
+            activeMember.deactivate()
+        self._RaidSet__activateMembers = []
+
         self.scanMemberParts()
def display(self, space=0, printer=lambda x,y: _sys.stdout.write("%s%s\n" % (x*' ',y))):

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux