summaryrefslogtreecommitdiff
path: root/src/journal
diff options
context:
space:
mode:
authorMichal Sekletar <msekletar@users.noreply.github.com>2017-04-24 18:33:12 +0200
committerLennart Poettering <lennart@poettering.net>2017-04-24 18:33:12 +0200
commitf934644424daa6c86fd2284fe8f33ea233ece874 (patch)
tree6453ed1739fd89428bfc6b7ee18e08834e133f91 /src/journal
parenta45e7bb4084bade974ef2c8b40172e548478aafd (diff)
sd-journal: return SD_JOURNAL_INVALIDATE only if journal files were actually deleted/moved (#5580)
When caller invokes sd_journal_open() we usually open at least one directory with journal files. add_root_directory() function increments current_invalidate_counter. After sd_journal_open() returns current_invalidate_counter != last_invalidate_counter. After caller waits for journal events (e.g. waits for new messages in journal) then it usually calls sd_journal_process(). However, on first call to sd_journal_process(), function determine_change() returns SD_JOURNAL_INVALIDATE even though no journal files were deleted/moved. This is because current_invalidate_counter != last_invalidate_counter. After the fix we make sure counters has the same value before we begin processing inotify events.
Diffstat (limited to 'src/journal')
-rw-r--r--src/journal/sd-journal.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
index 71967a0f33..86afb4985d 100644
--- a/src/journal/sd-journal.c
+++ b/src/journal/sd-journal.c
@@ -2424,6 +2424,7 @@ _public_ int sd_journal_process(sd_journal *j) {
assert_return(!journal_pid_changed(j), -ECHILD);
j->last_process_usec = now(CLOCK_MONOTONIC);
+ j->last_invalidate_counter = j->current_invalidate_counter;
for (;;) {
union inotify_event_buffer buffer;