diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml
index 035382913f..aa0d8b12ae 100644
--- a/man/systemd-fsck@.service.xml
+++ b/man/systemd-fsck@.service.xml
@@ -55,9 +55,18 @@
the filesystem should actually be checked based on the time since
last check, number of mounts, unclean unmount, etc.
- If a file system check fails for a service without
- , emergency mode is activated, by isolating
- to emergency.target.
+ systemd-fsck-root.service will activate
+ reboot.target if /sbin/fsck
+ returns the "System should reboot" condition, or
+ emergency.target if /sbin/fsck
+ returns the "Filesystem errors left uncorrected" condition.
+
+ systemd-fsck@.service will fail if
+ /sbin/fsck returns with either "System should reboot"
+ or "Filesystem errors left uncorrected" conditions. For filesystems
+ listed in /etc/fstab without nofail
+ or noauto options, local-fs.target
+ will then activate emergency.target.
diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
index cd7adfaeb9..745d01ff50 100644
--- a/src/fsck/fsck.c
+++ b/src/fsck/fsck.c
@@ -52,7 +52,7 @@ static void start_target(const char *target, const char *mode) {
return;
}
- log_info("Running request %s/start/replace", target);
+ log_info("Running request %s/start/%s", target, mode);
/* Start these units only if we can replace base.target with it */
r = sd_bus_call_method(bus,
@@ -412,10 +412,7 @@ static int run(int argc, char *argv[]) {
/* System should be rebooted. */
start_target(SPECIAL_REBOOT_TARGET, "replace-irreversibly");
return -EINVAL;
- } else if (exit_status & (FSCK_SYSTEM_SHOULD_REBOOT | FSCK_ERRORS_LEFT_UNCORRECTED))
- /* Some other problem */
- start_target(SPECIAL_EMERGENCY_TARGET, "replace");
- else
+ } else if (!(exit_status & (FSCK_SYSTEM_SHOULD_REBOOT | FSCK_ERRORS_LEFT_UNCORRECTED)))
log_warning("Ignoring error.");
}
diff --git a/units/systemd-fsck-root.service.in b/units/systemd-fsck-root.service.in
index 6897f13159..8378df84c7 100644
--- a/units/systemd-fsck-root.service.in
+++ b/units/systemd-fsck-root.service.in
@@ -14,6 +14,8 @@ DefaultDependencies=no
Conflicts=shutdown.target
Before=local-fs.target shutdown.target
ConditionPathIsReadWrite=!/
+OnFailure=emergency.target
+OnFailureJobMode=replace-irreversibly
[Service]
Type=oneshot