summaryrefslogtreecommitdiffstats
path: root/scripts/lib/wic/engine.py
diff options
context:
space:
mode:
authorAnuj Mittal <anuj.mittal@intel.com>2018-07-12 10:05:25 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-07-18 10:18:42 +0100
commitbf7ed1d046b0636116ab52ef6ea0e8adb9ef55a8 (patch)
treec7542eb98e1ff9641c1dbcdff1f14b068c5bc8f5 /scripts/lib/wic/engine.py
parent82756dcac05f7494805c339bb7ffe193afe536db (diff)
downloadpoky-bf7ed1d046b0636116ab52ef6ea0e8adb9ef55a8.tar.gz
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. (From OE-Core rev: a88f1b5d88dbc5fb28be24b9787d73b9e0cdf183) Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/wic/engine.py')
-rw-r--r--scripts/lib/wic/engine.py4
1 files changed, 3 insertions, 1 deletions
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:
416 416
417 # calculate expanded partitions sizes 417 # calculate expanded partitions sizes
418 sizes = {} 418 sizes = {}
419 num_auto_resize = 0
419 for num, part in enumerate(parts['partitiontable']['partitions'], 1): 420 for num, part in enumerate(parts['partitiontable']['partitions'], 1):
420 if num in expand: 421 if num in expand:
421 if expand[num] != 0: # don't resize partition if size is set to 0 422 if expand[num] != 0: # don't resize partition if size is set to 0
@@ -425,10 +426,11 @@ class Disk:
425 sizes[num] = sectors 426 sizes[num] = sectors
426 elif part['type'] != 'f': 427 elif part['type'] != 'f':
427 sizes[num] = -1 428 sizes[num] = -1
429 num_auto_resize += 1
428 430
429 for num, part in enumerate(parts['partitiontable']['partitions'], 1): 431 for num, part in enumerate(parts['partitiontable']['partitions'], 1):
430 if sizes.get(num) == -1: 432 if sizes.get(num) == -1:
431 part['size'] += free // len(sizes) 433 part['size'] += free // num_auto_resize
432 434
433 # write resized partition table to the target 435 # write resized partition table to the target
434 write_ptable(parts, target) 436 write_ptable(parts, target)