X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fjournal%2Fjournald.c;h=ae1fbc4bd451952aa5660d58774be7f632de9a52;hp=8f00aef5bd41a313994b65629677d57bd5fccd9a;hb=669241a076108e0483d7d8475beaa506106d077e;hpb=71fa6f006f92831c0c02e844b4c35e4b7197c6d6 diff --git a/src/journal/journald.c b/src/journal/journald.c index 8f00aef5b..ae1fbc4bd 100644 --- a/src/journal/journald.c +++ b/src/journal/journald.c @@ -313,7 +313,7 @@ static JournalFile* find_journal(Server *s, uid_t uid) { journal_file_close(f); } - r = journal_file_open_reliably(p, O_RDWR|O_CREAT, 0640, s->system_journal, &f); + r = journal_file_open_reliably(p, O_RDWR|O_CREAT, 0640, &s->system_metrics, s->system_journal, &f); free(p); if (r < 0) @@ -478,6 +478,10 @@ static void write_to_journal(Server *s, uid_t uid, struct iovec *iovec, unsigned server_rotate(s); server_vacuum(s); vacuumed = true; + + f = find_journal(s, uid); + if (!f) + return; } for (;;) { @@ -513,6 +517,10 @@ static void write_to_journal(Server *s, uid_t uid, struct iovec *iovec, unsigned server_vacuum(s); vacuumed = true; + f = find_journal(s, uid); + if (!f) + return; + log_info("Retrying write."); } } @@ -860,7 +868,8 @@ static void forward_syslog_iovec(Server *s, const struct iovec *iovec, unsigned return; } - log_debug("Failed to forward syslog message: %m"); + if (errno != ENOENT) + log_debug("Failed to forward syslog message: %m"); } static void forward_syslog_raw(Server *s, int priority, const char *buffer, struct ucred *ucred, struct timeval *tv) { @@ -1261,7 +1270,7 @@ static void process_native_message( u = MAX((n+N_IOVEC_META_FIELDS+1) * 2U, 4U); c = realloc(iovec, u * sizeof(struct iovec)); if (!c) { - log_error("Out of memory"); + log_error("Out of memory."); break; } @@ -1348,7 +1357,7 @@ static void process_native_message( k = malloc((e - p) + 1 + l); if (!k) { - log_error("Out of memory"); + log_error("Out of memory."); break; } @@ -1441,7 +1450,7 @@ static void process_native_file( p = malloc(st.st_size); if (!p) { - log_error("Out of memory"); + log_error("Out of memory."); return; } @@ -1534,7 +1543,7 @@ static int stdout_stream_line(StdoutStream *s, char *p) { else { s->identifier = strdup(p); if (!s->identifier) { - log_error("Out of memory"); + log_error("Out of memory."); return -ENOMEM; } } @@ -1549,7 +1558,7 @@ static int stdout_stream_line(StdoutStream *s, char *p) { else { s->unit_id = strdup(p); if (!s->unit_id) { - log_error("Out of memory"); + log_error("Out of memory."); return -ENOMEM; } } @@ -2005,13 +2014,10 @@ static int system_journal_open(Server *s) { if (!fn) return -ENOMEM; - r = journal_file_open_reliably(fn, O_RDWR|O_CREAT, 0640, NULL, &s->system_journal); + r = journal_file_open_reliably(fn, O_RDWR|O_CREAT, 0640, &s->system_metrics, NULL, &s->system_journal); free(fn); if (r >= 0) { - journal_default_metrics(&s->system_metrics, s->system_journal->fd); - - s->system_journal->metrics = s->system_metrics; s->system_journal->compress = s->compress; server_fix_perms(s, s->system_journal, 0); @@ -2037,7 +2043,7 @@ static int system_journal_open(Server *s) { * if it already exists, so that we can flush * it into the system journal */ - r = journal_file_open(fn, O_RDWR, 0640, NULL, &s->runtime_journal); + r = journal_file_open(fn, O_RDWR, 0640, &s->runtime_metrics, NULL, &s->runtime_journal); free(fn); if (r < 0) { @@ -2053,7 +2059,7 @@ static int system_journal_open(Server *s) { * it if necessary. */ (void) mkdir_parents(fn, 0755); - r = journal_file_open_reliably(fn, O_RDWR|O_CREAT, 0640, NULL, &s->runtime_journal); + r = journal_file_open_reliably(fn, O_RDWR|O_CREAT, 0640, &s->runtime_metrics, NULL, &s->runtime_journal); free(fn); if (r < 0) { @@ -2063,9 +2069,6 @@ static int system_journal_open(Server *s) { } if (s->runtime_journal) { - journal_default_metrics(&s->runtime_metrics, s->runtime_journal->fd); - - s->runtime_journal->metrics = s->runtime_metrics; s->runtime_journal->compress = s->compress; server_fix_perms(s, s->runtime_journal, 0); @@ -2144,11 +2147,8 @@ finish: journal_file_close(s->runtime_journal); s->runtime_journal = NULL; - if (r >= 0) { - char path[] = "/run/log/journal/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; - sd_id128_to_string(machine, path + 17); - rm_rf(path, false, true, false); - } + if (r >= 0) + rm_rf("/run/log/journal", false, true, false); return r; } @@ -2225,6 +2225,8 @@ static int process_event(Server *s, struct epoll_event *ev) { return -errno; } + log_info("Received SIG%s", signal_to_string(sfsi.ssi_signo)); + if (sfsi.ssi_signo == SIGUSR1) { touch("/run/systemd/journal/flushed"); server_flush_to_var(s); @@ -2237,7 +2239,6 @@ static int process_event(Server *s, struct epoll_event *ev) { return 1; } - log_debug("Received SIG%s", signal_to_string(sfsi.ssi_signo)); return 0; } else if (ev->data.fd == s->proc_kmsg_fd) {