[PATCH 03/13] Tweak setContainerMembers to work with a defined md array.
David Lehman
dlehman at redhat.com
Wed Aug 29 00:00:42 UTC 2012
---
pyanaconda/storage/__init__.py | 38 +++++++++++++++++++++++---------------
1 files changed, 23 insertions(+), 15 deletions(-)
diff --git a/pyanaconda/storage/__init__.py b/pyanaconda/storage/__init__.py
index 5f94fea..b07bce1 100644
--- a/pyanaconda/storage/__init__.py
+++ b/pyanaconda/storage/__init__.py
@@ -1817,7 +1817,7 @@ class Storage(object):
return fstype
- def setContainerMembers(self, container, factory):
+ def setContainerMembers(self, container, factory, members=None):
""" Set up and return the container's member partitions. """
if factory.member_list is not None:
# short-circuit the logic below for partitions
@@ -1829,12 +1829,21 @@ class Storage(object):
# set up member devices
container_size = 0
add_disks = []
+
+ if members is None:
+ members = []
+
+ if container:
+ members = container.parents[:]
+
if container:
log.debug("using container %s with %d devices" % (container.name,
len(self.devicetree.getChildren(container))))
container_size = factory.container_size_func(container)
log.debug("raw container size reported as %d" % container_size)
- _disks = list(set([d for m in container.parents for d in m.disks]))
+
+ if members:
+ _disks = list(set([d for m in members for d in m.disks]))
# see if factory.disks contains disks not already in use
add_disks = [d for d in factory.disks if d not in _disks]
@@ -1847,20 +1856,14 @@ class Storage(object):
# XXX TODO: multiple member devices per disk
- # XXX Never try to reuse member devices. They can be converted by the
- # user into free space.
- members = []
-
# prepare already-defined member partitions for reallocation
- if container:
- members = container.parents[:]
- for member in members[:]:
- if isinstance(member, LUKSDevice):
- member = member.slave
+ for member in members[:]:
+ if isinstance(member, LUKSDevice):
+ member = member.slave
- member.req_base_size = PartitionDevice.defaultSize
- member.req_size = member.req_base_size
- member.req_grow = True
+ member.req_base_size = PartitionDevice.defaultSize
+ member.req_size = member.req_base_size
+ member.req_grow = True
# set up new members as needed to accommodate the device
for disk in add_disks:
@@ -1991,7 +1994,12 @@ class Storage(object):
# TODO: striping, mirroring, &c
# TODO: non-partition members (pv-on-md)
- parents = self.setContainerMembers(container, factory)
+
+ members = []
+ if device and device.type == "mdarray":
+ members = device.parents
+
+ parents = self.setContainerMembers(container, factory, members=members)
# set up container
if not container and factory.new_container_attr:
--
1.7.7.6
More information about the anaconda-patches
mailing list