repart: Clarify and test that --copy-from= argument respects grain size
The --copy-from= argument currently is documented as "copied partitions will have the same size". This doesn't hold true in the case where a different grain-size is passed to repart. Because `partition_min/max_size()` currently do rounding, the size is implicitly rounded to grain size, and therefore partitions are enlarged to align to grain size whenever possible. Clarify this behavior and change the manpage, and also add a test for it.
This commit is contained in:
@@ -493,6 +493,40 @@ EOF
|
||||
assert_in "$imgs/copy_to2 : start= 51200, size= 10240, type=${xbootldr_guid}," "$output"
|
||||
}
|
||||
|
||||
testcase_copy_from_respects_new_grain() {
|
||||
local defs imgs output
|
||||
|
||||
defs="$(mktemp --directory "/tmp/test-repart.defs.XXXXXXXXXX")"
|
||||
imgs="$(mktemp --directory "/var/tmp/test-repart.imgs.XXXXXXXXXX")"
|
||||
# shellcheck disable=SC2064
|
||||
trap "rm -rf '$defs' '$imgs'" RETURN
|
||||
chmod 0755 "$defs"
|
||||
|
||||
truncate -s 80MiB "$imgs/copy_from"
|
||||
sfdisk "$imgs/copy_from" <<EOF
|
||||
label: gpt
|
||||
|
||||
size=20480, type=${root_guid}, uuid=837c3d67-21b3-478e-be82-7e7f83bf96d3
|
||||
size=10240, type=${xbootldr_guid}, uuid=4985c03e-eecb-4fe0-9f65-3f6345782214
|
||||
EOF
|
||||
|
||||
truncate -s 100MiB "$imgs/copy_to"
|
||||
output=$(systemd-repart --offline="$OFFLINE" \
|
||||
--empty=allow \
|
||||
--definitions="$defs" \
|
||||
--seed="$seed" \
|
||||
--dry-run=no \
|
||||
--json=pretty \
|
||||
--copy-from="$imgs/copy_from" \
|
||||
--grain-size=4194304 \
|
||||
"$imgs/copy_to")
|
||||
|
||||
output=$(sfdisk --dump "$imgs/copy_to")
|
||||
|
||||
assert_in "$imgs/copy_to1 : start= 8192, size= 24576, type=${root_guid}," "$output"
|
||||
assert_in "$imgs/copy_to2 : start= 32768, size= 16384, type=${xbootldr_guid}," "$output"
|
||||
}
|
||||
|
||||
testcase_dropin() {
|
||||
local defs imgs output
|
||||
|
||||
|
||||
Reference in New Issue
Block a user