chiark / gitweb /
log: fix fallbacks to kmsg
authorMichal Schmidt <mschmidt@redhat.com>
Fri, 15 Feb 2013 21:41:19 +0000 (22:41 +0100)
committerMichal Schmidt <mschmidt@redhat.com>
Sat, 16 Feb 2013 00:16:32 +0000 (01:16 +0100)
write_to_journal() returns 0 if journal_fd is closed and nothing is
written. We need to make sure we'll try log_open_kmsg() then to make the
fallback work for "journal-or-kmsg".

src/shared/log.c

index 293c261f9e83bbde58a3a17483f787ccf4ffc366..ff2dd453509a2b813c942c6208211dea026887d6 100644 (file)
@@ -541,11 +541,11 @@ static int log_dispatch(
 
                         k = write_to_journal(level, file, line, func,
                                              object_name, object, buffer);
-                        if (k < 0) {
-                                if (k != -EAGAIN)
+                        if (k <= 0) {
+                                if (k < 0 && k != -EAGAIN)
                                         log_close_journal();
                                 log_open_kmsg();
-                        } else if (k > 0)
+                        } else
                                 r++;
                 }
 
@@ -554,11 +554,11 @@ static int log_dispatch(
 
                         k = write_to_syslog(level, file, line, func,
                                             object_name, object, buffer);
-                        if (k < 0) {
-                                if (k != -EAGAIN)
+                        if (k <= 0) {
+                                if (k < 0 && k != -EAGAIN)
                                         log_close_syslog();
                                 log_open_kmsg();
-                        } else if (k > 0)
+                        } else
                                 r++;
                 }
 
@@ -571,10 +571,11 @@ static int log_dispatch(
 
                         k = write_to_kmsg(level, file, line, func,
                                           object_name, object, buffer);
-                        if (k < 0) {
-                                log_close_kmsg();
+                        if (k <= 0) {
+                                if (k < 0 && k != -EAGAIN)
+                                        log_close_kmsg();
                                 log_open_console();
-                        } else if (k > 0)
+                        } else
                                 r++;
                 }