diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-02-15 00:30:51 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-02-15 00:30:51 +0100 |
commit | a4c24ff75a57efc95b34ece5a7805c3b156208ef (patch) | |
tree | 602f701099c487a834e4c963ac17250d127f375a /src/fsck.c | |
parent | 83cc030fadf71d63d488cf9015275f9e5a02e2cc (diff) |
fsck: do not fail boot if fsck returns with an error code that hasn't 2 or 6 set
Diffstat (limited to 'src/fsck.c')
-rw-r--r-- | src/fsck.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/fsck.c b/src/fsck.c index fdcf6b43c5..7855f3ac07 100644 --- a/src/fsck.c +++ b/src/fsck.c @@ -57,7 +57,7 @@ static void start_target(const char *target, bool isolate) { else mode = "replace"; - log_debug("Running request %s/start/%s", target, mode); + log_info("Running request %s/start/%s", target, mode); if (!(m = dbus_message_new_method_call("org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "StartUnitReplace"))) { log_error("Could not allocate message."); @@ -247,12 +247,16 @@ int main(int argc, char *argv[]) { else log_error("fsck failed due to unknown reason."); - if (status.si_code == CLD_EXITED && status.si_status & 2) + if (status.si_code == CLD_EXITED && (status.si_status & 2) && root_directory) /* System should be rebooted. */ start_target(SPECIAL_REBOOT_TARGET, false); - else + else if (status.si_code == CLD_EXITED && (status.si_status & 6)) /* Some other problem */ start_target(SPECIAL_EMERGENCY_TARGET, true); + else { + r = EXIT_SUCCESS; + log_warning("Ignoring error."); + } } else r = EXIT_SUCCESS; |