]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
journald: be a bit more verbose when vacuuming
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 10 Sep 2013 12:20:24 +0000 (08:20 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 10 Sep 2013 12:27:30 +0000 (08:27 -0400)
Vacuuming behaviour is a bit confusing, and/or we have some bugs,
so those additional messages should help to find out what's going
on. Also, rotation of journal files shouldn't be happening too
often, so the level of the messages is bumped to info, so that
they'll be logged under normal operation.

src/initctl/initctl.c
src/journal/journal-vacuum.c
src/journal/journalctl.c
src/journal/journald-server.c

index 5fbce4a9a76b77c64f7cb0a8ec7370384b028d6b..ec33040509094b8e584d1159d3a9dd91903d91e5 100644 (file)
@@ -223,8 +223,10 @@ static int fifo_process(Fifo *f) {
         assert(f);
 
         errno = EIO;
-        if ((l = read(f->fd, ((uint8_t*) &f->buffer) + f->bytes_read, sizeof(f->buffer) - f->bytes_read)) <= 0) {
-
+        l = read(f->fd,
+                 ((uint8_t*) &f->buffer) + f->bytes_read,
+                 sizeof(f->buffer) - f->bytes_read);
+        if (l <= 0) {
                 if (errno == EAGAIN)
                         return 0;
 
@@ -372,8 +374,8 @@ static int process_event(Server *s, struct epoll_event *ev) {
         }
 
         f = (Fifo*) ev->data.ptr;
-
-        if ((r = fifo_process(f)) < 0) {
+        r = fifo_process(f);
+        if (r < 0) {
                 log_info("Got error on fifo: %s", strerror(-r));
                 fifo_free(f);
                 return r;
index 178c8030dbe56b2ef86be90a4a4afbc629545850..c73ad8f3938f8ce015322b85b8b589c126ff03f8 100644 (file)
@@ -159,7 +159,7 @@ int journal_directory_vacuum(
         struct vacuum_info *list = NULL;
         unsigned n_list = 0, i;
         size_t n_allocated = 0;
-        uint64_t sum = 0;
+        uint64_t sum = 0, freed = 0;
         usec_t retention_limit = 0;
 
         assert(directory);
@@ -267,13 +267,17 @@ int journal_directory_vacuum(
                         continue;
 
                 if (journal_file_empty(dirfd(d), p)) {
-
                         /* Always vacuum empty non-online files. */
 
-                        if (unlinkat(dirfd(d), p, 0) >= 0)
-                                log_debug("Deleted empty journal %s/%s.", directory, p);
-                        else if (errno != ENOENT)
+                        uint64_t size = 512UL * (uint64_t) st.st_blocks;
+
+                        if (unlinkat(dirfd(d), p, 0) >= 0) {
+                                log_info("Deleted empty journal %s/%s (%"PRIu64" bytes).",
+                                         directory, p, size);
+                                freed += size;
+                        } else if (errno != ENOENT)
                                 log_warning("Failed to delete %s/%s: %m", directory, p);
+
                         continue;
                 }
 
@@ -310,7 +314,9 @@ int journal_directory_vacuum(
                         break;
 
                 if (unlinkat(dirfd(d), list[i].filename, 0) >= 0) {
-                        log_debug("Deleted archived journal %s/%s.", directory, list[i].filename);
+                        log_debug("Deleted archived journal %s/%s (%"PRIu64" bytes).",
+                                  directory, list[i].filename, list[i].usage);
+                        freed += list[i].usage;
 
                         if (list[i].usage < sum)
                                 sum -= list[i].usage;
@@ -329,5 +335,7 @@ finish:
                 free(list[i].filename);
         free(list);
 
+        log_info("Vacuuming done, freed %"PRIu64" bytes", freed);
+
         return r;
 }
index 27c148e689d7b32f1876a8228dd2fc9ecb1ca07f..9a2d2553617ad9b50570f50ce4020e0da8a445db 100644 (file)
@@ -1301,7 +1301,7 @@ static int access_check(sd_journal *j) {
 
 int main(int argc, char *argv[]) {
         int r;
-        _cleanup_journal_close_ sd_journal*j = NULL;
+        _cleanup_journal_close_ sd_journal *j = NULL;
         bool need_seek = false;
         sd_id128_t previous_boot_id;
         bool previous_boot_id_valid = false, first_line = true;
index 14afcfb794eb09d4f23bb368c736ab9fe52433fb..9daeb6e9e71703be609dee7c9921a2d60b372d8f 100644 (file)
@@ -1092,6 +1092,8 @@ int process_event(Server *s, struct epoll_event *ev) {
                 }
 
                 if (sfsi.ssi_signo == SIGUSR1) {
+                        log_info("Received request to flush runtime journal from PID %"PRIu32,
+                                 sfsi.ssi_pid);
                         touch("/run/systemd/journal/flushed");
                         server_flush_to_var(s);
                         server_sync(s);
@@ -1099,6 +1101,8 @@ int process_event(Server *s, struct epoll_event *ev) {
                 }
 
                 if (sfsi.ssi_signo == SIGUSR2) {
+                        log_info("Received request to rotate journal from PID %"PRIu32,
+                                 sfsi.ssi_pid);
                         server_rotate(s);
                         server_vacuum(s);
                         return 1;