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.
This commit is contained in:
shenyangyang4 2020-12-10 06:44:31 -05:00 committed by Lennart Poettering
parent fa8342228b
commit b17f651a17
2 changed files with 8 additions and 3 deletions

View File

@ -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)) {

View File

@ -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;