diff options
author | Hans de Goede <hdegoede@redhat.com> | 2009-04-24 08:50:01 +0200 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2009-04-24 09:54:57 +0200 |
commit | cbccdd0dc1c3aa1aa3aac47cd47aebb986840d29 (patch) | |
tree | 0f60eb16bfe7f142141c175f9d5534552b6bc9f5 /partIntfHelpers.py | |
parent | d3fcb8726db676c85b0f5f37719dc19e4d423008 (diff) | |
download | anaconda-cbccdd0dc1c3aa1aa3aac47cd47aebb986840d29.tar.gz anaconda-cbccdd0dc1c3aa1aa3aac47cd47aebb986840d29.tar.xz anaconda-cbccdd0dc1c3aa1aa3aac47cd47aebb986840d29.zip |
Remove devices in leaves first order (#496630)
Diffstat (limited to 'partIntfHelpers.py')
-rw-r--r-- | partIntfHelpers.py | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/partIntfHelpers.py b/partIntfHelpers.py index bd1ddbbfd..6d91bad67 100644 --- a/partIntfHelpers.py +++ b/partIntfHelpers.py @@ -133,8 +133,12 @@ def doDeleteDevice(intf, storage, device, confirm=1, quiet=0): if confirm and not confirmDelete(intf, device): return False - for dep in storage.deviceDeps(device): - storage.destroyDevice(dep) + deps = storage.deviceDeps(device) + while deps: + leaves = [d for d in deps if d.isleaf] + for leaf in leaves: + storage.destroyDevice(leaf) + deps.remove(leaf) storage.destroyDevice(device) return True @@ -157,12 +161,14 @@ def doDeleteDependentDevices(intf, storage, device, confirm=1, quiet=0): return False immutable = [] - for dep in deps: - if storage.deviceImmutable(dep): - immutable.append(dep.path) - continue - else: - storage.destroyDevice(dep) + while deps: + leaves = [d for d in deps if d.isleaf] + for leaf in leaves: + if storage.deviceImmutable(leaf): + immutable.append(leaf.path) + else: + storage.destroyDevice(leaf) + deps.remove(leaf) if immutable and not quiet: remaining = "\t" + "\n\t".join(immutable) + "\n" |