From 2960a8cfe8526fde5fab2894acf9ad2ce161332d Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 25 Feb 2025 13:00:56 +0900 Subject: [PATCH 1/3] timesync: use event_reset_time_relative() No functional change, just refactoring. --- src/timesync/timesyncd-manager.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c index 8315169ba7..f453c87864 100644 --- a/src/timesync/timesyncd-manager.c +++ b/src/timesync/timesyncd-manager.c @@ -1184,22 +1184,24 @@ int manager_setup_save_time_event(Manager *m) { int r; assert(m); - assert(!m->event_save_time); if (m->save_time_interval_usec == USEC_INFINITY) return 0; /* NB: we'll accumulate scheduling latencies here, but this doesn't matter */ - r = sd_event_add_time_relative( - m->event, &m->event_save_time, + r = event_reset_time_relative( + m->event, + &m->event_save_time, CLOCK_BOOTTIME, m->save_time_interval_usec, 10 * USEC_PER_SEC, - manager_save_time_handler, m); + manager_save_time_handler, + m, + SD_EVENT_PRIORITY_NORMAL, + "save-time", + /* force_reset = */ false); if (r < 0) - return log_error_errno(r, "Failed to add save time event: %m"); - - (void) sd_event_source_set_description(m->event_save_time, "save-time"); + return log_error_errno(r, "Failed to reset event source for saving time: %m"); return 0; } @@ -1219,17 +1221,7 @@ static int manager_save_time_and_rearm(Manager *m, usec_t t) { m->save_on_exit = true; - if (m->save_time_interval_usec != USEC_INFINITY) { - r = sd_event_source_set_time_relative(m->event_save_time, m->save_time_interval_usec); - if (r < 0) - return log_error_errno(r, "Failed to rearm save time event: %m"); - - r = sd_event_source_set_enabled(m->event_save_time, SD_EVENT_ONESHOT); - if (r < 0) - return log_error_errno(r, "Failed to enable save time event: %m"); - } - - return 0; + return manager_setup_save_time_event(m); } static const char* ntp_server_property_name[_SERVER_TYPE_MAX] = { From 9c999b53b9d93d7507f18d00810479ce98f44e87 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 25 Feb 2025 13:39:43 +0900 Subject: [PATCH 2/3] timesync: drop meaningless boolean flag The boolean flag is always true, as manager_save_time_and_rearm() is called unconditionally. Follow-up for 33e82f3ef33a2497f9838a5fbb924c7501d8dd9e. --- src/timesync/timesyncd-manager.c | 2 -- src/timesync/timesyncd-manager.h | 1 - src/timesync/timesyncd.c | 10 ++++------ 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c index f453c87864..087fb7ab3b 100644 --- a/src/timesync/timesyncd-manager.c +++ b/src/timesync/timesyncd-manager.c @@ -1219,8 +1219,6 @@ static int manager_save_time_and_rearm(Manager *m, usec_t t) { if (r < 0) log_debug_errno(r, "Failed to update "TIMESYNCD_CLOCK_FILE", ignoring: %m"); - m->save_on_exit = true; - return manager_setup_save_time_event(m); } diff --git a/src/timesync/timesyncd-manager.h b/src/timesync/timesyncd-manager.h index 68fc8f8853..43dbef9417 100644 --- a/src/timesync/timesyncd-manager.h +++ b/src/timesync/timesyncd-manager.h @@ -112,7 +112,6 @@ struct Manager { /* save time event */ sd_event_source *event_save_time; usec_t save_time_interval_usec; - bool save_on_exit; /* Used to coalesce bus PropertiesChanged events */ sd_event_source *deferred_ntp_server_event_source; diff --git a/src/timesync/timesyncd.c b/src/timesync/timesyncd.c index d002501d29..c9628169dc 100644 --- a/src/timesync/timesyncd.c +++ b/src/timesync/timesyncd.c @@ -221,12 +221,10 @@ static int run(int argc, char *argv[]) { if (r < 0) return log_error_errno(r, "Failed to run event loop: %m"); - /* if we got an authoritative time, store it in the file system */ - if (m->save_on_exit) { - r = touch(TIMESYNCD_CLOCK_FILE); - if (r < 0) - log_debug_errno(r, "Failed to touch "TIMESYNCD_CLOCK_FILE", ignoring: %m"); - } + /* Save the current time in the file system on exit. */ + r = touch(TIMESYNCD_CLOCK_FILE); + if (r < 0) + log_debug_errno(r, "Failed to touch "TIMESYNCD_CLOCK_FILE", ignoring: %m"); return 0; } From d83bfdd5b05a4941ded27c6eb996d1ab3469a314 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 25 Feb 2025 13:45:07 +0900 Subject: [PATCH 3/3] timesync: add short comment for boolean argument --- src/timesync/timesyncd-manager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c index 087fb7ab3b..a361d60c63 100644 --- a/src/timesync/timesyncd-manager.c +++ b/src/timesync/timesyncd-manager.c @@ -1215,7 +1215,7 @@ static int manager_save_time_and_rearm(Manager *m, usec_t t) { * clock, but otherwise uses the specified timestamp. Note that whenever we acquire an NTP sync the * specified timestamp value might be more accurate than the system clock, since the latter is * subject to slow adjustments. */ - r = touch_file(TIMESYNCD_CLOCK_FILE, false, t, UID_INVALID, GID_INVALID, MODE_INVALID); + r = touch_file(TIMESYNCD_CLOCK_FILE, /* parents = */ false, t, UID_INVALID, GID_INVALID, MODE_INVALID); if (r < 0) log_debug_errno(r, "Failed to update "TIMESYNCD_CLOCK_FILE", ignoring: %m");