From: Vojtech Trefny <vtrefny(a)redhat.com>
---
blivet/devices/luks.py | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/blivet/devices/luks.py b/blivet/devices/luks.py
index 1fee1b8..48a5ecd 100644
--- a/blivet/devices/luks.py
+++ b/blivet/devices/luks.py
@@ -22,6 +22,9 @@
# device backend modules
from ..devicelibs import crypto
+from ..storage_log import log_method_call
+from ..size import Size
+
import logging
log = logging.getLogger("blivet")
@@ -33,6 +36,7 @@ class LUKSDevice(DMCryptDevice):
""" A mapped LUKS device. """
_type = "luks/dm-crypt"
+ _resizable = True
_packages = ["cryptsetup"]
def __init__(self, name, fmt=None, size=None, uuid=None,
@@ -65,10 +69,37 @@ def raw_device(self):
def size(self):
if not self.exists:
size = self.slave.size - crypto.LUKS_METADATA_SIZE
+ elif self.resizable and self.target_size != Size(0):
+ size = self.target_size
else:
size = self.current_size
return size
+ @property
+ def min_size(self):
+ """ The minimum size this device can be. """
+ return self.align_target_size(self.format.min_size) if self.resizable else
self.current_size
+
+ def _set_target_size(self, newsize):
+ super()._set_target_size(newsize)
+
+ self.slave.format.target_size = newsize
+
+ @property
+ def resizable(self):
+ """ Can this device be resized? """
+ return (self._resizable and self.exists and self.format.resizable and
+ self.slave.resizable)
+
+ def _pre_resize(self):
+ self.format.teardown()
+
+ def resize(self):
+ log_method_call(self, self.name, status=self.status)
+ self._pre_resize()
+
+ self.slave.format.do_resize()
+
def _post_create(self):
self.name = self.slave.format.map_name
StorageDevice._post_create(self)
--
To view this commit on github, visit
https://github.com/rhinstaller/blivet/commit/ff617e752871689848f56258c318...