From 51f6ba9f8a7609d6a25539c8b62744ebd32150b8 Mon Sep 17 00:00:00 2001 From: Vojtech Trefny Date: Fri, 29 May 2015 14:38:39 +0200 Subject: [PATCH] Allow adding new partitions to disks with active devices 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 --- blivet/devicetree.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/blivet/devicetree.py b/blivet/devicetree.py index 8f7acd814..d1f1e9dce 100644 --- a/blivet/devicetree.py +++ b/blivet/devicetree.py @@ -329,18 +329,21 @@ def findActiveDevicesOnActionDisks(self): 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 self.devices - if (dev.status and - (not dev.isDisk and - not isinstance(dev, PartitionDevice)))) + active = [] + for dev in self.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