From 5bed4a6d5e0e037a41931a840c4399e844631cfb Mon Sep 17 00:00:00 2001 From: Ben Nemec Date: Wed, 4 Jan 2017 10:49:59 -0600 Subject: [PATCH] Run dhcp-interface@.service after network.target When we configure dhcp interfaces before network.target has run, network.target will try to bring up those interfaces a second time after our service does so. This causes two issues - first, the network target will always fail because it can't bring up an interface that is already up, and second, when configuring interfaces that don't actually have an available DHCP server it will result in a five minute delay waiting for DHCP on those interfaces. This will also cause the network target to fail and is an unnecessary delay. By moving the dhcp-interface service to run after the network target we avoid both of these problems. network.target will still bring up the interfaces on subsequent boots. This could result in the five minute delay happening on reboots, but the expected use case for interfaces without DHCP is that they would be configured statically on initial deployment so this should be a minor issue. The dhcp-interface service is also configured to run before the network-online target so that services which depend on the network actually being available will not race the DHCP process. A snippet from /var/log/messages on a node with this patch applied is included in the bug to demonstrate the behavior described above. Change-Id: I5cfabf20f920beea52abf4c42362b6f6ac0b37c4 Closes-Bug: 1653812 --- .../dhcp-all-interfaces/install.d/dhcp-interface@.service | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/elements/dhcp-all-interfaces/install.d/dhcp-interface@.service b/elements/dhcp-all-interfaces/install.d/dhcp-interface@.service index 112765029..903026e94 100644 --- a/elements/dhcp-all-interfaces/install.d/dhcp-interface@.service +++ b/elements/dhcp-all-interfaces/install.d/dhcp-interface@.service @@ -1,7 +1,11 @@ [Unit] Description=DHCP interface %I -Before=network-pre.target -Wants=network-pre.target +# We want to run after network.target so it doesn't try to bring +# up the interfaces a second time, but network-online should not +# be reached until after we've brought up the interfaces. +After=network.target +Before=network-online.target +Wants=network-online.target ConditionPathExists=!/etc/sysconfig/network-scripts/ifcfg-%I