diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 2932a190ff..897e2abd3a 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -871,12 +871,12 @@ static bool shall_try_append_again(JournalFile *f, int r) { log_ratelimit_info_errno(r, JOURNAL_LOG_RATELIMIT, "%s: Realtime clock jumped backwards relative to last journal entry, rotating.", f->path); return true; - case -EREMOTE: /* Boot ID different from the one of the last entry */ - log_ratelimit_info_errno(r, JOURNAL_LOG_RATELIMIT, "%s: Boot ID changed since last record, rotating.", f->path); - return true; - - case -ENOTNAM: /* Monotonic time (CLOCK_MONOTONIC) jumped backwards relative to last journal entry */ - log_ratelimit_info_errno(r, JOURNAL_LOG_RATELIMIT, "%s: Monotonic clock jumped backwards relative to last journal entry, rotating.", f->path); + case -ENOTNAM: /* Monotonic time (CLOCK_MONOTONIC) jumped backwards relative to last journal entry with the same boot ID */ + log_ratelimit_info_errno( + r, + JOURNAL_LOG_RATELIMIT, + "%s: Monotonic clock jumped backwards relative to last journal entry with the same boot ID, rotating.", + f->path); return true; case -EILSEQ: /* seqnum ID last used in the file doesn't match the one we'd passed when writing an entry to it */ diff --git a/src/libsystemd/sd-journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c index 1d118583c8..95cf25bff0 100644 --- a/src/libsystemd/sd-journal/journal-file.c +++ b/src/libsystemd/sd-journal/journal-file.c @@ -2287,18 +2287,15 @@ static int journal_file_append_entry_internal( "timestamp %" PRIu64 ", refusing entry.", ts->realtime, le64toh(f->header->tail_entry_realtime)); - if (!sd_id128_is_null(f->header->tail_entry_boot_id) && boot_id) { - - if (!sd_id128_equal(f->header->tail_entry_boot_id, *boot_id)) - return log_debug_errno(SYNTHETIC_ERRNO(EREMOTE), - "Boot ID to write is different from previous boot id, refusing entry."); - - if (ts->monotonic < le64toh(f->header->tail_entry_monotonic)) - return log_debug_errno(SYNTHETIC_ERRNO(ENOTNAM), - "Monotonic timestamp %" PRIu64 " smaller than previous monotonic " - "timestamp %" PRIu64 ", refusing entry.", - ts->monotonic, le64toh(f->header->tail_entry_monotonic)); - } + if ((!boot_id || sd_id128_equal(*boot_id, f->header->tail_entry_boot_id)) && + ts->monotonic < le64toh(f->header->tail_entry_monotonic)) + return log_debug_errno( + SYNTHETIC_ERRNO(ENOTNAM), + "Monotonic timestamp %" PRIu64 + " smaller than previous monotonic timestamp %" PRIu64 + " while having the same boot ID, refusing entry.", + ts->monotonic, + le64toh(f->header->tail_entry_monotonic)); } if (seqnum_id) {