summaryrefslogtreecommitdiff
path: root/src/fsck.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-02-15 00:30:51 +0100
committerLennart Poettering <lennart@poettering.net>2011-02-15 00:30:51 +0100
commita4c24ff75a57efc95b34ece5a7805c3b156208ef (patch)
tree602f701099c487a834e4c963ac17250d127f375a /src/fsck.c
parent83cc030fadf71d63d488cf9015275f9e5a02e2cc (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.c10
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;