summaryrefslogtreecommitdiffstats
path: root/src/core/unit.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-11-15 14:59:01 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-12-15 19:15:51 +0100
commited9911630e4bca844381d7caeb850dad9a9fa122 (patch)
tree204ec760e2a98885b9d0d7bf3cbeeebfbb0ebd0c /src/core/unit.c
parentcore/unit: merge unit names after merging deps (diff)
downloadsystemd-ed9911630e4bca844381d7caeb850dad9a9fa122.tar.xz
systemd-ed9911630e4bca844381d7caeb850dad9a9fa122.zip
core/unit: fix log message
As you can see in the below, the dropped dependency Before=issue-24990.service is not logged, but the dependency Before=test1.service which is not owned by the units generated by the TEST-26 is logged. Before: systemd[1]: issue-24990.service: Dependency After=test1.service dropped, merged into issue-24990.service systemd[1]: issue-24990.service: Dependency Before=test1.service dropped, merged into issue-24990.service After: systemd[1]: issue-24990.service: Dependency After=test1.service is dropped, as test1.service is merged into issue-24990.service. systemd[1]: issue-24990.service: Dependency Before=issue-24990.service in test1.service is dropped, as test1.service is merged into issue-24990.service.
Diffstat (limited to '')
-rw-r--r--src/core/unit.c49
1 files changed, 22 insertions, 27 deletions
diff --git a/src/core/unit.c b/src/core/unit.c
index ea09416be5..988ba8e34a 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -937,29 +937,17 @@ static int unit_reserve_dependencies(Unit *u, Unit *other) {
return 0;
}
-static void unit_maybe_warn_about_dependency(
- Unit *u,
- const char *other_id,
- UnitDependency dependency) {
-
- assert(u);
-
+static bool unit_should_warn_about_dependency(UnitDependency dependency) {
/* Only warn about some unit types */
- if (!IN_SET(dependency,
- UNIT_CONFLICTS,
- UNIT_CONFLICTED_BY,
- UNIT_BEFORE,
- UNIT_AFTER,
- UNIT_ON_SUCCESS,
- UNIT_ON_FAILURE,
- UNIT_TRIGGERS,
- UNIT_TRIGGERED_BY))
- return;
-
- if (streq_ptr(u->id, other_id))
- log_unit_warning(u, "Dependency %s=%s dropped", unit_dependency_to_string(dependency), u->id);
- else
- log_unit_warning(u, "Dependency %s=%s dropped, merged into %s", unit_dependency_to_string(dependency), strna(other_id), u->id);
+ return IN_SET(dependency,
+ UNIT_CONFLICTS,
+ UNIT_CONFLICTED_BY,
+ UNIT_BEFORE,
+ UNIT_AFTER,
+ UNIT_ON_SUCCESS,
+ UNIT_ON_FAILURE,
+ UNIT_TRIGGERS,
+ UNIT_TRIGGERED_BY);
}
static int unit_per_dependency_type_hashmap_update(
@@ -1057,8 +1045,10 @@ static void unit_merge_dependencies(Unit *u, Unit *other) {
/* First, remove dependency to other. */
HASHMAP_FOREACH_KEY(deps, dt, u->dependencies) {
- if (hashmap_remove(deps, other))
- unit_maybe_warn_about_dependency(u, other->id, UNIT_DEPENDENCY_FROM_PTR(dt));
+ if (hashmap_remove(deps, other) && unit_should_warn_about_dependency(UNIT_DEPENDENCY_FROM_PTR(dt)))
+ log_unit_warning(u, "Dependency %s=%s is dropped, as %s is merged into %s.",
+ unit_dependency_to_string(UNIT_DEPENDENCY_FROM_PTR(dt)),
+ other->id, other->id, u->id);
if (hashmap_isempty(deps))
hashmap_free(hashmap_remove(u->dependencies, dt));
@@ -1085,7 +1075,11 @@ static void unit_merge_dependencies(Unit *u, Unit *other) {
if (back == u) {
/* This is a dependency pointing back to the unit we want to merge with?
* Suppress it (but warn) */
- unit_maybe_warn_about_dependency(u, other->id, UNIT_DEPENDENCY_FROM_PTR(dt));
+ if (unit_should_warn_about_dependency(UNIT_DEPENDENCY_FROM_PTR(dt)))
+ log_unit_warning(u, "Dependency %s=%s in %s is dropped, as %s is merged into %s.",
+ unit_dependency_to_string(UNIT_DEPENDENCY_FROM_PTR(dt)),
+ u->id, other->id, other->id, u->id);
+
hashmap_remove(other_deps, back);
continue;
}
@@ -3055,7 +3049,6 @@ int unit_add_dependency(
[UNIT_IN_SLICE] = UNIT_SLICE_OF,
[UNIT_SLICE_OF] = UNIT_IN_SLICE,
};
- Unit *original_u = u, *original_other = other;
UnitDependencyAtom a;
int r;
@@ -3074,7 +3067,9 @@ int unit_add_dependency(
/* We won't allow dependencies on ourselves. We will not consider them an error however. */
if (u == other) {
- unit_maybe_warn_about_dependency(original_u, original_other->id, d);
+ if (unit_should_warn_about_dependency(d))
+ log_unit_warning(u, "Dependency %s=%s is dropped.",
+ unit_dependency_to_string(d), u->id);
return 0;
}