From: Lennart Poettering Date: Sun, 11 Jul 2010 02:22:00 +0000 (+0200) Subject: units: turn Wants=shutdown back into Requires=shutdown to avoid removal of jobs due... X-Git-Tag: v3~43 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=983d9c90151f4b85301bd8078afd560269e75961 units: turn Wants=shutdown back into Requires=shutdown to avoid removal of jobs due to the impact minimizer --- diff --git a/src/systemctl.c b/src/systemctl.c index d033a7528..d1892e4ae 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -794,12 +794,17 @@ finish: } static int start_special(DBusConnection *bus, char **args, unsigned n) { + int r; + assert(bus); assert(args); - warn_wall(verb_to_action(args[0])); + r = start_unit(bus, args, n); + + if (r >= 0) + warn_wall(verb_to_action(args[0])); - return start_unit(bus, args, n); + return r; } static int check_unit(DBusConnection *bus, char **args, unsigned n) { @@ -3292,26 +3297,29 @@ static int reload_with_fallback(DBusConnection *bus) { static int start_with_fallback(DBusConnection *bus) { int r; - warn_wall(arg_action); if (bus) { /* First, try systemd via D-Bus. */ if ((r = start_unit(bus, NULL, 0)) > 0) - return 0; + goto done; /* Hmm, talking to systemd via D-Bus didn't work. Then * let's try to talk to Upstart via D-Bus. */ if ((r = talk_upstart()) > 0) - return 0; + goto done; } /* Nothing else worked, so let's try * /dev/initctl */ if ((r = talk_initctl()) != 0) - return 0; + goto done; log_error("Failed to talk to init daemon."); return -EIO; + +done: + warn_wall(arg_action); + return 0; } static int halt_main(DBusConnection *bus) { diff --git a/units/arch/halt.service b/units/arch/halt.service index 190e4fee8..87224e34b 100644 --- a/units/arch/halt.service +++ b/units/arch/halt.service @@ -8,7 +8,7 @@ [Unit] Description=Halt DefaultDependencies=no -Wants=shutdown.target +Requires=shutdown.target After=shutdown.target Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount diff --git a/units/arch/poweroff.service b/units/arch/poweroff.service index 0b1ee89aa..ffa592c8f 100644 --- a/units/arch/poweroff.service +++ b/units/arch/poweroff.service @@ -8,7 +8,7 @@ [Unit] Description=Power-Off DefaultDependencies=no -Wants=shutdown.target +Requires=shutdown.target After=shutdown.target Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount diff --git a/units/arch/reboot.service b/units/arch/reboot.service index 274f4075f..934903dc6 100644 --- a/units/arch/reboot.service +++ b/units/arch/reboot.service @@ -8,7 +8,7 @@ [Unit] Description=Reboot DefaultDependencies=no -Wants=shutdown.target +Requires=shutdown.target After=shutdown.target Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount diff --git a/units/emergency.service b/units/emergency.service index 0014c263b..bcedebfa0 100644 --- a/units/emergency.service +++ b/units/emergency.service @@ -10,7 +10,7 @@ [Unit] Description=Emergency Shell DefaultDependencies=no -Wants=shutdown.target umount.target +Requires=shutdown.target umount.target After=shutdown.target umount.target [Service] diff --git a/units/fedora/halt.service b/units/fedora/halt.service index 0c0fa5fa3..b957a3fe3 100644 --- a/units/fedora/halt.service +++ b/units/fedora/halt.service @@ -8,7 +8,7 @@ [Unit] Description=Halt DefaultDependencies=no -Wants=shutdown.target killall.service +Requires=shutdown.target killall.service After=shutdown.target killall.service Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount diff --git a/units/fedora/poweroff.service b/units/fedora/poweroff.service index 913edc489..76d030c04 100644 --- a/units/fedora/poweroff.service +++ b/units/fedora/poweroff.service @@ -8,7 +8,7 @@ [Unit] Description=Power-Off DefaultDependencies=no -Wants=shutdown.target killall.service +Requires=shutdown.target killall.service After=shutdown.target killall.service Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount diff --git a/units/fedora/reboot.service b/units/fedora/reboot.service index c81b13ecd..6a93c0b55 100644 --- a/units/fedora/reboot.service +++ b/units/fedora/reboot.service @@ -8,7 +8,7 @@ [Unit] Description=Reboot DefaultDependencies=no -Wants=shutdown.target killall.service +Requires=shutdown.target killall.service After=shutdown.target killall.service Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount diff --git a/units/gentoo/halt.service b/units/gentoo/halt.service index 28db813fb..19ead8a31 100644 --- a/units/gentoo/halt.service +++ b/units/gentoo/halt.service @@ -8,7 +8,7 @@ [Unit] Description=Halt DefaultDependencies=no -Wants=shutdown.target killall.service +Requires=shutdown.target killall.service After=shutdown.target killall.service Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount diff --git a/units/gentoo/poweroff.service b/units/gentoo/poweroff.service index da6f48f74..9ceb205b0 100644 --- a/units/gentoo/poweroff.service +++ b/units/gentoo/poweroff.service @@ -8,7 +8,7 @@ [Unit] Description=Power-Off DefaultDependencies=no -Wants=shutdown.target killall.service +Requires=shutdown.target killall.service After=shutdown.target killall.service Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount diff --git a/units/gentoo/reboot.service b/units/gentoo/reboot.service index a0f357538..c223e6c26 100644 --- a/units/gentoo/reboot.service +++ b/units/gentoo/reboot.service @@ -8,7 +8,7 @@ [Unit] Description=Reboot DefaultDependencies=no -Wants=shutdown.target killall.service +Requires=shutdown.target killall.service After=shutdown.target killall.service Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount diff --git a/units/session/exit.service.in b/units/session/exit.service.in index 3e5b5bff7..1f515a75c 100644 --- a/units/session/exit.service.in +++ b/units/session/exit.service.in @@ -1,7 +1,7 @@ [Unit] Description=Exit DefaultDependencies=no -Wants=shutdown.target +Requires=shutdown.target After=shutdown.target [Service] diff --git a/units/suse/halt.service b/units/suse/halt.service index 00bbfa93f..5f42ac691 100644 --- a/units/suse/halt.service +++ b/units/suse/halt.service @@ -8,7 +8,7 @@ [Unit] Description=Halt DefaultDependencies=no -Wants=shutdown.target +Requires=shutdown.target After=shutdown.target Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount diff --git a/units/suse/poweroff.service b/units/suse/poweroff.service index e9aff275d..93a9da502 100644 --- a/units/suse/poweroff.service +++ b/units/suse/poweroff.service @@ -8,7 +8,7 @@ [Unit] Description=Power-Off DefaultDependencies=no -Wants=shutdown.target +Requires=shutdown.target After=shutdown.target Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount diff --git a/units/suse/reboot.service b/units/suse/reboot.service index e9b76b61d..c3526b303 100644 --- a/units/suse/reboot.service +++ b/units/suse/reboot.service @@ -8,7 +8,7 @@ [Unit] Description=Reboot DefaultDependencies=no -Wants=shutdown.target +Requires=shutdown.target After=shutdown.target Conflicts=dev-hugepages.automount dev-mqueue.automount proc-sys-fs-binfmt_misc.automount sys-kernel-debug.automount sys-kernel-security.automount