systemctl: warn about triggering units only at the end

Instead of checking each unit separately, check once at the end. This
should avoid spurious warnings about a service being triggerable by
other stuff.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2012-09-18 22:03:34 +02:00
parent d39b034af6
commit 49111a708e
2 changed files with 10 additions and 11 deletions

6
TODO
View File

@ -1,10 +1,4 @@
Bugfixes:
* there is nothing to warn about here :)
$ systemctl stop systemd-udevd.service systemd-udevd-kernel.socket systemd-udevd-control.socket
Warning: Stopping systemd-udevd.service, but it can still be activated by:
systemd-udevd-control.socket
systemd-udevd-kernel.socket
* check systemd-tmpfiles for selinux context hookup for mknod(), symlink() and similar
* swap units that are activated by one name but shown in the kernel under another are semi-broken

View File

@ -1584,11 +1584,6 @@ static int start_unit_one(
p = NULL;
}
/* When stopping a unit warn if it can still be triggered by
* another active unit (socket, path, timer) */
if (!arg_quiet && streq(method, "StopUnit"))
check_triggering_units(bus, name);
return 0;
}
@ -1723,6 +1718,16 @@ static int start_unit(DBusConnection *bus, char **args) {
ret = r;
goto finish;
}
/* When stopping units, warn if they can still be triggered by
* another active unit (socket, path, timer) */
if (!arg_quiet && streq(method, "StopUnit")) {
if (one_name)
check_triggering_units(bus, one_name);
else
STRV_FOREACH(name, args+1)
check_triggering_units(bus, *name);
}
}
finish: