From: Lennart Poettering Date: Wed, 28 Nov 2018 19:35:50 +0000 (+0100) Subject: swap: always add in extras when we load a swap unit X-Git-Tag: v240~112^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=06721f39f6adcfd8319ffb3d79ece87b8ef38506;p=thirdparty%2Fsystemd.git swap: always add in extras when we load a swap unit Much like for the mount units we need fields such as the slice initialized by the time we activate the swap, hence when the kernel let's us know about a new swap that appeared we need to initialize the slice in any Swap object we allocated for that right-away, even if we can't read the real unit file for the swap device. --- diff --git a/src/core/swap.c b/src/core/swap.c index 277d0791c2c..2d8463b8b18 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -337,7 +337,7 @@ static int swap_add_extras(Swap *s) { static int swap_load(Unit *u) { Swap *s = SWAP(u); - int r; + int r, q; assert(s); assert(u->load_state == UNIT_STUB); @@ -347,16 +347,18 @@ static int swap_load(Unit *u) { r = unit_load_fragment_and_dropin_optional(u); else r = unit_load_fragment_and_dropin(u); - if (r < 0) - return r; - if (u->load_state == UNIT_LOADED) { - - r = swap_add_extras(s); - if (r < 0) - return r; + /* Add in some extras, and do so either when we successfully loaded something or when /proc/swaps is already + * active. */ + if (u->load_state == UNIT_LOADED || s->from_proc_swaps) + q = swap_add_extras(s); + else + q = 0; - } + if (r < 0) + return r; + if (q < 0) + return q; return swap_verify(s); }