X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fswap.c;h=29006712b5e6b76c1de24b2dda05066f84f585a2;hb=b95cf3629e8d78a0d28e71b0f5559fa9a8c038b5;hp=de468a0434ee0e0e4dfcaace2ff6cfa8111168ee;hpb=2edd4434e5bc6e5c7948df742d82f4bcd6c415f3;p=elogind.git diff --git a/src/swap.c b/src/swap.c index de468a043..29006712b 100644 --- a/src/swap.c +++ b/src/swap.c @@ -400,7 +400,7 @@ static void swap_dump(Unit *u, FILE *f, const char *prefix) { static void swap_enter_dead(Swap *s, bool success) { assert(s); - swap_set_state(s, success ? SWAP_MAINTENANCE : SWAP_DEAD); + swap_set_state(s, success ? SWAP_DEAD : SWAP_MAINTENANCE); } static int swap_start(Unit *u) { @@ -542,14 +542,6 @@ static void swap_shutdown(Manager *m) { } } -static const char* const swap_state_table[_SWAP_STATE_MAX] = { - [SWAP_DEAD] = "dead", - [SWAP_ACTIVE] = "active", - [SWAP_MAINTENANCE] = "maintenance" -}; - -DEFINE_STRING_TABLE_LOOKUP(swap_state, SwapState); - static int swap_enumerate(Manager *m) { int r; assert(m); @@ -564,6 +556,23 @@ static int swap_enumerate(Manager *m) { return r; } +static void swap_reset_maintenance(Unit *u) { + Swap *s = SWAP(u); + + assert(s); + + if (s->state == SWAP_MAINTENANCE) + swap_set_state(s, SWAP_DEAD); +} + +static const char* const swap_state_table[_SWAP_STATE_MAX] = { + [SWAP_DEAD] = "dead", + [SWAP_ACTIVE] = "active", + [SWAP_MAINTENANCE] = "maintenance" +}; + +DEFINE_STRING_TABLE_LOOKUP(swap_state, SwapState); + const UnitVTable swap_vtable = { .suffix = ".swap", @@ -592,6 +601,8 @@ const UnitVTable swap_vtable = { .bus_message_handler = bus_swap_message_handler, + .reset_maintenance = swap_reset_maintenance, + .enumerate = swap_enumerate, .shutdown = swap_shutdown };