From: Vojtech Trefny vtrefny@redhat.com
Parted doesn't allow changing disklabel when there is an active partition on the disk. Current implementation of findActiveDevicesOnActionDisks doesn't allow adding new partitions when there is an existing active (child) device other than another partition (eg. VG). New version checks only actions that actually changes the disklabel and checks status of formats of (child) devices on the disk with changes.
Signed-off-by: Vojtech Trefny vtrefny@redhat.com --- blivet/actionlist.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/blivet/actionlist.py b/blivet/actionlist.py index be182c8..eed5c2c 100644 --- a/blivet/actionlist.py +++ b/blivet/actionlist.py @@ -247,18 +247,21 @@ def _findActiveDevicesOnActionDisks(self, devices=None): disks = [] for action in self._actions: disk = None - if action.isDevice and isinstance(action.device, PartitionDevice): - disk = action.device.disk - elif action.isFormat and action.format.type == "disklabel": + if action.isFormat and action.format.type == "disklabel": disk = action.device
if disk is not None and disk not in disks: disks.append(disk)
- active = (dev for dev in devices - if (dev.status and - (not dev.isDisk and - not isinstance(dev, PartitionDevice)))) + active = [] + for dev in devices: + if dev.status and not dev.isDisk and \ + not isinstance(dev, PartitionDevice): + active.append(dev) + + elif dev.format.status and not dev.isDisk: + active.append(dev) + devices = [a.name for a in active if any(d in disks for d in a.disks)] return devices