From: Lennart Poettering Date: Thu, 29 Dec 2011 14:25:42 +0000 (+0100) Subject: journald: don't recheck /var availability more often than 30s X-Git-Tag: v38~144^2~7 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=54a7b863dd3937893abae47b20b6f655b8e9252a journald: don't recheck /var availability more often than 30s --- diff --git a/src/journal/journald.c b/src/journal/journald.c index 1efe0420d..52cdc7058 100644 --- a/src/journal/journald.c +++ b/src/journal/journald.c @@ -51,6 +51,8 @@ #define RECHECK_AVAILABLE_SPACE_USEC (30*USEC_PER_SEC) +#define RECHECK_VAR_AVAILABLE_USEC (30*USEC_PER_SEC) + typedef struct StdoutStream StdoutStream; typedef struct Server { @@ -78,6 +80,8 @@ typedef struct Server { uint64_t cached_available_space; usec_t cached_available_space_timestamp; + uint64_t var_available_timestamp; + LIST_HEAD(StdoutStream, stdout_streams); unsigned n_stdout_streams; } Server; @@ -1200,12 +1204,22 @@ static int server_flush_to_var(Server *s) { int r; sd_id128_t machine; sd_journal *j; + usec_t ts; assert(s); + if (!s->runtime_journal) + return 0; + + ts = now(CLOCK_MONOTONIC); + if (s->var_available_timestamp + RECHECK_VAR_AVAILABLE_USEC > ts) + return 0; + + s->var_available_timestamp = ts; + system_journal_open(s); - if (!s->system_journal || !s->runtime_journal) + if (!s->system_journal) return 0; r = sd_id128_get_machine(&machine); diff --git a/src/journal/sd-journal.h b/src/journal/sd-journal.h index f6b1c955f..97f9f0fa1 100644 --- a/src/journal/sd-journal.h +++ b/src/journal/sd-journal.h @@ -36,6 +36,7 @@ * - accelerate looking for "all hostnames" and suchlike. * - hookup with systemctl * - handle incomplete header + * - write unit files * * - local deserializer * - http server