From: Yu Watanabe Date: Wed, 20 Dec 2023 18:46:03 +0000 (+0900) Subject: network: split out manager_clean_all() from manager_dirty_handler() X-Git-Tag: v256-rc1~1423^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2e1113b7d0cea8e5145514d70aab033bed8f2abb;p=thirdparty%2Fsystemd.git network: split out manager_clean_all() from manager_dirty_handler() And rename manager_dirty_handler() to manager_post_handler(). No functional change, just refactoring. --- diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index b162d21aa0f..d812e8c0eef 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -429,24 +429,11 @@ static int manager_connect_rtnl(Manager *m, int fd) { return manager_setup_rtnl_filter(m); } -static int manager_dirty_handler(sd_event_source *s, void *userdata) { - Manager *m = ASSERT_PTR(userdata); - Link *link; - int r; +static int manager_post_handler(sd_event_source *s, void *userdata) { + Manager *manager = ASSERT_PTR(userdata); - if (m->dirty) { - r = manager_save(m); - if (r < 0) - log_warning_errno(r, "Failed to update state file %s, ignoring: %m", m->state_file); - } - - SET_FOREACH(link, m->dirty_links) { - r = link_save_and_clean(link); - if (r < 0) - log_link_warning_errno(link, r, "Failed to update link state file %s, ignoring: %m", link->state_file); - } - - return 1; + (void) manager_clean_all(manager); + return 0; } static int signal_terminate_callback(sd_event_source *s, const struct signalfd_siginfo *si, void *userdata) { @@ -522,7 +509,7 @@ int manager_setup(Manager *m) { if (r < 0) log_debug_errno(r, "Failed allocate memory pressure event source, ignoring: %m"); - r = sd_event_add_post(m->event, NULL, manager_dirty_handler, m); + r = sd_event_add_post(m->event, NULL, manager_post_handler, m); if (r < 0) return r; diff --git a/src/network/networkd-state-file.c b/src/network/networkd-state-file.c index 3a95ba8d8bf..9f0e365c22b 100644 --- a/src/network/networkd-state-file.c +++ b/src/network/networkd-state-file.c @@ -861,3 +861,26 @@ int link_save_and_clean_full(Link *link, bool also_save_manager) { link_clean(link); return k; } + +int manager_clean_all(Manager *manager) { + int r, ret = 0; + + assert(manager); + + if (manager->dirty) { + r = manager_save(manager); + if (r < 0) + log_warning_errno(r, "Failed to update state file %s, ignoring: %m", manager->state_file); + RET_GATHER(ret, r); + } + + Link *link; + SET_FOREACH(link, manager->dirty_links) { + r = link_save_and_clean(link); + if (r < 0) + log_link_warning_errno(link, r, "Failed to update link state file %s, ignoring: %m", link->state_file); + RET_GATHER(ret, r); + } + + return ret; +} diff --git a/src/network/networkd-state-file.h b/src/network/networkd-state-file.h index 684f0d154ed..7efd1578da0 100644 --- a/src/network/networkd-state-file.h +++ b/src/network/networkd-state-file.h @@ -12,3 +12,4 @@ static inline int link_save_and_clean(Link *link) { } int manager_save(Manager *m); +int manager_clean_all(Manager *manager);