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 <b...@nicira.com> 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 <b...@nicira.com> Acked-by: Ian Campbell <ian.campb...@citrix.com> CC: Dominic Curran <dominic.cur...@citrix.com> Reported-by: Michael Mao <m...@nicira.com> 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 jmed...@juniper.net Jeongkeun Lee jk...@hp.com Joan Cirer j...@ev0.net John Galgay j...@galgay.net +Michael Mao m...@nicira.com Paulo Cravero pcrav...@as2594.net Peter Balland pe...@nicira.com Ram Jothikumar rjothiku...@nicira.com 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 dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev_openvswitch.org