From 0c062fd3eb3988822ffcf1f87c45f7c168fe92ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 15 Sep 2018 19:43:58 +0200 Subject: [PATCH 1/4] systemd: do not pass .wants fragment path to manager_load_unit When loading units, sometimes we'd first encounter a unit from .wants or .requires directory. A typical case would be when multi-user.target.wants/ contains a symlink to some unit. We would prepare to load this unit using /etc/systemd/system/multi-user.target.wants/foo.service as the fragment path. This is always wrong. Instead, let's use NULL as the path and let manager_load_unit() figure out the path on its own. Fixes #9921. path=0x5625ed9b01a0 "/usr/lib/systemd/system/local-fs.target.wants/systemd-remount-fs.service", e=0x0, _ret=0x7ffe64645000) at ../src/core/manager.c:1887 name=0x5625ed9b01ce "systemd-remount-fs.service", path=0x5625ed9b01a0 "/usr/lib/systemd/system/local-fs.target.wants/systemd-remount-fs.service", e=0x0, _ret=0x7ffe64645000) at ../src/core/manager.c:1961 name=0x5625ed9b01ce "systemd-remount-fs.service", path=0x5625ed9b01a0 "/usr/lib/systemd/system/local-fs.target.wants/systemd-remount-fs.service", add_reference=true, mask=UNIT_DEPENDENCY_FILE) at ../src/core/unit.c:2946 dir_suffix=0x5625ebb179ed ".wants") at ../src/core/load-dropin.c:95 path=0x0, e=0x0, _ret=0x7ffe646452c0) at ../src/core/manager.c:1965 name=0x5625ebb186f8 "local-fs.target", path=0x0, add_reference=true, mask=UNIT_DEPENDENCY_MOUNTINFO_IMPLICIT) at ../src/core/unit.c:2946 where=0x5625ed9b3cc0 "/tmp", options=0x5625ed947110 "rw,nosuid,nodev,seclabel", fstype=0x5625ed95be90 "tmpfs", flags=0x7ffe64645395) at ../src/core/mount.c:1439 where=0x5625ed9b3cc0 "/tmp", options=0x5625ed947110 "rw,nosuid,nodev,seclabel", fstype=0x5625ed95be90 "tmpfs", set_flags=false) at ../src/core/mount.c:1567 at ../src/core/mount.c:1635 ret_retval=0x7ffe64645660, ret_shutdown_verb=0x7ffe646456c0, ret_fds=0x7ffe646456d8, ret_switch_root_dir=0x7ffe646456b0, ret_switch_root_init=0x7ffe646456b8, ret_error_message=0x7ffe646456c8) at ../src/core/main.c:1669 --- src/core/load-dropin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c index 4b422cc54e..83b3b7d762 100644 --- a/src/core/load-dropin.c +++ b/src/core/load-dropin.c @@ -92,7 +92,7 @@ static int process_deps(Unit *u, UnitDependency dependency, const char *dir_suff log_unit_warning(u, "%s dependency dropin %s target %s has different name", unit_dependency_to_string(dependency), *p, target); - r = unit_add_dependency_by_name(u, dependency, entry, *p, true, UNIT_DEPENDENCY_FILE); + r = unit_add_dependency_by_name(u, dependency, entry, NULL, true, UNIT_DEPENDENCY_FILE); if (r < 0) log_unit_warning_errno(u, r, "Cannot add %s dependency on %s, ignoring: %m", unit_dependency_to_string(dependency), entry); From 35d8c19ace6855f8ea383b125486738f37201850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 15 Sep 2018 19:57:52 +0200 Subject: [PATCH 2/4] pid1: drop now-unused path parameter to add_dependency_by_name() --- src/core/dbus-unit.c | 2 +- src/core/device.c | 2 +- src/core/load-dropin.c | 2 +- src/core/load-fragment.c | 4 ++-- src/core/mount.c | 12 ++++++------ src/core/path.c | 2 +- src/core/service.c | 8 ++++---- src/core/socket.c | 2 +- src/core/swap.c | 4 ++-- src/core/timer.c | 4 ++-- src/core/unit.c | 12 ++++++------ src/core/unit.h | 2 +- 12 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index 884cb09204..c4530f0c8b 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -1572,7 +1572,7 @@ static int bus_unit_set_transient_property( if (!UNIT_WRITE_FLAGS_NOOP(flags)) { _cleanup_free_ char *label = NULL; - r = unit_add_dependency_by_name(u, d, other, NULL, true, UNIT_DEPENDENCY_FILE); + r = unit_add_dependency_by_name(u, d, other, true, UNIT_DEPENDENCY_FILE); if (r < 0) return r; diff --git a/src/core/device.c b/src/core/device.c index 634a45592f..80bd2555f1 100644 --- a/src/core/device.c +++ b/src/core/device.c @@ -380,7 +380,7 @@ static int device_add_udev_wants(Unit *u, sd_device *dev) { return log_unit_error_errno(u, r, "Failed to mangle unit name \"%s\": %m", word); } - r = unit_add_dependency_by_name(u, UNIT_WANTS, k, NULL, true, UNIT_DEPENDENCY_UDEV); + r = unit_add_dependency_by_name(u, UNIT_WANTS, k, true, UNIT_DEPENDENCY_UDEV); if (r < 0) return log_unit_error_errno(u, r, "Failed to add Wants= dependency: %m"); diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c index 83b3b7d762..a50b200f5b 100644 --- a/src/core/load-dropin.c +++ b/src/core/load-dropin.c @@ -92,7 +92,7 @@ static int process_deps(Unit *u, UnitDependency dependency, const char *dir_suff log_unit_warning(u, "%s dependency dropin %s target %s has different name", unit_dependency_to_string(dependency), *p, target); - r = unit_add_dependency_by_name(u, dependency, entry, NULL, true, UNIT_DEPENDENCY_FILE); + r = unit_add_dependency_by_name(u, dependency, entry, true, UNIT_DEPENDENCY_FILE); if (r < 0) log_unit_warning_errno(u, r, "Cannot add %s dependency on %s, ignoring: %m", unit_dependency_to_string(dependency), entry); diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index facc9bf7c4..1f8be5380f 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -135,7 +135,7 @@ int config_parse_unit_deps( continue; } - r = unit_add_dependency_by_name(u, d, k, NULL, true, UNIT_DEPENDENCY_FILE); + r = unit_add_dependency_by_name(u, d, k, true, UNIT_DEPENDENCY_FILE); if (r < 0) log_syntax(unit, LOG_ERR, filename, line, r, "Failed to add dependency on %s, ignoring: %m", k); } @@ -1770,7 +1770,7 @@ int config_parse_service_sockets( if (r < 0) log_syntax(unit, LOG_ERR, filename, line, r, "Failed to add dependency on %s, ignoring: %m", k); - r = unit_add_dependency_by_name(UNIT(s), UNIT_TRIGGERED_BY, k, NULL, true, UNIT_DEPENDENCY_FILE); + r = unit_add_dependency_by_name(UNIT(s), UNIT_TRIGGERED_BY, k, true, UNIT_DEPENDENCY_FILE); if (r < 0) log_syntax(unit, LOG_ERR, filename, line, r, "Failed to add dependency on %s, ignoring: %m", k); } diff --git a/src/core/mount.c b/src/core/mount.c index b10bf1dae1..669078b28f 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -456,7 +456,7 @@ static int mount_add_default_dependencies(Mount *m) { * network.target, so that they are shut down only * after this mount unit is stopped. */ - r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, SPECIAL_NETWORK_TARGET, NULL, true, mask); + r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, SPECIAL_NETWORK_TARGET, true, mask); if (r < 0) return r; @@ -475,7 +475,7 @@ static int mount_add_default_dependencies(Mount *m) { } else after = SPECIAL_LOCAL_FS_PRE_TARGET; - r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, NULL, true, mask); + r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, true, mask); if (r < 0) return r; @@ -485,7 +485,7 @@ static int mount_add_default_dependencies(Mount *m) { /* If this is a tmpfs mount then we have to unmount it before we try to deactivate swaps */ if (streq_ptr(p->fstype, "tmpfs")) { - r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, SPECIAL_SWAP_TARGET, NULL, true, mask); + r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, SPECIAL_SWAP_TARGET, true, mask); if (r < 0) return r; } @@ -1436,11 +1436,11 @@ static int mount_setup_new_unit( int r; target = mount_is_network(p) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET; - r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true, UNIT_DEPENDENCY_MOUNTINFO_IMPLICIT); + r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, true, UNIT_DEPENDENCY_MOUNTINFO_IMPLICIT); if (r < 0) return r; - r = unit_add_dependency_by_name(u, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true, UNIT_DEPENDENCY_MOUNTINFO_IMPLICIT); + r = unit_add_dependency_by_name(u, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, true, UNIT_DEPENDENCY_MOUNTINFO_IMPLICIT); if (r < 0) return r; } @@ -1498,7 +1498,7 @@ static int mount_setup_existing_unit( * in the dependency "Set*" objects who created a * dependency), we can only add deps, never lose them, * until the next full daemon-reload. */ - unit_add_dependency_by_name(u, UNIT_BEFORE, SPECIAL_REMOTE_FS_TARGET, NULL, true, UNIT_DEPENDENCY_MOUNTINFO_IMPLICIT); + unit_add_dependency_by_name(u, UNIT_BEFORE, SPECIAL_REMOTE_FS_TARGET, true, UNIT_DEPENDENCY_MOUNTINFO_IMPLICIT); load_extras = true; } diff --git a/src/core/path.c b/src/core/path.c index 68b13b610a..7ccfea12f4 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -298,7 +298,7 @@ static int path_add_default_dependencies(Path *p) { if (!UNIT(p)->default_dependencies) return 0; - r = unit_add_dependency_by_name(UNIT(p), UNIT_BEFORE, SPECIAL_PATHS_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_dependency_by_name(UNIT(p), UNIT_BEFORE, SPECIAL_PATHS_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; diff --git a/src/core/service.c b/src/core/service.c index 722a9e9ae7..fd7982b501 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -617,7 +617,7 @@ static int service_add_default_dependencies(Service *s) { /* In the --user instance there's no sysinit.target, * in that case require basic.target instead. */ - r = unit_add_dependency_by_name(UNIT(s), UNIT_REQUIRES, SPECIAL_BASIC_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_dependency_by_name(UNIT(s), UNIT_REQUIRES, SPECIAL_BASIC_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; } @@ -625,7 +625,7 @@ static int service_add_default_dependencies(Service *s) { /* Second, if the rest of the base system is in the same * transaction, order us after it, but do not pull it in or * even require it. */ - r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_BASIC_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_BASIC_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; @@ -661,12 +661,12 @@ static int service_setup_bus_name(Service *s) { if (!s->bus_name) return 0; - r = unit_add_dependency_by_name(UNIT(s), UNIT_REQUIRES, SPECIAL_DBUS_SOCKET, NULL, true, UNIT_DEPENDENCY_FILE); + r = unit_add_dependency_by_name(UNIT(s), UNIT_REQUIRES, SPECIAL_DBUS_SOCKET, true, UNIT_DEPENDENCY_FILE); if (r < 0) return log_unit_error_errno(UNIT(s), r, "Failed to add dependency on " SPECIAL_DBUS_SOCKET ": %m"); /* We always want to be ordered against dbus.socket if both are in the transaction. */ - r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_DBUS_SOCKET, NULL, true, UNIT_DEPENDENCY_FILE); + r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_DBUS_SOCKET, true, UNIT_DEPENDENCY_FILE); if (r < 0) return log_unit_error_errno(UNIT(s), r, "Failed to add dependency on " SPECIAL_DBUS_SOCKET ": %m"); diff --git a/src/core/socket.c b/src/core/socket.c index 8775bc8a58..e40f12186a 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -301,7 +301,7 @@ static int socket_add_default_dependencies(Socket *s) { if (!UNIT(s)->default_dependencies) return 0; - r = unit_add_dependency_by_name(UNIT(s), UNIT_BEFORE, SPECIAL_SOCKETS_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_dependency_by_name(UNIT(s), UNIT_BEFORE, SPECIAL_SOCKETS_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; diff --git a/src/core/swap.c b/src/core/swap.c index bcd3865019..4f9de05ce2 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -197,7 +197,7 @@ static int swap_add_device_dependencies(Swap *s) { /* 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, NULL, true, UNIT_DEPENDENCY_FILE); + 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) { @@ -216,7 +216,7 @@ static int swap_add_default_dependencies(Swap *s) { /* swap units generated for the swap dev links are missing the * ordering dep against the swap target. */ - r = unit_add_dependency_by_name(UNIT(s), UNIT_BEFORE, SPECIAL_SWAP_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_dependency_by_name(UNIT(s), UNIT_BEFORE, SPECIAL_SWAP_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; diff --git a/src/core/timer.c b/src/core/timer.c index db202971d3..4d486a9a3f 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -88,7 +88,7 @@ static int timer_add_default_dependencies(Timer *t) { if (!UNIT(t)->default_dependencies) return 0; - r = unit_add_dependency_by_name(UNIT(t), UNIT_BEFORE, SPECIAL_TIMERS_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_dependency_by_name(UNIT(t), UNIT_BEFORE, SPECIAL_TIMERS_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; @@ -99,7 +99,7 @@ static int timer_add_default_dependencies(Timer *t) { LIST_FOREACH(value, v, t->values) { if (v->base == TIMER_CALENDAR) { - r = unit_add_dependency_by_name(UNIT(t), UNIT_AFTER, SPECIAL_TIME_SYNC_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_dependency_by_name(UNIT(t), UNIT_AFTER, SPECIAL_TIME_SYNC_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; break; diff --git a/src/core/unit.c b/src/core/unit.c index 6ca8f6a97f..65d6ea50e3 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1009,7 +1009,7 @@ int unit_add_exec_dependencies(Unit *u, ExecContext *c) { return r; } - r = unit_add_dependency_by_name(u, UNIT_AFTER, SPECIAL_TMPFILES_SETUP_SERVICE, NULL, true, UNIT_DEPENDENCY_FILE); + r = unit_add_dependency_by_name(u, UNIT_AFTER, SPECIAL_TMPFILES_SETUP_SERVICE, true, UNIT_DEPENDENCY_FILE); if (r < 0) return r; } @@ -1027,7 +1027,7 @@ int unit_add_exec_dependencies(Unit *u, ExecContext *c) { /* If syslog or kernel logging is requested, make sure our own * logging daemon is run first. */ - r = unit_add_dependency_by_name(u, UNIT_AFTER, SPECIAL_JOURNALD_SOCKET, NULL, true, UNIT_DEPENDENCY_FILE); + r = unit_add_dependency_by_name(u, UNIT_AFTER, SPECIAL_JOURNALD_SOCKET, true, UNIT_DEPENDENCY_FILE); if (r < 0) return r; @@ -2929,19 +2929,19 @@ static int resolve_template(Unit *u, const char *name, const char*path, char **b return 0; } -int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name, const char *path, bool add_reference, UnitDependencyMask mask) { +int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name, bool add_reference, UnitDependencyMask mask) { _cleanup_free_ char *buf = NULL; Unit *other; int r; assert(u); - assert(name || path); + assert(name); - r = resolve_template(u, name, path, &buf, &name); + r = resolve_template(u, name, NULL, &buf, &name); if (r < 0) return r; - r = manager_load_unit(u->manager, name, path, NULL, &other); + r = manager_load_unit(u->manager, name, NULL, NULL, &other); if (r < 0) return r; diff --git a/src/core/unit.h b/src/core/unit.h index 3770c01acd..8f08a35388 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -602,7 +602,7 @@ int unit_add_name(Unit *u, const char *name); int unit_add_dependency(Unit *u, UnitDependency d, Unit *other, bool add_reference, UnitDependencyMask mask); int unit_add_two_dependencies(Unit *u, UnitDependency d, UnitDependency e, Unit *other, bool add_reference, UnitDependencyMask mask); -int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name, const char *filename, bool add_reference, UnitDependencyMask mask); +int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name, bool add_reference, UnitDependencyMask mask); int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDependency e, const char *name, const char *path, bool add_reference, UnitDependencyMask mask); int unit_add_exec_dependencies(Unit *u, ExecContext *c); From 5a7241708437a7e7cd85383d5a6ea79c3012e8c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 15 Sep 2018 20:02:00 +0200 Subject: [PATCH 3/4] pid1: drop unused path parameter to add_two_dependencies_by_name() --- src/core/automount.c | 2 +- src/core/load-fragment.c | 4 ++-- src/core/mount.c | 8 ++++---- src/core/path.c | 4 ++-- src/core/scope.c | 2 +- src/core/service.c | 4 ++-- src/core/slice.c | 2 +- src/core/socket.c | 4 ++-- src/core/swap.c | 2 +- src/core/target.c | 2 +- src/core/timer.c | 4 ++-- src/core/unit.c | 10 +++++----- src/core/unit.h | 2 +- 13 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/core/automount.c b/src/core/automount.c index 1b96a52c00..21b3887e67 100644 --- a/src/core/automount.c +++ b/src/core/automount.c @@ -149,7 +149,7 @@ static int automount_add_default_dependencies(Automount *a) { if (!MANAGER_IS_SYSTEM(UNIT(a)->manager)) return 0; - r = unit_add_two_dependencies_by_name(UNIT(a), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_two_dependencies_by_name(UNIT(a), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 1f8be5380f..9f24b47b0b 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -1568,7 +1568,7 @@ int config_parse_trigger_unit( return 0; } - r = unit_add_two_dependencies_by_name(u, UNIT_BEFORE, UNIT_TRIGGERS, p, NULL, true, UNIT_DEPENDENCY_FILE); + r = unit_add_two_dependencies_by_name(u, UNIT_BEFORE, UNIT_TRIGGERS, p, true, UNIT_DEPENDENCY_FILE); if (r < 0) { log_syntax(unit, LOG_ERR, filename, line, r, "Failed to add trigger on %s, ignoring: %m", p); return 0; @@ -1766,7 +1766,7 @@ int config_parse_service_sockets( continue; } - r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_WANTS, UNIT_AFTER, k, NULL, true, UNIT_DEPENDENCY_FILE); + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_WANTS, UNIT_AFTER, k, true, UNIT_DEPENDENCY_FILE); if (r < 0) log_syntax(unit, LOG_ERR, filename, line, r, "Failed to add dependency on %s, ignoring: %m", k); diff --git a/src/core/mount.c b/src/core/mount.c index 669078b28f..9894e64f9d 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -384,11 +384,11 @@ static int mount_add_quota_dependencies(Mount *m) { mask = m->from_fragment ? UNIT_DEPENDENCY_FILE : UNIT_DEPENDENCY_MOUNTINFO_IMPLICIT; - r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_WANTS, SPECIAL_QUOTACHECK_SERVICE, NULL, true, mask); + r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_WANTS, SPECIAL_QUOTACHECK_SERVICE, true, mask); if (r < 0) return r; - r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_WANTS, SPECIAL_QUOTAON_SERVICE, NULL, true, mask); + r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_WANTS, SPECIAL_QUOTAON_SERVICE, true, mask); if (r < 0) return r; @@ -467,7 +467,7 @@ static int mount_add_default_dependencies(Mount *m) { * whose purpose it is to delay this until the network * is "up". */ - r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_WANTS, UNIT_AFTER, SPECIAL_NETWORK_ONLINE_TARGET, NULL, true, mask); + r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_WANTS, UNIT_AFTER, SPECIAL_NETWORK_ONLINE_TARGET, true, mask); if (r < 0) return r; @@ -479,7 +479,7 @@ static int mount_add_default_dependencies(Mount *m) { if (r < 0) return r; - r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true, mask); + r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, true, mask); if (r < 0) return r; diff --git a/src/core/path.c b/src/core/path.c index 7ccfea12f4..1c6b6a880d 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -303,12 +303,12 @@ static int path_add_default_dependencies(Path *p) { return r; if (MANAGER_IS_SYSTEM(UNIT(p)->manager)) { - r = unit_add_two_dependencies_by_name(UNIT(p), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_two_dependencies_by_name(UNIT(p), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; } - return unit_add_two_dependencies_by_name(UNIT(p), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + return unit_add_two_dependencies_by_name(UNIT(p), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT); } static int path_add_trigger_dependencies(Path *p) { diff --git a/src/core/scope.c b/src/core/scope.c index 751556fecf..40503a5961 100644 --- a/src/core/scope.c +++ b/src/core/scope.c @@ -110,7 +110,7 @@ static int scope_add_default_dependencies(Scope *s) { r = unit_add_two_dependencies_by_name( UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, - SPECIAL_SHUTDOWN_TARGET, NULL, true, + SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; diff --git a/src/core/service.c b/src/core/service.c index fd7982b501..372339af43 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -609,7 +609,7 @@ static int service_add_default_dependencies(Service *s) { * require it, so that we fail if we can't acquire * it. */ - r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; } else { @@ -630,7 +630,7 @@ static int service_add_default_dependencies(Service *s) { return r; /* Third, add us in for normal shutdown. */ - return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT); } static void service_fix_output(Service *s) { diff --git a/src/core/slice.c b/src/core/slice.c index 58f18a4dad..1760f725c4 100644 --- a/src/core/slice.c +++ b/src/core/slice.c @@ -74,7 +74,7 @@ static int slice_add_default_dependencies(Slice *s) { r = unit_add_two_dependencies_by_name( UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, - SPECIAL_SHUTDOWN_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; diff --git a/src/core/socket.c b/src/core/socket.c index e40f12186a..395864f5ac 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -306,12 +306,12 @@ static int socket_add_default_dependencies(Socket *s) { return r; if (MANAGER_IS_SYSTEM(UNIT(s)->manager)) { - r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; } - return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT); } _pure_ static bool socket_has_exec(Socket *s) { diff --git a/src/core/swap.c b/src/core/swap.c index 4f9de05ce2..6b0b794749 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -220,7 +220,7 @@ static int swap_add_default_dependencies(Swap *s) { if (r < 0) return r; - return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, true, UNIT_DEPENDENCY_DEFAULT); } static int swap_verify(Swap *s) { diff --git a/src/core/target.c b/src/core/target.c index 6446767504..a91c85ed2e 100644 --- a/src/core/target.c +++ b/src/core/target.c @@ -66,7 +66,7 @@ static int target_add_default_dependencies(Target *t) { return 0; /* Make sure targets are unloaded on shutdown */ - return unit_add_two_dependencies_by_name(UNIT(t), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + return unit_add_two_dependencies_by_name(UNIT(t), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT); } static int target_load(Unit *u) { diff --git a/src/core/timer.c b/src/core/timer.c index 4d486a9a3f..111aa42877 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -93,7 +93,7 @@ static int timer_add_default_dependencies(Timer *t) { return r; if (MANAGER_IS_SYSTEM(UNIT(t)->manager)) { - r = unit_add_two_dependencies_by_name(UNIT(t), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + r = unit_add_two_dependencies_by_name(UNIT(t), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, true, UNIT_DEPENDENCY_DEFAULT); if (r < 0) return r; @@ -107,7 +107,7 @@ static int timer_add_default_dependencies(Timer *t) { } } - return unit_add_two_dependencies_by_name(UNIT(t), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true, UNIT_DEPENDENCY_DEFAULT); + return unit_add_two_dependencies_by_name(UNIT(t), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, true, UNIT_DEPENDENCY_DEFAULT); } static int timer_add_trigger_dependencies(Timer *t) { diff --git a/src/core/unit.c b/src/core/unit.c index 65d6ea50e3..68d6b4934c 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1398,7 +1398,7 @@ static int unit_add_slice_dependencies(Unit *u) { if (unit_has_name(u, SPECIAL_ROOT_SLICE)) return 0; - return unit_add_two_dependencies_by_name(u, UNIT_AFTER, UNIT_REQUIRES, SPECIAL_ROOT_SLICE, NULL, true, mask); + return unit_add_two_dependencies_by_name(u, UNIT_AFTER, UNIT_REQUIRES, SPECIAL_ROOT_SLICE, true, mask); } static int unit_add_mount_dependencies(Unit *u) { @@ -2948,19 +2948,19 @@ int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name, boo return unit_add_dependency(u, d, other, add_reference, mask); } -int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDependency e, const char *name, const char *path, bool add_reference, UnitDependencyMask mask) { +int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDependency e, const char *name, bool add_reference, UnitDependencyMask mask) { _cleanup_free_ char *buf = NULL; Unit *other; int r; assert(u); - assert(name || path); + assert(name); - r = resolve_template(u, name, path, &buf, &name); + r = resolve_template(u, name, NULL, &buf, &name); if (r < 0) return r; - r = manager_load_unit(u->manager, name, path, NULL, &other); + r = manager_load_unit(u->manager, name, NULL, NULL, &other); if (r < 0) return r; diff --git a/src/core/unit.h b/src/core/unit.h index 8f08a35388..7a2eeb5ce2 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -603,7 +603,7 @@ int unit_add_dependency(Unit *u, UnitDependency d, Unit *other, bool add_referen int unit_add_two_dependencies(Unit *u, UnitDependency d, UnitDependency e, Unit *other, bool add_reference, UnitDependencyMask mask); int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name, bool add_reference, UnitDependencyMask mask); -int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDependency e, const char *name, const char *path, bool add_reference, UnitDependencyMask mask); +int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDependency e, const char *name, bool add_reference, UnitDependencyMask mask); int unit_add_exec_dependencies(Unit *u, ExecContext *c); From 23e8c796654a641d1e231eb16406db4396093269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 15 Sep 2018 20:03:32 +0200 Subject: [PATCH 4/4] pid1: drop now-unused path parameter to resolve_template() --- src/core/unit.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/core/unit.c b/src/core/unit.c index 68d6b4934c..65711bbc81 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2894,17 +2894,14 @@ int unit_add_two_dependencies(Unit *u, UnitDependency d, UnitDependency e, Unit return unit_add_dependency(u, e, other, add_reference, mask); } -static int resolve_template(Unit *u, const char *name, const char*path, char **buf, const char **ret) { +static int resolve_template(Unit *u, const char *name, char **buf, const char **ret) { int r; assert(u); - assert(name || path); + assert(name); assert(buf); assert(ret); - if (!name) - name = basename(path); - if (!unit_name_is_valid(name, UNIT_NAME_TEMPLATE)) { *buf = NULL; *ret = name; @@ -2937,7 +2934,7 @@ int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name, boo assert(u); assert(name); - r = resolve_template(u, name, NULL, &buf, &name); + r = resolve_template(u, name, &buf, &name); if (r < 0) return r; @@ -2956,7 +2953,7 @@ int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDependency assert(u); assert(name); - r = resolve_template(u, name, NULL, &buf, &name); + r = resolve_template(u, name, &buf, &name); if (r < 0) return r;