]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
journald: split-out closing journal files from managed_journal_file_open()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 30 Sep 2023 06:15:28 +0000 (15:15 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 2 Oct 2023 01:52:45 +0000 (10:52 +0900)
No functional change, just refactoring and preparation for later
commits.

src/journal-remote/journal-remote.c
src/journal/journald-server.c
src/journal/managed-journal-file.c
src/journal/managed-journal-file.h
src/journal/test-journal-append.c
src/journal/test-journal-flush.c
src/journal/test-journal-interleaving.c
src/journal/test-journal-stream.c
src/journal/test-journal-verify.c
src/journal/test-journal.c

index 5b845a520ffe391131c17ace2f3754844da72c59..29da82e65ab62593e6a24c7fad1716347d772ab5 100644 (file)
@@ -88,7 +88,6 @@ static int open_output(RemoteServer *s, Writer *w, const char* host) {
                         &w->metrics,
                         w->mmap,
                         NULL,
-                        NULL,
                         &w->journal);
         if (r < 0)
                 return log_error_errno(r, "Failed to open output journal %s: %m", filename);
index 8b60369b4960249634366f0357b0e6ecf1685cf9..83857d0116840f97c4ff3e233003022352e20a53 100644 (file)
@@ -276,6 +276,8 @@ static int server_open_journal(
                 (seal ? JOURNAL_SEAL : 0) |
                 JOURNAL_STRICT_ORDER;
 
+        set_clear_with_destructor(s->deferred_closes, managed_journal_file_close);
+
         if (reliably)
                 r = managed_journal_file_open_reliably(
                                 fname,
@@ -285,7 +287,6 @@ static int server_open_journal(
                                 s->compress.threshold_bytes,
                                 metrics,
                                 s->mmap,
-                                s->deferred_closes,
                                 /* template= */ NULL,
                                 &f);
         else
@@ -298,7 +299,6 @@ static int server_open_journal(
                                 s->compress.threshold_bytes,
                                 metrics,
                                 s->mmap,
-                                s->deferred_closes,
                                 /* template= */ NULL,
                                 &f);
         if (r < 0)
@@ -655,7 +655,6 @@ static int server_archive_offline_user_journals(Server *s) {
                                 s->compress.threshold_bytes,
                                 &s->system_storage.metrics,
                                 s->mmap,
-                                /* deferred_closes= */ NULL,
                                 /* template= */ NULL,
                                 &f);
                 if (r < 0) {
index 9b1fe30747e4f5b806bfdeb1f5dffe8f294c913a..aa616988b4503e4304a5851cfe2d1db33caa42ff 100644 (file)
@@ -421,15 +421,12 @@ int managed_journal_file_open(
                 uint64_t compress_threshold_bytes,
                 JournalMetrics *metrics,
                 MMapCache *mmap_cache,
-                Set *deferred_closes,
                 ManagedJournalFile *template,
                 ManagedJournalFile **ret) {
 
         _cleanup_free_ ManagedJournalFile *f = NULL;
         int r;
 
-        set_clear_with_destructor(deferred_closes, managed_journal_file_close);
-
         f = new0(ManagedJournalFile, 1);
         if (!f)
                 return -ENOMEM;
@@ -489,6 +486,8 @@ int managed_journal_file_rotate(
         if (r < 0)
                 return r;
 
+        set_clear_with_destructor(deferred_closes, managed_journal_file_close);
+
         r = managed_journal_file_open(
                         /* fd= */ -1,
                         path,
@@ -498,7 +497,6 @@ int managed_journal_file_rotate(
                         compress_threshold_bytes,
                         /* metrics= */ NULL,
                         mmap_cache,
-                        deferred_closes,
                         /* template= */ *f,
                         &new_file);
 
@@ -516,7 +514,6 @@ int managed_journal_file_open_reliably(
                 uint64_t compress_threshold_bytes,
                 JournalMetrics *metrics,
                 MMapCache *mmap_cache,
-                Set *deferred_closes,
                 ManagedJournalFile *template,
                 ManagedJournalFile **ret) {
 
@@ -532,7 +529,6 @@ int managed_journal_file_open_reliably(
                         compress_threshold_bytes,
                         metrics,
                         mmap_cache,
-                        deferred_closes,
                         template,
                         ret);
         if (!IN_SET(r,
@@ -565,7 +561,7 @@ int managed_journal_file_open_reliably(
                 r = managed_journal_file_open(-1, fname,
                                               (open_flags & ~(O_ACCMODE|O_CREAT|O_EXCL)) | O_RDONLY,
                                               file_flags, 0, compress_threshold_bytes, NULL,
-                                              mmap_cache, deferred_closes, NULL, &old_file);
+                                              mmap_cache, NULL, &old_file);
                 if (r < 0)
                         log_debug_errno(r, "Failed to continue sequence from file %s, ignoring: %m", fname);
                 else
@@ -577,5 +573,5 @@ int managed_journal_file_open_reliably(
                 return r;
 
         return managed_journal_file_open(-1, fname, open_flags, file_flags, mode, compress_threshold_bytes, metrics,
-                                         mmap_cache, deferred_closes, template, ret);
+                                         mmap_cache, template, ret);
 }
index 0ac69a798508d46ccce2eafdf5191cf024839bda..2fd1e2d6b449af5d9b87f09d5c7572b03b348262 100644 (file)
@@ -16,7 +16,6 @@ int managed_journal_file_open(
                 uint64_t compress_threshold_bytes,
                 JournalMetrics *metrics,
                 MMapCache *mmap_cache,
-                Set *deferred_closes,
                 ManagedJournalFile *template,
                 ManagedJournalFile **ret);
 
@@ -33,7 +32,6 @@ int managed_journal_file_open_reliably(
                 uint64_t compress_threshold_bytes,
                 JournalMetrics *metrics,
                 MMapCache *mmap_cache,
-                Set *deferred_closes,
                 ManagedJournalFile *template,
                 ManagedJournalFile **ret);
 
index 84fa4d5d541518c62c7405d23f9abe6c69e3c925..95b6fc1ee5f5741cb31cb3221ebd118c755973a0 100644 (file)
@@ -70,7 +70,6 @@ static int journal_corrupt_and_append(uint64_t start_offset, uint64_t step) {
                                 /* compress_threshold_bytes= */ UINT64_MAX,
                                 /* metrics= */ NULL,
                                 mmap_cache,
-                                /* deferred_closes= */ NULL,
                                 /* template= */ NULL,
                                 &mj);
         if (r < 0)
@@ -124,7 +123,6 @@ static int journal_corrupt_and_append(uint64_t start_offset, uint64_t step) {
                                         /* compress_threshold_bytes= */ UINT64_MAX,
                                         /* metrics= */ NULL,
                                         mmap_cache,
-                                        /* deferred_closes= */ NULL,
                                         /* template= */ NULL,
                                         &mj);
                 if (r < 0) {
index f2fe0e51c00db84581567e78bd5c40105bced880..677d37edc1814039b77cc3192972cf22c56bde7f 100644 (file)
@@ -30,7 +30,7 @@ static void test_journal_flush(int argc, char *argv[]) {
 
         assert_se(fn = path_join(dn, "test.journal"));
 
-        r = managed_journal_file_open(-1, fn, O_CREAT|O_RDWR, 0, 0644, 0, NULL, m, NULL, NULL, &new_journal);
+        r = managed_journal_file_open(-1, fn, O_CREAT|O_RDWR, 0, 0644, 0, NULL, m, NULL, &new_journal);
         assert_se(r >= 0);
 
         if (argc > 1)
index dfd4497cfdb243810793d336b6b94b58cd54c061..32427b8b6295364edc4e9795555ac671cf9a960a 100644 (file)
@@ -42,7 +42,7 @@ static ManagedJournalFile *test_open_internal(const char *name, JournalFileFlags
         m = mmap_cache_new();
         assert_se(m != NULL);
 
-        assert_ret(managed_journal_file_open(-1, name, O_RDWR|O_CREAT, flags, 0644, UINT64_MAX, NULL, m, NULL, NULL, &f));
+        assert_ret(managed_journal_file_open(-1, name, O_RDWR|O_CREAT, flags, 0644, UINT64_MAX, NULL, m, NULL, &f));
         return f;
 }
 
@@ -459,7 +459,7 @@ static void test_sequence_numbers_one(void) {
         mkdtemp_chdir_chattr(t);
 
         assert_se(managed_journal_file_open(-1, "one.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0644,
-                                            UINT64_MAX, NULL, m, NULL, NULL, &one) == 0);
+                                            UINT64_MAX, NULL, m, NULL, &one) == 0);
 
         append_number(one, 1, NULL, &seqnum);
         printf("seqnum=%"PRIu64"\n", seqnum);
@@ -476,7 +476,7 @@ static void test_sequence_numbers_one(void) {
         memcpy(&seqnum_id, &one->file->header->seqnum_id, sizeof(sd_id128_t));
 
         assert_se(managed_journal_file_open(-1, "two.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0644,
-                                            UINT64_MAX, NULL, m, NULL, one, &two) == 0);
+                                            UINT64_MAX, NULL, m, one, &two) == 0);
 
         assert_se(two->file->header->state == STATE_ONLINE);
         assert_se(!sd_id128_equal(two->file->header->file_id, one->file->header->file_id));
@@ -513,7 +513,7 @@ static void test_sequence_numbers_one(void) {
                 seqnum = 0;
 
                 assert_se(managed_journal_file_open(-1, "two.journal", O_RDWR, JOURNAL_COMPRESS, 0,
-                                                    UINT64_MAX, NULL, m, NULL, NULL, &two) == 0);
+                                                    UINT64_MAX, NULL, m, NULL, &two) == 0);
 
                 assert_se(sd_id128_equal(two->file->header->seqnum_id, seqnum_id));
 
@@ -547,7 +547,7 @@ TEST(sequence_numbers) {
 }
 
 static int intro(void) {
-        /* managed_journal_file_open requires a valid machine id */
+        /* managed_journal_file_open() requires a valid machine id */
         if (access("/etc/machine-id", F_OK) != 0)
                 return log_tests_skipped("/etc/machine-id not found");
 
index 940625a0843d21dad4e8ef63390ccd41b010337f..1220a29e2041c09518ca4a113856ce35ed0d10dc 100644 (file)
@@ -76,9 +76,9 @@ static void run_test(void) {
         assert_se(chdir(t) >= 0);
         (void) chattr_path(t, FS_NOCOW_FL, FS_NOCOW_FL, NULL);
 
-        assert_se(managed_journal_file_open(-1, "one.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, NULL, &one) == 0);
-        assert_se(managed_journal_file_open(-1, "two.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, NULL, &two) == 0);
-        assert_se(managed_journal_file_open(-1, "three.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, NULL, &three) == 0);
+        assert_se(managed_journal_file_open(-1, "one.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, &one) == 0);
+        assert_se(managed_journal_file_open(-1, "two.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, &two) == 0);
+        assert_se(managed_journal_file_open(-1, "three.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, &three) == 0);
 
         for (i = 0; i < N_ENTRIES; i++) {
                 char *p, *q;
@@ -177,7 +177,7 @@ static void run_test(void) {
 
 int main(int argc, char *argv[]) {
 
-        /* managed_journal_file_open requires a valid machine id */
+        /* managed_journal_file_open() requires a valid machine id */
         if (access("/etc/machine-id", F_OK) != 0)
                 return log_tests_skipped("/etc/machine-id not found");
 
index 97cc0b15145a9d91b8b83c56952ff519e07e859b..9a7fa2a7346e3f550fe52cacd3d3d8e5e6caca97 100644 (file)
@@ -79,7 +79,7 @@ static int run_test(const char *verification_key, ssize_t max_iterations) {
         m = mmap_cache_new();
         assert_se(m != NULL);
 
-        /* managed_journal_file_open requires a valid machine id */
+        /* managed_journal_file_open() requires a valid machine id */
         if (sd_id128_get_machine(NULL) < 0)
                 return log_tests_skipped("No valid machine ID found");
 
@@ -100,7 +100,6 @@ static int run_test(const char *verification_key, ssize_t max_iterations) {
                                 /* compress_threshold_bytes= */ UINT64_MAX,
                                 /* metrics= */ NULL,
                                 m,
-                                /* deferred_closes= */ NULL,
                                 /* template= */ NULL,
                                 &df) == 0);
 
index b227b9be6cd3214397a9763ddafd28d22adae6dc..92c5b66fe5f0c6910dabef6b2821fd76cb8878d9 100644 (file)
@@ -39,7 +39,7 @@ static void test_non_empty_one(void) {
 
         mkdtemp_chdir_chattr(t);
 
-        assert_se(managed_journal_file_open(-1, "test.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS|JOURNAL_SEAL, 0666, UINT64_MAX, NULL, m, NULL, NULL, &f) == 0);
+        assert_se(managed_journal_file_open(-1, "test.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS|JOURNAL_SEAL, 0666, UINT64_MAX, NULL, m, NULL, &f) == 0);
 
         assert_se(dual_timestamp_get(&ts));
         assert_se(sd_id128_randomize(&fake_boot_id) == 0);
@@ -136,10 +136,10 @@ static void test_empty_one(void) {
 
         mkdtemp_chdir_chattr(t);
 
-        assert_se(managed_journal_file_open(-1, "test.journal", O_RDWR|O_CREAT, 0, 0666, UINT64_MAX, NULL, m, NULL, NULL, &f1) == 0);
-        assert_se(managed_journal_file_open(-1, "test-compress.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, NULL, &f2) == 0);
-        assert_se(managed_journal_file_open(-1, "test-seal.journal", O_RDWR|O_CREAT, JOURNAL_SEAL, 0666, UINT64_MAX, NULL, m, NULL, NULL, &f3) == 0);
-        assert_se(managed_journal_file_open(-1, "test-seal-compress.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS|JOURNAL_SEAL, 0666, UINT64_MAX, NULL, m, NULL, NULL, &f4) == 0);
+        assert_se(managed_journal_file_open(-1, "test.journal", O_RDWR|O_CREAT, 0, 0666, UINT64_MAX, NULL, m, NULL, &f1) == 0);
+        assert_se(managed_journal_file_open(-1, "test-compress.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, &f2) == 0);
+        assert_se(managed_journal_file_open(-1, "test-seal.journal", O_RDWR|O_CREAT, JOURNAL_SEAL, 0666, UINT64_MAX, NULL, m, NULL, &f3) == 0);
+        assert_se(managed_journal_file_open(-1, "test-seal-compress.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS|JOURNAL_SEAL, 0666, UINT64_MAX, NULL, m, NULL, &f4) == 0);
 
         journal_file_print_header(f1->file);
         puts("");
@@ -194,7 +194,7 @@ static bool check_compressed(uint64_t compress_threshold, uint64_t data_size) {
 
         mkdtemp_chdir_chattr(t);
 
-        assert_se(managed_journal_file_open(-1, "test.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS|JOURNAL_SEAL, 0666, compress_threshold, NULL, m, NULL, NULL, &f) == 0);
+        assert_se(managed_journal_file_open(-1, "test.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS|JOURNAL_SEAL, 0666, compress_threshold, NULL, m, NULL, &f) == 0);
 
         dual_timestamp_get(&ts);
 
@@ -270,7 +270,7 @@ TEST(min_compress_size) {
 static int intro(void) {
         arg_keep = saved_argc > 1;
 
-        /* managed_journal_file_open requires a valid machine id */
+        /* managed_journal_file_open() requires a valid machine id */
         if (access("/etc/machine-id", F_OK) != 0)
                 return log_tests_skipped("/etc/machine-id not found");