From f51c1d9890c84c00950dbe5d174ef2682686bcb3 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Fri, 16 Jul 2010 09:22:23 -0700 Subject: [PATCH] xenserver: Kill bond slaves' dhclients when bringing up bond master. This fixes the converse of the problem addressed by commit fe19e820 "xenserver: Kill bond master's dhclient when bringing up bond slave". In that commit's log message, I claimed that the converse was not a problem, but I was wrong. I must have screwed up in testing, because it really is a problem. This commit fixes it. Signed-off-by: Ben Pfaff Acked-by: Ian Campbell CC: Dominic Curran Reported-by: Michael Mao Bug #2668. --- AUTHORS | 1 + ...urce_libexec_InterfaceReconfigureVswitch.py | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/AUTHORS b/AUTHORS index b0f31d93..97f7c673 100644 --- a/AUTHORS +++ b/AUTHORS @@ -37,6 +37,7 @@ Jan Medved jmedved@juniper.net Jeongkeun Lee jklee@hp.com Joan Cirer joan@ev0.net John Galgay john@galgay.net +Michael Mao mmao@nicira.com Paulo Cravero pcravero@as2594.net Peter Balland peter@nicira.com Ram Jothikumar rjothikumar@nicira.com diff --git a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py index 1e45759a..ef2f1fe6 100644 --- a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py +++ b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py @@ -431,17 +431,25 @@ class DatapathVswitch(Datapath): def bring_down_existing(self): # interface-reconfigure is never explicitly called to down a # bond master. However, when we are called to up a slave it - # is implicit that we are destroying the master. + # is implicit that we are destroying the master. Conversely, + # when we are called to up a bond is is implicit that we are + # taking down the slaves. # - # This is (only) important in the case where the bond master - # uses DHCP. We need to kill the dhclient process, otherwise - # bringing the bond master back up later will fail because - # ifup will refuse to start a duplicate dhclient. + # This is (only) important in the case where the device being + # implicitly taken down uses DHCP. We need to kill the + # dhclient process, otherwise performing the inverse operation + # later later will fail because ifup will refuse to start a + # duplicate dhclient. bond_masters = pif_get_bond_masters(self._pif) for master in bond_masters: log("action_up: bring down bond master %s" % (pif_netdev_name(master))) run_command(["/sbin/ifdown", pif_bridge_name(master)]) + bond_slaves = pif_get_bond_slaves(self._pif) + for slave in bond_slaves: + log("action_up: bring down bond slave %s" % (pif_netdev_name(slave))) + run_command(["/sbin/ifdown", pif_bridge_name(slave)]) + def configure(self): # Bring up physical devices. ovs-vswitchd initially enables or # disables bond slaves based on whether carrier is detected -- 2.30.2