Sophie

Sophie

distrib > Fedora > 17 > i386 > media > updates-src > by-pkgid > ab4b662b9827b6375ffd451bf4abd615 > files > 7

systemd-44-24.fc17.src.rpm

From 0cabeb9af382be288363ac4466499cae3c534b51 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Wed, 21 Mar 2012 23:40:51 +0100
Subject: [PATCH] journal: react with immediate rotation to a couple of more
 errors (cherry picked from commit
 0071d9f1db6dc9a1035cf5afb81455b67ed462f6)

---
 src/journal/journal-file.c |    5 ++++-
 src/journal/journald.c     |   10 +++++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index 474dd5c..5d540a7 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -1887,7 +1887,10 @@ int journal_file_open_reliably(
         char *p;
 
         r = journal_file_open(fname, flags, mode, template, ret);
-        if (r != -EBADMSG)
+        if (r != -EBADMSG && /* corrupted */
+            r != -ENODATA && /* truncated */
+            r != -EHOSTDOWN && /* other machine */
+            r != -EPROTONOSUPPORT) /* incompatible feature */
                 return r;
 
         if ((flags & O_ACCMODE) == O_RDONLY)
diff --git a/src/journal/journald.c b/src/journal/journald.c
index baad3ab..d27cb60 100644
--- a/src/journal/journald.c
+++ b/src/journal/journald.c
@@ -609,7 +609,15 @@ retry:
         else {
                 r = journal_file_append_entry(f, NULL, iovec, n, &s->seqnum, NULL, NULL);
 
-                if ((r == -EBADMSG || r == -E2BIG) && !vacuumed) {
+                if ((r == -E2BIG || /* hit limit */
+                     r == -EFBIG || /* hit fs limit */
+                     r == -EDQUOT || /* quota hit */
+                     r == -ENOSPC || /* disk full */
+                     r == -EBADMSG || /* corrupted */
+                     r == -ENODATA || /* truncated */
+                     r == -EHOSTDOWN || /* other machine */
+                     r == -EPROTONOSUPPORT) && /* unsupported feature */
+                    !vacuumed) {
 
                         if (r == -E2BIG)
                                 log_info("Allocation limit reached, rotating.");