From 61f9cf4e4c488adf47419a4a81a315196fc01d43 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 21 Jan 2020 18:16:05 +0100 Subject: [PATCH] swap: generate automatic dependencies also for /proc/swaps devices This catches up with the logic we do for mounts: we create deps based on /proc/swaps now too, with the right flags set. --- src/core/swap.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/core/swap.c b/src/core/swap.c index 473b3483ae7..4155112f412 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -184,21 +184,39 @@ static int swap_arm_timer(Swap *s, usec_t usec) { return 0; } +static SwapParameters* swap_get_parameters(Swap *s) { + assert(s); + + if (s->from_proc_swaps) + return &s->parameters_proc_swaps; + + if (s->from_fragment) + return &s->parameters_fragment; + + return NULL; +} + static int swap_add_device_dependencies(Swap *s) { + UnitDependencyMask mask; + SwapParameters *p; + assert(s); if (!s->what) return 0; - if (!s->from_fragment) + p = swap_get_parameters(s); + if (!p) return 0; - if (is_device_path(s->what)) - return unit_add_node_dependency(UNIT(s), s->what, UNIT_BINDS_TO, UNIT_DEPENDENCY_FILE); + mask = s->from_proc_swaps ? UNIT_DEPENDENCY_PROC_SWAP : UNIT_DEPENDENCY_FILE; + + if (is_device_path(p->what)) + return unit_add_node_dependency(UNIT(s), p->what, UNIT_BINDS_TO, mask); - /* File based swap devices need to be ordered after systemd-remount-fs.service, - * since they might need a writable file system. */ - return unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_REMOUNT_FS_SERVICE, true, UNIT_DEPENDENCY_FILE); + /* File based swap devices need to be ordered after systemd-remount-fs.service, since they might need + * a writable file system. */ + return unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_REMOUNT_FS_SERVICE, true, mask); } static int swap_add_default_dependencies(Swap *s) { -- 2.47.3