chiark / gitweb /
journald: don't recheck /var availability more often than 30s
authorLennart Poettering <lennart@poettering.net>
Thu, 29 Dec 2011 14:25:42 +0000 (15:25 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 29 Dec 2011 14:25:42 +0000 (15:25 +0100)
src/journal/journald.c
src/journal/sd-journal.h

index 1efe0420dbdb869b35a12841c3f6d95023c333a2..52cdc7058c998a5fafd776685569b64622bbf10f 100644 (file)
@@ -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);
index f6b1c955fb04958065e50abf843532fb1f041446..97f9f0fa13e4177e4ee086ee9e1157257c3bc14a 100644 (file)
@@ -36,6 +36,7 @@
  *   - accelerate looking for "all hostnames" and suchlike.
  *   - hookup with systemctl
  *   - handle incomplete header
+ *   - write unit files
  *
  *   - local deserializer
  *   - http server