From 9b88bb5023dfa3cea406c14fdaa3d8e3e320907a Mon Sep 17 00:00:00 2001 From: Franck Bui Date: Mon, 28 Oct 2019 18:41:59 +0100 Subject: [PATCH 1/2] swap: do not make swap units wanted by its device unit anymore It was done for mount units already (see commit 142b8142d7bb84f07). For the same reasons and for consistency we should also stop activating automagically swaps when their device is hot-plugged. --- src/core/swap.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/core/swap.c b/src/core/swap.c index 726bda2f37..22827a296c 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -197,12 +197,11 @@ static int swap_add_device_dependencies(Swap *s) { return 0; if (is_device_path(s->what)) - return unit_add_node_dependency(UNIT(s), s->what, MANAGER_IS_SYSTEM(UNIT(s)->manager), UNIT_BINDS_TO, UNIT_DEPENDENCY_FILE); - else - /* 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); + return unit_add_node_dependency(UNIT(s), s->what, false, UNIT_BINDS_TO, 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, UNIT_DEPENDENCY_FILE); } static int swap_add_default_dependencies(Swap *s) { From d336ba9fa6ac2a70202e6887c4ac52185bca0a50 Mon Sep 17 00:00:00 2001 From: Franck Bui Date: Mon, 28 Oct 2019 18:50:43 +0100 Subject: [PATCH 2/2] core: drop 'wants' parameter from unit_add_node_dependency() Since Wants dependency is no more automagically added to swap and mount units, this parameter is no more used hence this patch drops it. --- src/core/mount.c | 2 +- src/core/socket.c | 2 +- src/core/swap.c | 2 +- src/core/unit.c | 18 ++++-------------- src/core/unit.h | 2 +- 5 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/core/mount.c b/src/core/mount.c index 7697a74b64..6e42176c09 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -361,7 +361,7 @@ static int mount_add_device_dependencies(Mount *m) { /* We always use 'what' from /proc/self/mountinfo if mounted */ mask = m->from_proc_self_mountinfo ? UNIT_DEPENDENCY_MOUNTINFO_IMPLICIT : UNIT_DEPENDENCY_FILE; - r = unit_add_node_dependency(UNIT(m), p->what, false, dep, mask); + r = unit_add_node_dependency(UNIT(m), p->what, dep, mask); if (r < 0) return r; diff --git a/src/core/socket.c b/src/core/socket.c index 285aa641d3..7f903ce5de 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -294,7 +294,7 @@ static int socket_add_device_dependencies(Socket *s) { return 0; t = strjoina("/sys/subsystem/net/devices/", s->bind_to_device); - return unit_add_node_dependency(UNIT(s), t, false, UNIT_BINDS_TO, UNIT_DEPENDENCY_FILE); + return unit_add_node_dependency(UNIT(s), t, UNIT_BINDS_TO, UNIT_DEPENDENCY_FILE); } static int socket_add_default_dependencies(Socket *s) { diff --git a/src/core/swap.c b/src/core/swap.c index 22827a296c..c184afa29d 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -197,7 +197,7 @@ static int swap_add_device_dependencies(Swap *s) { return 0; if (is_device_path(s->what)) - return unit_add_node_dependency(UNIT(s), s->what, false, UNIT_BINDS_TO, UNIT_DEPENDENCY_FILE); + return unit_add_node_dependency(UNIT(s), s->what, UNIT_BINDS_TO, UNIT_DEPENDENCY_FILE); /* File based swap devices need to be ordered after systemd-remount-fs.service, * since they might need a writable file system. */ diff --git a/src/core/unit.c b/src/core/unit.c index 4fcc142ae9..f7fe56a6d1 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -3832,7 +3832,7 @@ int unit_deserialize_skip(FILE *f) { } } -int unit_add_node_dependency(Unit *u, const char *what, bool wants, UnitDependency dep, UnitDependencyMask mask) { +int unit_add_node_dependency(Unit *u, const char *what, UnitDependency dep, UnitDependencyMask mask) { Unit *device; _cleanup_free_ char *e = NULL; int r; @@ -3862,19 +3862,9 @@ int unit_add_node_dependency(Unit *u, const char *what, bool wants, UnitDependen if (dep == UNIT_REQUIRES && device_shall_be_bound_by(device, u)) dep = UNIT_BINDS_TO; - r = unit_add_two_dependencies(u, UNIT_AFTER, - MANAGER_IS_SYSTEM(u->manager) ? dep : UNIT_WANTS, - device, true, mask); - if (r < 0) - return r; - - if (wants) { - r = unit_add_dependency(device, UNIT_WANTS, u, false, mask); - if (r < 0) - return r; - } - - return 0; + return unit_add_two_dependencies(u, UNIT_AFTER, + MANAGER_IS_SYSTEM(u->manager) ? dep : UNIT_WANTS, + device, true, mask); } int unit_coldplug(Unit *u) { diff --git a/src/core/unit.h b/src/core/unit.h index 5695552471..c5d8170c92 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -733,7 +733,7 @@ int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs); int unit_deserialize(Unit *u, FILE *f, FDSet *fds); int unit_deserialize_skip(FILE *f); -int unit_add_node_dependency(Unit *u, const char *what, bool wants, UnitDependency d, UnitDependencyMask mask); +int unit_add_node_dependency(Unit *u, const char *what, UnitDependency d, UnitDependencyMask mask); int unit_coldplug(Unit *u); void unit_catchup(Unit *u);