]> code.ossystems Code Review - openembedded-core.git/commitdiff
wic/partionedfs: Avoid reserving space for non-existing ext. partition
authorKristian Amlie <kristian.amlie@mender.io>
Fri, 10 Mar 2017 13:16:27 +0000 (14:16 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 21 Mar 2017 22:43:00 +0000 (22:43 +0000)
We don't need the gap that the extended partition occupies if we
already know that we have less than five partitions. Saves up to one
full alignment of space.

Signed-off-by: Kristian Amlie <kristian.amlie@mender.io>
Signed-off-by: Ross Burton <ross.burton@intel.com>
scripts/lib/wic/plugins/imager/direct.py

index 235eb24f594aba86834afd84eedd3083de891d6d..7d38ab34fb339077153b183acf8ad5cee08560e4 100644 (file)
@@ -344,6 +344,10 @@ class PartitionedImage():
 
         logger.debug("Assigning %s partitions to disks", self.ptable_format)
 
+        # The number of primary and logical partitions. Extended partition and
+        # partitions not listed in the table are not included.
+        num_real_partitions = len([p for p in self.partitions if not p.no_table])
+
         # Go through partitions in the order they are added in .ks file
         for num in range(len(self.partitions)):
             part = self.partitions[num]
@@ -369,7 +373,7 @@ class PartitionedImage():
                 # Skip one sector required for the partitioning scheme overhead
                 self.offset += overhead
 
-            if self.realpart > 3:
+            if self.realpart > 3 and num_real_partitions > 4:
                 # Reserve a sector for EBR for every logical partition
                 # before alignment is performed.
                 if self.ptable_format == "msdos":
@@ -408,7 +412,7 @@ class PartitionedImage():
 
             if self.ptable_format == "msdos":
                 # only count the partitions that are in partition table
-                if len([p for p in self.partitions if not p.no_table]) > 4:
+                if num_real_partitions > 4:
                     if self.realpart > 3:
                         part.type = 'logical'
                         part.num = self.realpart + 1