chiark / gitweb /
journald: don't rotate on startup
[elogind.git] / src / journal / journald.c
index b42be8d7ad2788ef55d409fdb326b1c5b5dd8036..47fe6edb0cad2ac85ca42f972837551937c41595 100644 (file)
@@ -306,14 +306,11 @@ static JournalFile* find_journal(Server *s, uid_t uid) {
         return f;
 }
 
-static void server_vacuum(Server *s) {
-        Iterator i;
+static void server_rotate(Server *s) {
+        JournalFile *f;
         void *k;
-        char *p;
-        char ids[33];
-        sd_id128_t machine;
+        Iterator i;
         int r;
-        JournalFile *f;
 
         log_info("Rotating...");
 
@@ -336,6 +333,13 @@ static void server_vacuum(Server *s) {
                 else
                         hashmap_replace(s->user_journals, k, f);
         }
+}
+
+static void server_vacuum(Server *s) {
+        char *p;
+        char ids[33];
+        sd_id128_t machine;
+        int r;
 
         log_info("Vacuuming...");
 
@@ -565,6 +569,7 @@ retry:
                 if (r == -E2BIG && !vacuumed) {
                         log_info("Allocation limit reached.");
 
+                        server_rotate(s);
                         server_vacuum(s);
                         vacuumed = true;
 
@@ -1308,6 +1313,7 @@ static int server_flush_to_var(Server *s) {
                         log_info("Allocation limit reached.");
 
                         journal_file_post_change(s->system_journal);
+                        server_rotate(s);
                         server_vacuum(s);
 
                         r = journal_file_copy_entry(f, s->system_journal, o, f->current_offset, NULL, NULL, NULL);