From: Anuj Mittal Date: Thu, 12 Jul 2018 02:05:25 +0000 (+0800) Subject: wic/engine: use up all free space when expanding partitions X-Git-Tag: uninative-2.2~70 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=a88f1b5d88dbc5fb28be24b9787d73b9e0cdf183;p=openembedded-core.git wic/engine: use up all free space when expanding partitions Currently we just divide up the free space by the number of partitions that need to be re-sized. This leads to problems when a user has explicitly specified a subset of partitions (but not all) that need to re-sized along with the sizes. As an example, for an image with 3 partitions, if we use: wic write image.wic /dev/sdb --expand 1:10G This would lead to paritions 2 and 3 each being re-sized to one thirds of the free space instead of half. Change the behavior to use up all the free space. Signed-off-by: Anuj Mittal Signed-off-by: Ross Burton --- diff --git a/scripts/lib/wic/engine.py b/scripts/lib/wic/engine.py index fe036f60e9..f0c5ff0aaf 100644 --- a/scripts/lib/wic/engine.py +++ b/scripts/lib/wic/engine.py @@ -416,6 +416,7 @@ class Disk: # calculate expanded partitions sizes sizes = {} + num_auto_resize = 0 for num, part in enumerate(parts['partitiontable']['partitions'], 1): if num in expand: if expand[num] != 0: # don't resize partition if size is set to 0 @@ -425,10 +426,11 @@ class Disk: sizes[num] = sectors elif part['type'] != 'f': sizes[num] = -1 + num_auto_resize += 1 for num, part in enumerate(parts['partitiontable']['partitions'], 1): if sizes.get(num) == -1: - part['size'] += free // len(sizes) + part['size'] += free // num_auto_resize # write resized partition table to the target write_ptable(parts, target)