]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
journalctl: don't skip the entries that have the same seqnum v247.2
authorshenyangyang4 <shenyangyang4@huawei.com>
Thu, 10 Dec 2020 11:44:31 +0000 (06:44 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 16 Dec 2020 13:31:40 +0000 (14:31 +0100)
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)

src/journal/journal-file.c
src/journal/sd-journal.c

index 1dbe81849c2dd662f77e76e62878cd0eeb0d0784..bd9f9fe5a2ae4fd96e7559544376d275843ae14f 100644 (file)
@@ -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)) {
index cb1ab88ca57d1ba38cb3731756dd843a50a54074..346970d1f782583a906df6bab68ab53b3ce4c341 100644 (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;