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