diff options
Diffstat (limited to 'src/core/swap.c')
-rw-r--r-- | src/core/swap.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/core/swap.c b/src/core/swap.c index 277d0791c2..2d8463b8b1 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); } |