|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
From 89a8044039733dea760056d4109bb201300e9b65 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
From: Michal Sekletar <msekletar@users.noreply.github.com>
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
Date: Mon, 24 Apr 2017 18:33:12 +0200
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
Subject: [PATCH] sd-journal: return SD_JOURNAL_INVALIDATE only if journal
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
files were actually deleted/moved (#5580)
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
When caller invokes sd_journal_open() we usually open at least one
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
directory with journal files. add_root_directory() function increments
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
current_invalidate_counter. After sd_journal_open() returns
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
current_invalidate_counter != last_invalidate_counter.
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
After caller waits for journal events (e.g. waits for new messages in
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
journal) then it usually calls sd_journal_process(). However, on first
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
call to sd_journal_process(), function determine_change() returns
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
SD_JOURNAL_INVALIDATE even though no journal files were
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
deleted/moved. This is because current_invalidate_counter !=
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
last_invalidate_counter.
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
After the fix we make sure counters has the same value before we begin
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
processing inotify events.
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
(cherry picked from commit f934644424daa6c86fd2284fe8f33ea233ece874)
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
src/journal/sd-journal.c | 1 +
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
1 file changed, 1 insertion(+)
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
index 71967a0f33..86afb4985d 100644
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
--- a/src/journal/sd-journal.c
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
+++ b/src/journal/sd-journal.c
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
@@ -2424,6 +2424,7 @@ _public_ int sd_journal_process(sd_journal *j) {
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
assert_return(!journal_pid_changed(j), -ECHILD);
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
j->last_process_usec = now(CLOCK_MONOTONIC);
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
+ j->last_invalidate_counter = j->current_invalidate_counter;
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
for (;;) {
|
|
Zbigniew Jędrzejewski-Szmek |
f4a676 |
union inotify_event_buffer buffer;
|