mirror of
https://github.com/systemd/systemd.git
synced 2025-03-19 22:50:17 +03:00
Merge pull request #2440 from poettering/journal-fix
journald: minor fixes
This commit is contained in:
commit
9766c16bd0
@ -157,7 +157,7 @@ JournalFile* journal_file_close(JournalFile *f) {
|
||||
if (enabled == SD_EVENT_ONESHOT)
|
||||
journal_file_post_change(f);
|
||||
|
||||
sd_event_source_set_enabled(f->post_change_timer, SD_EVENT_OFF);
|
||||
(void) sd_event_source_set_enabled(f->post_change_timer, SD_EVENT_OFF);
|
||||
sd_event_source_unref(f->post_change_timer);
|
||||
}
|
||||
|
||||
@ -1409,7 +1409,7 @@ void journal_file_post_change(JournalFile *f) {
|
||||
__sync_synchronize();
|
||||
|
||||
if (ftruncate(f->fd, f->last_stat.st_size) < 0)
|
||||
log_error_errno(errno, "Failed to truncate file to its own size: %m");
|
||||
log_debug_errno(errno, "Failed to truncate file to its own size: %m");
|
||||
}
|
||||
|
||||
static int post_change_thunk(sd_event_source *timer, uint64_t usec, void *userdata) {
|
||||
@ -1432,8 +1432,8 @@ static void schedule_post_change(JournalFile *f) {
|
||||
|
||||
r = sd_event_source_get_enabled(timer, &enabled);
|
||||
if (r < 0) {
|
||||
log_error_errno(-r, "Failed to get ftruncate timer state: %m");
|
||||
return;
|
||||
log_debug_errno(r, "Failed to get ftruncate timer state: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (enabled == SD_EVENT_ONESHOT)
|
||||
@ -1441,21 +1441,27 @@ static void schedule_post_change(JournalFile *f) {
|
||||
|
||||
r = sd_event_now(sd_event_source_get_event(timer), CLOCK_MONOTONIC, &now);
|
||||
if (r < 0) {
|
||||
log_error_errno(-r, "Failed to get clock's now for scheduling ftruncate: %m");
|
||||
return;
|
||||
log_debug_errno(r, "Failed to get clock's now for scheduling ftruncate: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = sd_event_source_set_time(timer, now+f->post_change_timer_period);
|
||||
if (r < 0) {
|
||||
log_error_errno(-r, "Failed to set time for scheduling ftruncate: %m");
|
||||
return;
|
||||
log_debug_errno(r, "Failed to set time for scheduling ftruncate: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = sd_event_source_set_enabled(timer, SD_EVENT_ONESHOT);
|
||||
if (r < 0) {
|
||||
log_error_errno(-r, "Failed to enable scheduled ftruncate: %m");
|
||||
return;
|
||||
log_debug_errno(r, "Failed to enable scheduled ftruncate: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
fail:
|
||||
/* On failure, let's simply post the change immediately. */
|
||||
journal_file_post_change(f);
|
||||
}
|
||||
|
||||
/* Enable coalesced change posting in a timer on the provided sd_event instance */
|
||||
@ -2854,9 +2860,11 @@ int journal_file_open(
|
||||
}
|
||||
|
||||
if (template && template->post_change_timer) {
|
||||
sd_event *e = sd_event_source_get_event(template->post_change_timer);
|
||||
r = journal_file_enable_post_change_timer(
|
||||
f,
|
||||
sd_event_source_get_event(template->post_change_timer),
|
||||
template->post_change_timer_period);
|
||||
|
||||
r = journal_file_enable_post_change_timer(f, e, template->post_change_timer_period);
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
}
|
||||
|
@ -247,25 +247,26 @@ static int open_journal(
|
||||
JournalFile *template,
|
||||
JournalFile **ret) {
|
||||
int r;
|
||||
JournalFile *f;
|
||||
|
||||
assert(s);
|
||||
assert(fname);
|
||||
assert(ret);
|
||||
|
||||
if (reliably)
|
||||
r = journal_file_open_reliably(fname, flags, 0640, s->compress, seal, metrics, s->mmap, template, ret);
|
||||
r = journal_file_open_reliably(fname, flags, 0640, s->compress, seal, metrics, s->mmap, template, &f);
|
||||
else
|
||||
r = journal_file_open(fname, flags, 0640, s->compress, seal, metrics, s->mmap, template, ret);
|
||||
|
||||
r = journal_file_open(fname, flags, 0640, s->compress, seal, metrics, s->mmap, template, &f);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = journal_file_enable_post_change_timer(*ret, s->event, POST_CHANGE_TIMER_INTERVAL_USEC);
|
||||
r = journal_file_enable_post_change_timer(f, s->event, POST_CHANGE_TIMER_INTERVAL_USEC);
|
||||
if (r < 0) {
|
||||
*ret = journal_file_close(*ret);
|
||||
journal_file_close(f);
|
||||
return r;
|
||||
}
|
||||
|
||||
*ret = f;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user