From: Arnaud Ferraris Date: Tue, 4 Oct 2022 16:52:33 +0000 (+0200) Subject: repart: always honour `--discard=no` X-Git-Tag: v252-rc1~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5113436b054aea7185a0287590aa64486fec3cec;p=thirdparty%2Fsystemd.git repart: always honour `--discard=no` Currently, even if `--discard=no` is passed to `systemd-repart`, the `context_discard_gap_after()` function still runs normally, discarding e.g. all blocks between the GPT and the start of the first partition. This can lead to issues on some embedded devices, where this space holds the bootloader and shouldn't be modified (creating a protective partition there is not always possible due to the specifics of the boot process of some ARM-based SoC's). This commit ensures passing `--discard=no` would be enough to ensure the bootloader isn't wiped in such cases. Signed-off-by: Arnaud Ferraris --- diff --git a/src/partition/repart.c b/src/partition/repart.c index 92aa9a25eb2..721a196a9a6 100644 --- a/src/partition/repart.c +++ b/src/partition/repart.c @@ -2843,6 +2843,9 @@ static int context_discard_gap_after(Context *context, Partition *p) { assert(context); assert(!p || (p->offset != UINT64_MAX && p->new_size != UINT64_MAX)); + if (!arg_discard) + return 0; + if (p) gap = p->offset + p->new_size; else