From: Yu Watanabe Date: Mon, 20 Jul 2020 20:21:28 +0000 (+0900) Subject: network: introduce link_save_and_clean() X-Git-Tag: v246-rc2~10^2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c2a6595014c33592a541654b396c8c3f2f36284e;p=thirdparty%2Fsystemd.git network: introduce link_save_and_clean() --- diff --git a/src/network/networkd-link-bus.c b/src/network/networkd-link-bus.c index be196715053..ad114e1173d 100644 --- a/src/network/networkd-link-bus.c +++ b/src/network/networkd-link-bus.c @@ -629,10 +629,9 @@ int bus_link_method_reconfigure(sd_bus_message *message, void *userdata, sd_bus_ return r; link_set_state(l, LINK_STATE_INITIALIZED); - r = link_save(l); + r = link_save_and_clean(l); if (r < 0) return r; - link_clean(l); return sd_bus_reply_method_return(message, NULL); } diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 1d73a3c34fe..092d130a44d 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -4525,6 +4525,17 @@ void link_clean(Link *link) { link_unref(set_remove(link->manager->dirty_links, link)); } +int link_save_and_clean(Link *link) { + int r; + + r = link_save(link); + if (r < 0) + return r; + + link_clean(link); + return 0; +} + static const char* const link_state_table[_LINK_STATE_MAX] = { [LINK_STATE_PENDING] = "pending", [LINK_STATE_INITIALIZED] = "initialized", diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h index e7369705030..45341801288 100644 --- a/src/network/networkd-link.h +++ b/src/network/networkd-link.h @@ -208,6 +208,7 @@ int link_update(Link *link, sd_netlink_message *message); void link_dirty(Link *link); void link_clean(Link *link); int link_save(Link *link); +int link_save_and_clean(Link *link); int link_carrier_reset(Link *link); bool link_has_carrier(Link *link); diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index c287367d29a..59ec0de8d34 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -1727,8 +1727,7 @@ static int manager_dirty_handler(sd_event_source *s, void *userdata) { manager_save(m); SET_FOREACH(link, m->dirty_links, i) - if (link_save(link) >= 0) - link_clean(link); + (void) link_save_and_clean(link); return 1; } @@ -1899,7 +1898,7 @@ int manager_start(Manager *m) { manager_save(m); HASHMAP_FOREACH(link, m->links, i) - link_save(link); + (void) link_save(link); return 0; }