The following fix to InterfaceReconfigureVswitch.py was committed to the OVS repository in July 2010. It has an ack from Ian and I CC'd it to Dominic, but it looks to me like it didn't make it upstream into xen-api.hg. Could you check on that for me?
As background, we'd like OVS to not have to replace these scripts at all, but of course we'll have to if we don't get all of our bugfixes included upstream. Thanks, Ben. --8<--------------------------cut here-------------------------->8-- From: Ben Pfaff <[email protected]> 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 <[email protected]> Acked-by: Ian Campbell <[email protected]> CC: Dominic Curran <[email protected]> Reported-by: Michael Mao <[email protected]> Bug #2668. --- AUTHORS | 1 + ...ensource_libexec_InterfaceReconfigureVswitch.py | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/AUTHORS b/AUTHORS index b0f31d9..97f7c67 100644 --- a/AUTHORS +++ b/AUTHORS @@ -37,6 +37,7 @@ Jan Medved [email protected] Jeongkeun Lee [email protected] Joan Cirer [email protected] John Galgay [email protected] +Michael Mao [email protected] Paulo Cravero [email protected] Peter Balland [email protected] Ram Jothikumar [email protected] diff --git a/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py b/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py index 1e45759..ef2f1fe 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 -- 1.7.1 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev_openvswitch.org
