Merge pull request #31330 from yuwata/sd-journal-trivial-cleanups
sd-journal: trivial cleanups
This commit is contained in:
@@ -86,7 +86,6 @@ static int open_output(RemoteServer *s, Writer *w, const char* host) {
|
||||
UINT64_MAX,
|
||||
&w->metrics,
|
||||
w->mmap,
|
||||
NULL,
|
||||
&w->journal);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to open output journal %s: %m", filename);
|
||||
|
||||
@@ -289,11 +289,10 @@ static int server_open_journal(
|
||||
s->compress.threshold_bytes,
|
||||
metrics,
|
||||
s->mmap,
|
||||
/* template= */ NULL,
|
||||
&f);
|
||||
else
|
||||
r = journal_file_open(
|
||||
/* fd= */ -1,
|
||||
/* fd= */ -EBADF,
|
||||
fname,
|
||||
open_flags,
|
||||
file_flags,
|
||||
|
||||
@@ -281,6 +281,8 @@ JournalFile* journal_file_close(JournalFile *f) {
|
||||
|
||||
assert(f->newest_boot_id_prioq_idx == PRIOQ_IDX_NULL);
|
||||
|
||||
sd_event_source_disable_unref(f->post_change_timer);
|
||||
|
||||
if (f->cache_fd)
|
||||
mmap_cache_fd_free(f->cache_fd);
|
||||
|
||||
@@ -4358,11 +4360,9 @@ int journal_file_archive(JournalFile *f, char **ret_previous_path) {
|
||||
(void) fsync_directory_of_file(f->fd);
|
||||
|
||||
if (ret_previous_path)
|
||||
*ret_previous_path = f->path;
|
||||
else
|
||||
free(f->path);
|
||||
*ret_previous_path = TAKE_PTR(f->path);
|
||||
|
||||
f->path = TAKE_PTR(p);
|
||||
free_and_replace(f->path, p);
|
||||
|
||||
/* Set as archive so offlining commits w/state=STATE_ARCHIVED. Previously we would set old_file->header->state
|
||||
* to STATE_ARCHIVED directly here, but journal_file_set_offline() short-circuits when state != STATE_ONLINE,
|
||||
|
||||
@@ -62,7 +62,7 @@ static int journal_corrupt_and_append(uint64_t start_offset, uint64_t step) {
|
||||
log_debug("Opening journal %s/system.journal", tempdir);
|
||||
|
||||
r = journal_file_open(
|
||||
/* fd= */ -1,
|
||||
/* fd= */ -EBADF,
|
||||
"system.journal",
|
||||
O_RDWR|O_CREAT,
|
||||
JOURNAL_COMPRESS,
|
||||
@@ -114,7 +114,7 @@ static int journal_corrupt_and_append(uint64_t start_offset, uint64_t step) {
|
||||
* the corrupted journal */
|
||||
mj = journal_file_offline_close(mj);
|
||||
r = journal_file_open(
|
||||
/* fd= */ -1,
|
||||
/* fd= */ -EBADF,
|
||||
"system.journal",
|
||||
O_RDWR|O_CREAT,
|
||||
JOURNAL_COMPRESS,
|
||||
|
||||
@@ -32,7 +32,7 @@ static void test_journal_flush_one(int argc, char *argv[]) {
|
||||
|
||||
assert_se(fn = path_join(dn, "test.journal"));
|
||||
|
||||
r = journal_file_open(-1, fn, O_CREAT|O_RDWR, 0, 0644, 0, NULL, m, NULL, &new_journal);
|
||||
r = journal_file_open(-EBADF, fn, O_CREAT|O_RDWR, 0, 0644, 0, NULL, m, NULL, &new_journal);
|
||||
assert_se(r >= 0);
|
||||
|
||||
if (argc > 1)
|
||||
|
||||
@@ -43,7 +43,7 @@ static JournalFile *test_open_internal(const char *name, JournalFileFlags flags)
|
||||
m = mmap_cache_new();
|
||||
assert_se(m != NULL);
|
||||
|
||||
assert_ret(journal_file_open(-1, name, O_RDWR|O_CREAT, flags, 0644, UINT64_MAX, NULL, m, NULL, &f));
|
||||
assert_ret(journal_file_open(-EBADF, name, O_RDWR|O_CREAT, flags, 0644, UINT64_MAX, NULL, m, NULL, &f));
|
||||
return f;
|
||||
}
|
||||
|
||||
@@ -453,7 +453,7 @@ static void test_sequence_numbers_one(void) {
|
||||
|
||||
mkdtemp_chdir_chattr(t);
|
||||
|
||||
assert_se(journal_file_open(-1, "one.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0644,
|
||||
assert_se(journal_file_open(-EBADF, "one.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0644,
|
||||
UINT64_MAX, NULL, m, NULL, &one) == 0);
|
||||
|
||||
append_number(one, 1, NULL, &seqnum, NULL);
|
||||
@@ -470,7 +470,7 @@ static void test_sequence_numbers_one(void) {
|
||||
|
||||
memcpy(&seqnum_id, &one->header->seqnum_id, sizeof(sd_id128_t));
|
||||
|
||||
assert_se(journal_file_open(-1, "two.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0644,
|
||||
assert_se(journal_file_open(-EBADF, "two.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0644,
|
||||
UINT64_MAX, NULL, m, one, &two) == 0);
|
||||
|
||||
assert_se(two->header->state == STATE_ONLINE);
|
||||
@@ -507,7 +507,7 @@ static void test_sequence_numbers_one(void) {
|
||||
/* restart server */
|
||||
seqnum = 0;
|
||||
|
||||
assert_se(journal_file_open(-1, "two.journal", O_RDWR, JOURNAL_COMPRESS, 0,
|
||||
assert_se(journal_file_open(-EBADF, "two.journal", O_RDWR, JOURNAL_COMPRESS, 0,
|
||||
UINT64_MAX, NULL, m, NULL, &two) == 0);
|
||||
|
||||
assert_se(sd_id128_equal(two->header->seqnum_id, seqnum_id));
|
||||
@@ -781,7 +781,7 @@ static void test_generic_array_bisect_one(size_t n, size_t num_corrupted) {
|
||||
|
||||
mkdtemp_chdir_chattr(t);
|
||||
|
||||
assert_se(journal_file_open(-1, "test.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0644,
|
||||
assert_se(journal_file_open(-EBADF, "test.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0644,
|
||||
UINT64_MAX, NULL, m, NULL, &f) == 0);
|
||||
|
||||
assert_se(seqnum = new0(uint64_t, n));
|
||||
|
||||
@@ -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(journal_file_open(-1, "one.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, &one) == 0);
|
||||
assert_se(journal_file_open(-1, "two.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, &two) == 0);
|
||||
assert_se(journal_file_open(-1, "three.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, &three) == 0);
|
||||
assert_se(journal_file_open(-EBADF, "one.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, &one) == 0);
|
||||
assert_se(journal_file_open(-EBADF, "two.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, &two) == 0);
|
||||
assert_se(journal_file_open(-EBADF, "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;
|
||||
|
||||
@@ -47,7 +47,7 @@ static int raw_verify(const char *fn, const char *verification_key) {
|
||||
assert_se(m != NULL);
|
||||
|
||||
r = journal_file_open(
|
||||
/* fd= */ -1,
|
||||
/* fd= */ -EBADF,
|
||||
fn,
|
||||
O_RDONLY,
|
||||
JOURNAL_COMPRESS|(verification_key ? JOURNAL_SEAL : 0),
|
||||
@@ -92,7 +92,7 @@ static int run_test(const char *verification_key, ssize_t max_iterations) {
|
||||
log_info("Generating a test journal");
|
||||
|
||||
assert_se(journal_file_open(
|
||||
/* fd= */ -1,
|
||||
/* fd= */ -EBADF,
|
||||
"test.journal",
|
||||
O_RDWR|O_CREAT,
|
||||
JOURNAL_COMPRESS|(verification_key ? JOURNAL_SEAL : 0),
|
||||
@@ -128,7 +128,7 @@ static int run_test(const char *verification_key, ssize_t max_iterations) {
|
||||
log_info("Verifying with key: %s", strna(verification_key));
|
||||
|
||||
assert_se(journal_file_open(
|
||||
/* fd= */ -1,
|
||||
/* fd= */ -EBADF,
|
||||
"test.journal",
|
||||
O_RDONLY,
|
||||
JOURNAL_COMPRESS|(verification_key ? JOURNAL_SEAL : 0),
|
||||
|
||||
@@ -39,7 +39,7 @@ static void test_non_empty_one(void) {
|
||||
|
||||
mkdtemp_chdir_chattr(t);
|
||||
|
||||
assert_se(journal_file_open(-1, "test.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS|JOURNAL_SEAL, 0666, UINT64_MAX, NULL, m, NULL, &f) == 0);
|
||||
assert_se(journal_file_open(-EBADF, "test.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS|JOURNAL_SEAL, 0666, UINT64_MAX, NULL, m, NULL, &f) == 0);
|
||||
|
||||
assert_se(dual_timestamp_now(&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(journal_file_open(-1, "test.journal", O_RDWR|O_CREAT, 0, 0666, UINT64_MAX, NULL, m, NULL, &f1) == 0);
|
||||
assert_se(journal_file_open(-1, "test-compress.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, &f2) == 0);
|
||||
assert_se(journal_file_open(-1, "test-seal.journal", O_RDWR|O_CREAT, JOURNAL_SEAL, 0666, UINT64_MAX, NULL, m, NULL, &f3) == 0);
|
||||
assert_se(journal_file_open(-1, "test-seal-compress.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS|JOURNAL_SEAL, 0666, UINT64_MAX, NULL, m, NULL, &f4) == 0);
|
||||
assert_se(journal_file_open(-EBADF, "test.journal", O_RDWR|O_CREAT, 0, 0666, UINT64_MAX, NULL, m, NULL, &f1) == 0);
|
||||
assert_se(journal_file_open(-EBADF, "test-compress.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS, 0666, UINT64_MAX, NULL, m, NULL, &f2) == 0);
|
||||
assert_se(journal_file_open(-EBADF, "test-seal.journal", O_RDWR|O_CREAT, JOURNAL_SEAL, 0666, UINT64_MAX, NULL, m, NULL, &f3) == 0);
|
||||
assert_se(journal_file_open(-EBADF, "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);
|
||||
puts("");
|
||||
@@ -194,7 +194,7 @@ static bool check_compressed(uint64_t compress_threshold, uint64_t data_size) {
|
||||
|
||||
mkdtemp_chdir_chattr(t);
|
||||
|
||||
assert_se(journal_file_open(-1, "test.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS|JOURNAL_SEAL, 0666, compress_threshold, NULL, m, NULL, &f) == 0);
|
||||
assert_se(journal_file_open(-EBADF, "test.journal", O_RDWR|O_CREAT, JOURNAL_COMPRESS|JOURNAL_SEAL, 0666, compress_threshold, NULL, m, NULL, &f) == 0);
|
||||
|
||||
dual_timestamp_now(&ts);
|
||||
|
||||
|
||||
@@ -399,7 +399,7 @@ JournalFile* journal_file_offline_close(JournalFile *f) {
|
||||
|
||||
if (sd_event_source_get_enabled(f->post_change_timer, NULL) > 0)
|
||||
journal_file_post_change(f);
|
||||
sd_event_source_disable_unref(f->post_change_timer);
|
||||
f->post_change_timer = sd_event_source_disable_unref(f->post_change_timer);
|
||||
|
||||
journal_file_set_offline(f, true);
|
||||
|
||||
@@ -446,7 +446,7 @@ int journal_file_rotate(
|
||||
set_clear_with_destructor(deferred_closes, journal_file_offline_close);
|
||||
|
||||
r = journal_file_open(
|
||||
/* fd= */ -1,
|
||||
/* fd= */ -EBADF,
|
||||
path,
|
||||
(*f)->open_flags,
|
||||
file_flags,
|
||||
@@ -471,14 +471,13 @@ int journal_file_open_reliably(
|
||||
uint64_t compress_threshold_bytes,
|
||||
JournalMetrics *metrics,
|
||||
MMapCache *mmap_cache,
|
||||
JournalFile *template,
|
||||
JournalFile **ret) {
|
||||
|
||||
_cleanup_(journal_file_offline_closep) JournalFile *old_file = NULL;
|
||||
int r;
|
||||
|
||||
r = journal_file_open(
|
||||
/* fd= */ -1,
|
||||
/* fd= */ -EBADF,
|
||||
fname,
|
||||
open_flags,
|
||||
file_flags,
|
||||
@@ -486,7 +485,7 @@ int journal_file_open_reliably(
|
||||
compress_threshold_bytes,
|
||||
metrics,
|
||||
mmap_cache,
|
||||
template,
|
||||
/* template = */ NULL,
|
||||
ret);
|
||||
if (!IN_SET(r,
|
||||
-EBADMSG, /* Corrupted */
|
||||
@@ -512,23 +511,19 @@ int journal_file_open_reliably(
|
||||
/* The file is corrupted. Rotate it away and try it again (but only once) */
|
||||
log_warning_errno(r, "File %s corrupted or uncleanly shut down, renaming and replacing.", fname);
|
||||
|
||||
if (!template) {
|
||||
/* The file is corrupted and no template is specified. Try opening it read-only as the
|
||||
* template before rotating to inherit its sequence number and ID. */
|
||||
r = journal_file_open(-1, fname,
|
||||
(open_flags & ~(O_ACCMODE|O_CREAT|O_EXCL)) | O_RDONLY,
|
||||
file_flags, 0, compress_threshold_bytes, NULL,
|
||||
mmap_cache, NULL, &old_file);
|
||||
if (r < 0)
|
||||
log_debug_errno(r, "Failed to continue sequence from file %s, ignoring: %m", fname);
|
||||
else
|
||||
template = old_file;
|
||||
}
|
||||
/* The file is corrupted. Try opening it read-only as the template before rotating to inherit its
|
||||
* sequence number and ID. */
|
||||
r = journal_file_open(-EBADF, fname,
|
||||
(open_flags & ~(O_ACCMODE|O_CREAT|O_EXCL)) | O_RDONLY,
|
||||
file_flags, 0, compress_threshold_bytes, NULL,
|
||||
mmap_cache, /* template = */ NULL, &old_file);
|
||||
if (r < 0)
|
||||
log_debug_errno(r, "Failed to continue sequence from file %s, ignoring: %m", fname);
|
||||
|
||||
r = journal_file_dispose(AT_FDCWD, fname);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
return journal_file_open(-1, fname, open_flags, file_flags, mode, compress_threshold_bytes, metrics,
|
||||
mmap_cache, template, ret);
|
||||
return journal_file_open(-EBADF, fname, open_flags, file_flags, mode, compress_threshold_bytes, metrics,
|
||||
mmap_cache, /* template = */ old_file, ret);
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ int journal_file_open_reliably(
|
||||
uint64_t compress_threshold_bytes,
|
||||
JournalMetrics *metrics,
|
||||
MMapCache *mmap_cache,
|
||||
JournalFile *template,
|
||||
JournalFile **ret);
|
||||
|
||||
JournalFile* journal_file_initiate_close(JournalFile *f, Set *deferred_closes);
|
||||
|
||||
Reference in New Issue
Block a user