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.
This commit is contained in:
Lennart Poettering 2018-11-28 20:35:50 +01:00
parent a0a424083f
commit 06721f39f6

View file

@ -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);
/* 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 (u->load_state == UNIT_LOADED) {
r = swap_add_extras(s);
if (r < 0)
return r;
}
if (q < 0)
return q;
return swap_verify(s);
}