diff --git a/src/journal-remote/journal-remote-write.c b/src/journal-remote/journal-remote-write.c index fd7cb91f2c..b82cb10118 100644 --- a/src/journal-remote/journal-remote-write.c +++ b/src/journal-remote/journal-remote-write.c @@ -3,8 +3,8 @@ #include "alloc-util.h" #include "journal-remote.h" -static int do_rotate(JournaldFile **f, bool compress, bool seal) { - int r = journald_file_rotate(f, compress, UINT64_MAX, seal, NULL); +static int do_rotate(JournaldFile **f, MMapCache *m, bool compress, bool seal) { + int r = journald_file_rotate(f, m, compress, UINT64_MAX, seal, NULL); if (r < 0) { if (*f) log_error_errno(r, "Failed to rotate %s: %m", (*f)->file->path); @@ -71,7 +71,7 @@ int writer_write(Writer *w, if (journal_file_rotate_suggested(w->journal->file, 0, LOG_DEBUG)) { log_info("%s: Journal header limits reached or header out-of-date, rotating", w->journal->file->path); - r = do_rotate(&w->journal, compress, seal); + r = do_rotate(&w->journal, w->mmap, compress, seal); if (r < 0) return r; } @@ -87,7 +87,7 @@ int writer_write(Writer *w, return r; log_debug_errno(r, "%s: Write failed, rotating: %m", w->journal->file->path); - r = do_rotate(&w->journal, compress, seal); + r = do_rotate(&w->journal, w->mmap, compress, seal); if (r < 0) return r; else diff --git a/src/journal/journald-file.c b/src/journal/journald-file.c index 7f607d4aa6..be3fc1615a 100644 --- a/src/journal/journald-file.c +++ b/src/journal/journald-file.c @@ -403,6 +403,7 @@ JournaldFile* journald_file_initiate_close(JournaldFile *f, Set *deferred_closes int journald_file_rotate( JournaldFile **f, + MMapCache *mmap_cache, bool compress, uint64_t compress_threshold_bytes, bool seal, @@ -428,7 +429,7 @@ int journald_file_rotate( compress_threshold_bytes, seal, NULL, /* metrics */ - (*f)->file->mmap, + mmap_cache, deferred_closes, *f, /* template */ &new_file); diff --git a/src/journal/journald-file.h b/src/journal/journald-file.h index 341043c836..79c0ef8240 100644 --- a/src/journal/journald-file.h +++ b/src/journal/journald-file.h @@ -40,4 +40,4 @@ int journald_file_open_reliably( JournaldFile **ret); JournaldFile* journald_file_initiate_close(JournaldFile *f, Set *deferred_closes); -int journald_file_rotate(JournaldFile **f, bool compress, uint64_t compress_threshold_bytes, bool seal, Set *deferred_closes); +int journald_file_rotate(JournaldFile **f, MMapCache *mmap_cache, bool compress, uint64_t compress_threshold_bytes, bool seal, Set *deferred_closes); diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index a13bbeeee9..c04801d9fc 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -465,7 +465,7 @@ static int do_rotate( if (!*f) return -EINVAL; - r = journald_file_rotate(f, s->compress.enabled, s->compress.threshold_bytes, seal, s->deferred_closes); + r = journald_file_rotate(f, s->mmap, s->compress.enabled, s->compress.threshold_bytes, seal, s->deferred_closes); if (r < 0) { if (*f) return log_error_errno(r, "Failed to rotate %s: %m", (*f)->file->path); diff --git a/src/journal/test-journal.c b/src/journal/test-journal.c index c2c4a75fef..17c6a73db3 100644 --- a/src/journal/test-journal.c +++ b/src/journal/test-journal.c @@ -98,8 +98,8 @@ static void test_non_empty(void) { assert_se(journal_file_move_to_entry_by_seqnum(f->file, 10, DIRECTION_DOWN, &o, NULL) == 0); - journald_file_rotate(&f, true, UINT64_MAX, true, NULL); - journald_file_rotate(&f, true, UINT64_MAX, true, NULL); + journald_file_rotate(&f, NULL, true, UINT64_MAX, true, NULL); + journald_file_rotate(&f, NULL, true, UINT64_MAX, true, NULL); (void) journald_file_close(f); diff --git a/src/libsystemd/sd-journal/journal-file.h b/src/libsystemd/sd-journal/journal-file.h index ecda2b3cc0..90c9dbe637 100644 --- a/src/libsystemd/sd-journal/journal-file.h +++ b/src/libsystemd/sd-journal/journal-file.h @@ -232,6 +232,7 @@ void journal_file_dump(JournalFile *f); void journal_file_print_header(JournalFile *f); int journal_file_archive(JournalFile *f, char **ret_previous_path); +JournalFile* journal_initiate_close(JournalFile *f, Set *deferred_closes); int journal_file_dispose(int dir_fd, const char *fname); diff --git a/src/libsystemd/sd-journal/journal-verify.c b/src/libsystemd/sd-journal/journal-verify.c index b6427105c2..8288ebcd6e 100644 --- a/src/libsystemd/sd-journal/journal-verify.c +++ b/src/libsystemd/sd-journal/journal-verify.c @@ -885,6 +885,7 @@ int journal_file_verify( unsigned i; bool found_last = false; const char *tmp_dir = NULL; + MMapCache *m; #if HAVE_GCRYPT uint64_t last_tag = 0; @@ -929,19 +930,20 @@ int journal_file_verify( goto fail; } - cache_data_fd = mmap_cache_add_fd(f->mmap, data_fd, PROT_READ|PROT_WRITE); + m = mmap_cache_fd_cache(f->cache_fd); + cache_data_fd = mmap_cache_add_fd(m, data_fd, PROT_READ|PROT_WRITE); if (!cache_data_fd) { r = log_oom(); goto fail; } - cache_entry_fd = mmap_cache_add_fd(f->mmap, entry_fd, PROT_READ|PROT_WRITE); + cache_entry_fd = mmap_cache_add_fd(m, entry_fd, PROT_READ|PROT_WRITE); if (!cache_entry_fd) { r = log_oom(); goto fail; } - cache_entry_array_fd = mmap_cache_add_fd(f->mmap, entry_array_fd, PROT_READ|PROT_WRITE); + cache_entry_array_fd = mmap_cache_add_fd(m, entry_array_fd, PROT_READ|PROT_WRITE); if (!cache_entry_array_fd) { r = log_oom(); goto fail;