journald: fix flushing

Commit 74055aa762 'journalctl: add new --flush command and make use of
it in systemd-journal-flush.service' broke flushing because journald
checks for the /run/systemd/journal/flushed file before opening the
permanent journal. When the creation of this file was postponed,
flushing stoppage ensued.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2014-10-26 00:14:30 -04:00
parent e95c98378a
commit caa2f4c0c9

View File

@@ -919,7 +919,7 @@ finish:
}
static int system_journal_open(Server *s) {
static int system_journal_open(Server *s, bool flush_requested) {
int r;
char *fn;
sd_id128_t machine;
@@ -935,7 +935,8 @@ static int system_journal_open(Server *s) {
if (!s->system_journal &&
(s->storage == STORAGE_PERSISTENT || s->storage == STORAGE_AUTO) &&
access("/run/systemd/journal/flushed", F_OK) >= 0) {
(flush_requested
|| access("/run/systemd/journal/flushed", F_OK) >= 0)) {
/* If in auto mode: first try to create the machine
* path, but not the prefix.
@@ -1029,7 +1030,7 @@ int server_flush_to_var(Server *s) {
if (!s->runtime_journal)
return 0;
system_journal_open(s);
system_journal_open(s, true);
if (!s->system_journal)
return 0;
@@ -1586,7 +1587,7 @@ int server_init(Server *s) {
server_cache_boot_id(s);
server_cache_machine_id(s);
r = system_journal_open(s);
r = system_journal_open(s, false);
if (r < 0)
return r;