Also make it a bit easier to see what's going on by performing removals from the container's disk set separately from toggling member encryption. --- pyanaconda/storage/__init__.py | 35 ++++++++++++++++++++--------------- 1 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/pyanaconda/storage/__init__.py b/pyanaconda/storage/__init__.py index e71be35..79fd36b 100644 --- a/pyanaconda/storage/__init__.py +++ b/pyanaconda/storage/__init__.py @@ -1857,17 +1857,30 @@ class Storage(object):
# prepare already-defined member partitions for reallocation for member in members[:]: + if any([d in remove_disks for d in member.disks]): + if isinstance(member, LUKSDevice): + container.removeMember(member) + self.destroyDevice(member) + members.remove(member) + member = member.slave + else: + container.removeMember(member) + members.remove(member) + + self.destroyDevice(member) + continue + if isinstance(member, LUKSDevice): - if member.slave.disk in remove_disks or not factory.encrypted: + if not factory.encrypted: + # encryption was toggled for the member devices container.removeMember(member) self.destroyDevice(member) members.remove(member) - if not factory.encrypted: - # encryption was toggled for the member devices - self.formatDevice(member.slave, - getFormat(factory.member_format)) - members.append(member.slave) - container.addMember(member.slave) + + self.formatDevice(member.slave, + getFormat(factory.member_format)) + members.append(member.slave) + container.addMember(member.slave)
member = member.slave elif factory.encrypted: @@ -1882,14 +1895,6 @@ class Storage(object): members.append(member) container.addMember(member)
- if member.disk in remove_disks: - if member in container.parents: - container.removeMember(member) - members.remove(member) - - self.destroyDevice(member) - continue - member.req_base_size = base_size member.req_size = member.req_base_size member.req_grow = True