diff --git a/man/systemctl.xml b/man/systemctl.xml index 0ceb26d59b..39229a0075 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -1006,8 +1006,8 @@ along with systemd; If not, see . halt - Shut down and halt the system. This is mostly - equivalent to start halt.target but also + Shut down and halt the system. This is mostly equivalent to + start halt.target --irreversible but also prints a wall message to all users. If combined with shutdown of all running services is skipped, however all processes are killed and all file @@ -1023,8 +1023,8 @@ along with systemd; If not, see . Shut down and power-off the system. This is mostly - equivalent to start poweroff.target but - also prints a wall message to all users. If combined with + equivalent to start poweroff.target --irreversible + but also prints a wall message to all users. If combined with shutdown of all running services is skipped, however all processes are killed and all file systems are unmounted or mounted read-only, immediately @@ -1039,8 +1039,8 @@ along with systemd; If not, see . Shut down and reboot the system. This is mostly - equivalent to start reboot.target but - also prints a wall message to all users. If combined with + equivalent to start reboot.target --irreversible + but also prints a wall message to all users. If combined with shutdown of all running services is skipped, however all processes are killed and all file systems are unmounted or mounted read-only, immediately @@ -1055,7 +1055,7 @@ along with systemd; If not, see . Shut down and reboot the system via kexec. This is - mostly equivalent to start kexec.target + mostly equivalent to start kexec.target --irreversible but also prints a wall message to all users. If combined with shutdown of all running services is skipped, however all processes are killed and diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index d235474a23..818f2fa808 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -1051,7 +1051,7 @@ static int execute_shutdown_or_sleep( DBusError *error) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; - const char *mode = "replace", *p; + const char *mode = "replace-irreversibly", *p; int r; char *c; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 723be76cdb..3d59a8bb1d 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1595,11 +1595,22 @@ static int start_unit(DBusConnection *bus, char **args) { streq(args[0], "force-reload") ? "ReloadOrTryRestartUnit" : "StartUnit"; - mode = - (streq(args[0], "isolate") || - streq(args[0], "rescue") || - streq(args[0], "emergency") || - streq(args[0], "default")) ? "isolate" : arg_job_mode; + if (streq(args[0], "isolate") || + streq(args[0], "rescue") || + streq(args[0], "emergency") || + streq(args[0], "default")) + mode = "isolate"; + else if (streq(args[0], "halt") || + streq(args[0], "poweroff") || + streq(args[0], "reboot") || + streq(args[0], "kexec") || + streq(args[0], "exit") || + streq(args[0], "suspend") || + streq(args[0], "hibernate") || + streq(args[0], "hybrid-sleep")) + mode = "replace-irreversibly"; + else + mode = arg_job_mode; one_name = table[verb_to_action(args[0])]; @@ -1614,7 +1625,7 @@ static int start_unit(DBusConnection *bus, char **args) { arg_action == ACTION_RUNLEVEL2 || arg_action == ACTION_RUNLEVEL3 || arg_action == ACTION_RUNLEVEL4 || - arg_action == ACTION_RUNLEVEL5) ? "isolate" : "replace"; + arg_action == ACTION_RUNLEVEL5) ? "isolate" : "replace-irreversibly"; one_name = table[arg_action]; }