[RHEL 7.2 - PATCH 2/3] Enforce size range on factory fstypes (#1178884)

Robert Marshall rmarshall at redhat.com
Mon Jul 27 18:13:11 UTC 2015


From: David Lehman <dlehman at redhat.com>

Filesystem formats may have a maximum and minimum size value. Added a
check to ensure factory targets fall within these size constraints.

Cherry pick taken from master commit a800128.

Resolves: rhbz#1178884
---
 blivet/devicefactory.py | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/blivet/devicefactory.py b/blivet/devicefactory.py
index 0a86c90..12e9ebc 100644
--- a/blivet/devicefactory.py
+++ b/blivet/devicefactory.py
@@ -350,6 +350,22 @@ class DeviceFactory(object):
         free_info = self.storage.getFreeSpace(disks=self.disks)
         return sum(d[0] for d in free_info.values())
 
+    def _normalize_size(self):
+        if self.size is None:
+            self._handle_no_size()
+
+        size = self.size
+        fmt = getFormat(self.fstype)
+        if size < fmt.minSize:
+            size = fmt.minSize
+        elif fmt.maxSize and size > fmt.maxSize:
+            size = fmt.maxSize
+
+        if self.size != size:
+            log.debug("adjusted size from %s to %s to honor format limits",
+                      self.size, size)
+            self.size = size
+
     def _handle_no_size(self):
         """ Set device size so that it grows to the largest size possible. """
         if self.size is not None:
@@ -779,7 +795,7 @@ class DeviceFactory(object):
         if self.container and self.container.exists:
             self.disks = self.container.disks
 
-        self._handle_no_size()
+        self._normalize_size()
         self._set_up_child_factory()
 
         # Configure any devices this device will use as building blocks, except
-- 
1.8.3.1



More information about the anaconda-patches mailing list