summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Lehman <dlehman@redhat.com>2009-05-14 12:22:41 -0500
committerDavid Lehman <dlehman@redhat.com>2009-05-14 17:24:17 -0500
commit71c174873255d381b0a964303072114a87ea5f20 (patch)
treecb3eb2c840b559d0a7327ab6f2ae045bf079638d
parentf1d9695739af7d2da2bf979fba95f25211d7aef0 (diff)
downloadanaconda-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.py55
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