Are you suggesting that we add --no-wait as well? I think that would be unwise, because it introduces a race: sometimes, the new network interface will not exist when the script exits.
On Wed, May 09, 2012 at 09:40:23AM -0700, Gurucharan Shetty wrote: > Looks good to me. Probably adding the --no-wait along with the timeout > option is not that important. > > On Wed, May 9, 2012 at 9:19 AM, Ben Pfaff <[email protected]> wrote: > > From: Brian Kruger <[email protected]> > > > > If the daemon(s) aren't running for whatever reason, the RHEL ovs > > ifup/ifdown scripts don't take that into account and an attempt to reboot a > > system could take forever. (literally. endless loop!) Here are a couple of > > patches (one of ifup, one for ifdown) to add timeouts (10 seconds), because > > it runs per interface you have configured and that could take awhile to > > reboot a system if needed. > > > > Signed-off-by: Brian Kruger <[email protected]> > > [[email protected] fixed up a conflict against master] > > Signed-off-by: Ben Pfaff <[email protected]> > > --- > > I'm sending this patch out in the standard email form for review. > > Guru, will you take a look at it? > > > > (My apologies if anyone gets multiple copies: the MTA gave me an > > error code on the first try.) > > > > AUTHORS | 1 + > > rhel/etc_sysconfig_network-scripts_ifdown-ovs | 5 +++-- > > rhel/etc_sysconfig_network-scripts_ifup-ovs | 9 +++++---- > > 3 files changed, 9 insertions(+), 6 deletions(-) > > > > diff --git a/AUTHORS b/AUTHORS > > index e207f3c..89472b3 100644 > > --- a/AUTHORS > > +++ b/AUTHORS > > @@ -8,6 +8,7 @@ Andrew Lambeth [email protected] > > Andy Southgate [email protected] > > Arun Sharma [email protected] > > Ben Pfaff [email protected] > > +Brian Kruger [email protected] > > Bryan Phillippe [email protected] > > Casey Barker [email protected] > > Chris Wright [email protected] > > diff --git a/rhel/etc_sysconfig_network-scripts_ifdown-ovs > > b/rhel/etc_sysconfig_network-scripts_ifdown-ovs > > index 3b5252d..19047d8 100755 > > --- a/rhel/etc_sysconfig_network-scripts_ifdown-ovs > > +++ b/rhel/etc_sysconfig_network-scripts_ifdown-ovs > > @@ -22,6 +22,7 @@ cd /etc/sysconfig/network-scripts > > [ -f ../network ] && . ../network > > > > CONFIG=${1} > > +TIMEOUT=10 > > > > source_config > > > > @@ -37,12 +38,12 @@ case "$TYPE" in > > OVSBridge) > > ${OTHERSCRIPT} ${CONFIG} $2 > > retval=$? > > - ovs-vsctl -- --if-exists del-br "$DEVICE" > > + ovs-vsctl -t ${TIMEOUT} -- --if-exists del-br "$DEVICE" > > ;; > > OVSPort|OVSIntPort|OVSBond) > > ${OTHERSCRIPT} ${CONFIG} $2 > > retval=$? > > - ovs-vsctl -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE" > > + ovs-vsctl -t ${TIMEOUT} -- --if-exists del-port > > "$OVS_BRIDGE" "$DEVICE" > > ;; > > *) > > echo $"Invalid OVS interface type $TYPE" > > diff --git a/rhel/etc_sysconfig_network-scripts_ifup-ovs > > b/rhel/etc_sysconfig_network-scripts_ifup-ovs > > index b800ce0..c427879 100755 > > --- a/rhel/etc_sysconfig_network-scripts_ifup-ovs > > +++ b/rhel/etc_sysconfig_network-scripts_ifup-ovs > > @@ -22,6 +22,7 @@ cd /etc/sysconfig/network-scripts > > [ -f ../network ] && . ../network > > > > CONFIG=${1} > > +TIMEOUT=10 > > > > need_config ${CONFIG} > > > > @@ -35,7 +36,7 @@ fi > > > > case "$TYPE" in > > OVSBridge) > > - ovs-vsctl -- --may-exist add-br "$DEVICE" $OVS_OPTIONS > > ${OVS_EXTRA+-- $OVS_EXTRA} > > + ovs-vsctl -t ${TIMEOUT} -- --may-exist add-br "$DEVICE" > > $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA} > > if [ "${OVSBOOTPROTO}" = "dhcp" ] && [ -n "${OVSINTF}" ]; > > then > > case " ${OVSDHCPINTERFACES} " in > > *" ${OVSINTF} "*) > > @@ -50,12 +51,12 @@ case "$TYPE" in > > OVSPort) > > /sbin/ifup "$OVS_BRIDGE" > > ${OTHERSCRIPT} ${CONFIG} ${2} > > - ovs-vsctl -- --may-exist add-port "$OVS_BRIDGE" "$DEVICE" > > $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA} > > + ovs-vsctl -t ${TIMEOUT} -- --may-exist add-port > > "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA} > > OVSINTF=${DEVICE} /sbin/ifup "$OVS_BRIDGE" > > ;; > > OVSIntPort) > > /sbin/ifup "$OVS_BRIDGE" > > - ovs-vsctl -- --may-exist add-port "$OVS_BRIDGE" "$DEVICE" > > $OVS_OPTIONS -- set Interface "$DEVICE" type=internal ${OVS_EXTRA+-- > > $OVS_EXTRA} > > + ovs-vsctl -t ${TIMEOUT} -- --may-exist add-port > > "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS -- set Interface "$DEVICE" > > type=internal ${OVS_EXTRA+-- $OVS_EXTRA} > > ${OTHERSCRIPT} ${CONFIG} ${2} > > ;; > > OVSBond) > > @@ -63,7 +64,7 @@ case "$TYPE" in > > for _iface in $BOND_IFACES; do > > /sbin/ifup ${_iface} > > done > > - ovs-vsctl -- --fake-iface add-bond "$OVS_BRIDGE" "$DEVICE" > > ${BOND_IFACES} $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA} > > + ovs-vsctl -t ${TIMEOUT} -- --fake-iface add-bond > > "$OVS_BRIDGE" "$DEVICE" ${BOND_IFACES} $OVS_OPTIONS ${OVS_EXTRA+-- > > $OVS_EXTRA} > > ${OTHERSCRIPT} ${CONFIG} ${2} > > OVSINTF=${DEVICE} /sbin/ifup "$OVS_BRIDGE" > > ;; > > -- > > 1.7.2.5 > > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
