diff options
author | David Lehman <dlehman@redhat.com> | 2009-05-14 12:22:41 -0500 |
---|---|---|
committer | David Lehman <dlehman@redhat.com> | 2009-05-14 17:24:17 -0500 |
commit | 71c174873255d381b0a964303072114a87ea5f20 (patch) | |
tree | cb3eb2c840b559d0a7327ab6f2ae045bf079638d | |
parent | f1d9695739af7d2da2bf979fba95f25211d7aef0 (diff) | |
download | anaconda-71c174873255d381b0a964303072114a87ea5f20.tar.gz anaconda-71c174873255d381b0a964303072114a87ea5f20.tar.xz anaconda-71c174873255d381b0a964303072114a87ea5f20.zip |
Correct handling of formats on encrypted preexisting LVs. (#499828)
-rw-r--r-- | iw/lvm_dialog_gui.py | 55 |
1 files changed, 31 insertions, 24 deletions
diff --git a/iw/lvm_dialog_gui.py b/iw/lvm_dialog_gui.py index 458c18b2a..5102588e7 100644 --- a/iw/lvm_dialog_gui.py +++ b/iw/lvm_dialog_gui.py @@ -480,20 +480,9 @@ class VolumeGroupEditor: # Create the File System Format Section self.fsoptionsDict = {} - templuks = None - reallv = None - for _lv in self.vg.lvs: - if _lv.lvname == lv['name']: - reallv = _lv - if _lv.format.type == "luks": - try: - templuks = self.storage.devicetree.getChildren(_lv)[0] - except IndexError: - templuks = None - break # We are going to lambda the createPreExistFSOptionSection so we can call # it latter with two arguments, row and mainttable. - cpefsos = lambda table, row: createPreExistFSOptionSection(reallv, + cpefsos = lambda table, row: createPreExistFSOptionSection(templv, maintable, row, mountCombo, self.storage, ignorefs = ["software RAID", "physical volume (LVM)", "vfat"], luksdev=templuks) @@ -573,7 +562,6 @@ class VolumeGroupEditor: return actions = [] - luksdev = None targetSize = None migrate = None format = None @@ -718,6 +706,9 @@ class VolumeGroupEditor: format = getFormat("luks", device=templv.path, passphrase=self.storage.encryptionPassphrase) + elif self.lukscb and self.lukscb.get_active(): + newluks = format + format = templv.format templv.format = format elif format.mountable: @@ -731,8 +722,6 @@ class VolumeGroupEditor: targetSize = self.fsoptionsDict["resizesb"].get_value_as_int() templv.targetSize = targetSize - templv.format = format - if format.exists and format.mountable and format.mountpoint: tempdev = StorageDevice('tmp', format=format) if self.storage.formatByDefault(tempdev) and \ @@ -1062,18 +1051,36 @@ class VolumeGroupEditor: if lv.format.exists: log.debug("format already exists") - if hasattr(origlv.format, "mountpoint"): - origlv.format.mountpoint = lv.format.mountpoint + if lv.format.type == "luks": + # see if the luks device already exists + try: + usedev = self.storage.devicetree.getChildren(origlv)[0] + except IndexError: + # the luks device does not exist, meaning we + # do not have a key for it + continue + + format = self.luks[lv.lvname] + if not format.exists: + actions.append(ActionCreateFormat(usedev, format)) + else: + usedev = origlv + format = lv.format + + if hasattr(format, "mountpoint"): + usedev.format.mountpoint = format.mountpoint - if lv.format.migratable and lv.format.migrate and \ - not origlv.format.migrate: - origlv.format.migrate = lv.format.migrate - actions.append(ActionMigrateFormat(origlv)) + if format.migratable and format.migrate and \ + not usedev.format.migrate: + usedev.format.migrate = format.migrate + actions.append(ActionMigrateFormat(usedev)) - if lv.format.resizable and \ - lv.targetSize != lv.format.currentSize: + # check the lv's format also, explicitly, in case it is + # encrypted. in this case we must check them both. + if format.resizable and lv.format.resizable and \ + lv.targetSize != format.currentSize: new_size = lv.targetSize - actions.append(ActionResizeFormat(origlv, new_size)) + actions.append(ActionResizeFormat(usedev, new_size)) elif lv.format.type: log.debug("new format: %s" % lv.format.type) # destroy old format and any associated luks devices |