[systemd-devel] [PATCH] unit: When stopping due to BindsTo=, log which unit caused it

Colin Walters walters at verbum.org
Tue Feb 17 10:47:34 PST 2015


I'm trying to track down a relatively recent change in systemd
which broke OSTree; see https://bugzilla.gnome.org/show_bug.cgi?id=743891

Systemd started to stop sysroot.mount, and this patch should help
me debug why at least.

While we're here, "break" on the first unit we find that will
deactivate, as there's no point in further iteration.
---
 src/core/unit.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/core/unit.c b/src/core/unit.c
index ee8e607..c88eca3 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -1629,7 +1629,7 @@ static void unit_check_unneeded(Unit *u) {
 
 static void unit_check_binds_to(Unit *u) {
         bool stop = false;
-        Unit *other;
+        Unit *other = NULL;
         Iterator i;
 
         assert(u);
@@ -1648,12 +1648,14 @@ static void unit_check_binds_to(Unit *u) {
                         continue;
 
                 stop = true;
+                break;
         }
 
         if (!stop)
                 return;
 
-        log_unit_info(u->id, "Unit %s is bound to inactive unit. Stopping, too.", u->id);
+        assert(other);
+        log_unit_info(u->id, "Unit %s is bound to inactive unit %s. Stopping, too.", u->id, other->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);
-- 
1.8.3.1



More information about the systemd-devel mailing list