summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshenyangyang4 <shenyangyang4@huawei.com>2020-12-10 06:44:31 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-12-16 14:31:40 +0100
commit937118a5b2f27a7913c421ad76893cdda01c5566 (patch)
tree95cd628d2b3d73e2ecdce738e47e8d5d2fb6badf
parente017ac6a26aea64205583722fb463dd5bfdf58a4 (diff)
downloadsystemd-247.2.tar.gz
journalctl: don't skip the entries that have the same seqnumv247.2
These two judgement can't judge that two entries are repeating fully. So i think seqnum is needed to make full judgement. (cherry picked from commit b17f651a17cd6ec0ceac7835f2f8607fbd9ddb95)
-rw-r--r--src/journal/journal-file.c8
-rw-r--r--src/journal/sd-journal.c3
2 files changed, 8 insertions, 3 deletions
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index 1dbe81849c..bd9f9fe5a2 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -2745,12 +2745,14 @@ int journal_file_compare_locations(JournalFile *af, JournalFile *bf) {
assert(af->location_type == LOCATION_SEEK);
assert(bf->location_type == LOCATION_SEEK);
- /* If contents and timestamps match, these entries are
- * identical, even if the seqnum does not match */
+ /* If contents, timestamps and seqnum match, these entries are
+ * identical*/
if (sd_id128_equal(af->current_boot_id, bf->current_boot_id) &&
af->current_monotonic == bf->current_monotonic &&
af->current_realtime == bf->current_realtime &&
- af->current_xor_hash == bf->current_xor_hash)
+ af->current_xor_hash == bf->current_xor_hash &&
+ sd_id128_equal(af->header->seqnum_id, bf->header->seqnum_id) &&
+ af->current_seqnum == bf->current_seqnum)
return 0;
if (sd_id128_equal(af->header->seqnum_id, bf->header->seqnum_id)) {
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
index cb1ab88ca5..346970d1f7 100644
--- a/src/journal/sd-journal.c
+++ b/src/journal/sd-journal.c
@@ -448,6 +448,9 @@ _pure_ static int compare_with_location(const JournalFile *f, const Location *l,
f->current_realtime == l->realtime &&
l->xor_hash_set &&
f->current_xor_hash == l->xor_hash &&
+ l->seqnum_set &&
+ sd_id128_equal(f->header->seqnum_id, l->seqnum_id) &&
+ f->current_seqnum == l->seqnum &&
f != current_file)
return 0;