From 1f4f34eb7592ec54f86040529c96d35efe97b219 Mon Sep 17 00:00:00 2001
From: Michal Sekletar <msekleta@redhat.com>
Date: Wed, 11 Mar 2015 11:29:40 +0100
Subject: [PATCH] Revert "units: fix BindsTo= logic when applied relative to
services with Type=oneshot"
This reverts commit 469d48cf685bd0157fa44ff7ebd3bd0302746ab0.
Resolves: #1203803
---
src/core/unit.c | 48 ++++--------------------------------------------
1 file changed, 4 insertions(+), 44 deletions(-)
diff --git a/src/core/unit.c b/src/core/unit.c
index f221b9a..b51e351 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -1302,44 +1302,12 @@ static void unit_check_unneeded(Unit *u) {
if (unit_active_or_pending(other))
return;
- log_info_unit(u->id, "Unit %s is not needed anymore. Stopping.", u->id);
+ log_info_unit(u->id, "Service %s is not needed anymore. Stopping.", u->id);
/* Ok, nobody needs us anymore. Sniff. Then let's commit suicide */
manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL);
}
-static void unit_check_binds_to(Unit *u) {
- bool stop = false;
- Unit *other;
- Iterator i;
-
- assert(u);
-
- if (u->job)
- return;
-
- if (unit_active_state(u) != UNIT_ACTIVE)
- return;
-
- SET_FOREACH(other, u->dependencies[UNIT_BINDS_TO], i) {
- if (other->job)
- continue;
-
- if (!UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(other)))
- continue;
-
- stop = true;
- }
-
- if (!stop)
- return;
-
- log_info_unit(u->id, "Unit %s is bound to inactive service. Stopping, too.", u->id);
-
- /* A unit we need to run is gone. Sniff. Let's stop this. */
- manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL);
-}
-
static void retroactively_start_dependencies(Unit *u) {
Iterator i;
Unit *other;
@@ -1643,19 +1611,11 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
manager_recheck_journal(m);
unit_trigger_notify(u);
- if (u->manager->n_reloading <= 0) {
- /* Maybe we finished startup and are now ready for
- * being stopped because unneeded? */
+ /* Maybe we finished startup and are now ready for being
+ * stopped because unneeded? */
+ if (u->manager->n_reloading <= 0)
unit_check_unneeded(u);
- /* Maybe we finished startup, but something we needed
- * has vanished? Let's die then. (This happens when
- * something BindsTo= to a Type=oneshot unit, as these
- * units go directly from starting to inactive,
- * without ever entering started.) */
- unit_check_binds_to(u);
- }
-
unit_add_to_dbus_queue(u);
unit_add_to_gc_queue(u);
}