mirror of
https://github.com/systemd/systemd.git
synced 2025-03-28 02:50:16 +03:00
fsck: no emergency.target on nofail mounts
Also describe failure behavior more precisely in the manpage. Fixes #20237.
This commit is contained in:
parent
899acf5c2d
commit
4b499063ac
@ -55,9 +55,18 @@
|
||||
the filesystem should actually be checked based on the time since
|
||||
last check, number of mounts, unclean unmount, etc.</para>
|
||||
|
||||
<para>If a file system check fails for a service without
|
||||
<option>nofail</option>, emergency mode is activated, by isolating
|
||||
to <filename>emergency.target</filename>.</para>
|
||||
<para><filename>systemd-fsck-root.service</filename> will activate
|
||||
<filename>reboot.target</filename> if <filename>/sbin/fsck</filename>
|
||||
returns the "System should reboot" condition, or
|
||||
<filename>emergency.target</filename> if <filename>/sbin/fsck</filename>
|
||||
returns the "Filesystem errors left uncorrected" condition.</para>
|
||||
|
||||
<para><filename>systemd-fsck@.service</filename> will fail if
|
||||
<filename>/sbin/fsck</filename> returns with either "System should reboot"
|
||||
or "Filesystem errors left uncorrected" conditions. For filesystems
|
||||
listed in <filename>/etc/fstab</filename> without <literal>nofail</literal>
|
||||
or <literal>noauto</literal> options, <literal>local-fs.target</literal>
|
||||
will then activate <filename>emergency.target</filename>.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
@ -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.");
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user