chiark / gitweb /
fsck: do not fail boot if fsck returns with an error code that hasn't 2 or 6 set
authorLennart Poettering <lennart@poettering.net>
Mon, 14 Feb 2011 23:30:51 +0000 (00:30 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 14 Feb 2011 23:30:51 +0000 (00:30 +0100)
TODO
src/fsck.c

diff --git a/TODO b/TODO
index b2b96826784619433a8749ea0b06c3950609879e..8f9f76e04b051c4108e85559a4dc0d72e2148bf0 100644 (file)
--- 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:
 
index fdcf6b43c5d08335a650f7a0a713f3d3068aa945..7855f3ac071cd0d094065deab2ce135f36bb56ff 100644 (file)
@@ -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;