diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml index 035382913f3..aa0d8b12aed 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 cd7adfaeb96..745d01ff502 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 6897f13159e..8378df84c71 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