From a4c24ff75a57efc95b34ece5a7805c3b156208ef Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Feb 2011 00:30:51 +0100 Subject: [PATCH] fsck: do not fail boot if fsck returns with an error code that hasn't 2 or 6 set --- TODO | 4 +--- src/fsck.c | 10 +++++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index b2b9682678..8f9f76e04b 100644 --- a/TODO +++ b/TODO @@ -5,9 +5,7 @@ Bugs: * when plymouth is disabled the console password entry stuff seems to be borked https://bugzilla.redhat.com/show_bug.cgi?id=655538 -* fsck.btrfs non-existance should not cause mounting to fail - -* single user service needs to be masked? +* systemctl default is started when we type "reboot" at rescue mode prompt Features: 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;