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];
}