]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: When link gets dirty mark manager dirty too (#3080)
authorSusant Sahani <ssahani@users.noreply.github.com>
Thu, 21 Apr 2016 14:08:07 +0000 (19:38 +0530)
committerMartin Pitt <martin.pitt@ubuntu.com>
Thu, 21 Apr 2016 14:08:07 +0000 (16:08 +0200)
If we not marking manager dirty when link is dirty then
the state file is not updated. This is a side effect of
issue 2850
setting CriticalConnection=yes

timesyncd NTP servers given by DHCP server are ignored.

src/network/networkd-link.c

index 0fb3aa6c43831f2f40e354de1194c39614d8c52b..5cdf123652abcc9e068f91afb44ac87a6fcefadc 100644 (file)
@@ -299,7 +299,6 @@ void link_update_operstate(Link *link) {
                 link->operstate = operstate;
                 link_send_changed(link, "OperationalState", NULL);
                 link_dirty(link);
-                manager_dirty(link->manager);
         }
 }
 
@@ -3228,14 +3227,17 @@ void link_dirty(Link *link) {
 
         assert(link);
 
+        /* mark manager dirty as link is dirty */
+        manager_dirty(link->manager);
+
         r = set_ensure_allocated(&link->manager->dirty_links, NULL);
         if (r < 0)
                 /* allocation errors are ignored */
                 return;
 
         r = set_put(link->manager->dirty_links, link);
-        if (r < 0)
-                /* allocation errors are ignored */
+        if (r <= 0)
+                /* don't take another ref if the link was already dirty */
                 return;
 
         link_ref(link);