diff options
author | shenyangyang4 <shenyangyang4@huawei.com> | 2020-12-10 06:44:31 -0500 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2020-12-15 18:07:11 +0100 |
commit | b17f651a17cd6ec0ceac7835f2f8607fbd9ddb95 (patch) | |
tree | 5577821c22f09a827cc628070e682b82bacefa74 | |
parent | fa8342228b29e6cc419ca27159617dccc321d668 (diff) | |
download | systemd-b17f651a17cd6ec0ceac7835f2f8607fbd9ddb95.tar.gz |
journalctl: don't skip the entries that have the same seqnum
These two judgement can't judge that two entries are repeating fully.
So i think seqnum is needed to make full judgement.
-rw-r--r-- | src/journal/journal-file.c | 8 | ||||
-rw-r--r-- | src/journal/sd-journal.c | 3 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index bcd932554d..20c4edb6ca 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -2741,12 +2741,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 946f74d535..624fc5fab5 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; |