From: Lennart Poettering Date: Tue, 9 Nov 2021 15:25:00 +0000 (+0100) Subject: repart: simplify stat machine we mostly go through linearly X-Git-Tag: v250-rc1~320^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ae0613c6c4cf8aa2d924c9468e8dac1e792a4e71;p=thirdparty%2Fsystemd.git repart: simplify stat machine we mostly go through linearly --- diff --git a/src/partition/repart.c b/src/partition/repart.c index 482ef156ef7..db2f95afc7c 100644 --- a/src/partition/repart.c +++ b/src/partition/repart.c @@ -644,6 +644,8 @@ typedef enum GrowPartitionPhase { /* The third phase: we distribute what remains among the remaining partitions, according to the weights */ PHASE_DISTRIBUTE, + + _GROW_PARTITION_PHASE_MAX, } GrowPartitionPhase; static int context_grow_partitions_phase( @@ -779,20 +781,14 @@ static int context_grow_partitions_on_free_area(Context *context, FreeArea *a) { span += round_up_size(a->after->offset + a->after->current_size, 4096) - a->after->offset; } - GrowPartitionPhase phase = PHASE_OVERCHARGE; - for (;;) { + for (GrowPartitionPhase phase = 0; phase < _GROW_PARTITION_PHASE_MAX;) { r = context_grow_partitions_phase(context, a, phase, &span, &weight_sum); if (r < 0) return r; if (r == 0) /* not done yet, re-run this phase */ continue; - if (phase == PHASE_OVERCHARGE) - phase = PHASE_UNDERCHARGE; - else if (phase == PHASE_UNDERCHARGE) - phase = PHASE_DISTRIBUTE; - else if (phase == PHASE_DISTRIBUTE) - break; + phase++; /* got to next phase */ } /* We still have space left over? Donate to preceding partition if we have one */