[initscripts/f21] adjust LINKDELAY when STP is on (#1162822)

Lukáš Nykrýn lnykryn at fedoraproject.org
Wed Nov 12 12:05:13 UTC 2014


commit 9595b0b3dab45b55a50fe6ce911f283e26a1fb94
Author: Lukas Nykryn <lnykryn at redhat.com>
Date:   Wed Nov 12 13:04:32 2014 +0100

    adjust LINKDELAY when STP is on (#1162822)

 0001-adjust-LINKDELAY-when-STP-is-on.patch |   63 ++++++++++++++++++++++++++++
 initscripts.spec                           |    7 +++-
 2 files changed, 69 insertions(+), 1 deletions(-)
---
diff --git a/0001-adjust-LINKDELAY-when-STP-is-on.patch b/0001-adjust-LINKDELAY-when-STP-is-on.patch
new file mode 100644
index 0000000..e08f242
--- /dev/null
+++ b/0001-adjust-LINKDELAY-when-STP-is-on.patch
@@ -0,0 +1,63 @@
+From 6708502ce8724feb143e5a97af43687cec901c99 Mon Sep 17 00:00:00 2001
+From: Laine Stump <laine at redhat.com>
+Date: Tue, 11 Nov 2014 14:13:22 -0500
+Subject: [PATCH] adjust LINKDELAY when STP is on
+
+This resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1162822
+
+When ifup is called on an interface that has BOOTPROTO=dhcp, ifup-eth
+will call network-functions:check_link_down() to wait for carrier on
+the interface before starting dhclient. If the interface happens to be
+a bridge device, carrier will not come on until at least one attached
+device is in "forwarding" mode. If the bridge has STP enabled, it
+takes at least $DELAY * 2 + 5 seconds (sometimes slightly longer) for
+any attached device to go into forwarding mode.
+
+However, check_link_down() will only wait for max(${LINKDELAY}, 5)
+seconds for carrier, and there are *many* existing configs that have
+STP enabled but no setting for LINKDELAY. Every one of those configs
+will now fail to ifup the bridge device.
+
+The solution implemented in this patch is for ifup-eth to set
+LINKDELAY to at least ${DELAY} * 2 + 7 when the device is a bridge an
+STP is enabled. Since check_link_down() returns within .5 sec of
+carrier coming up, the worst effect this could have would be to take
+longer to fail in the case of a config where carrier was *never* going
+to come up. Otherwise, it will not create any more delay than is
+already present in cases that currently work, and will cause many
+other configs to become unbroken.
+---
+ sysconfig/network-scripts/ifup-eth | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/sysconfig/network-scripts/ifup-eth b/sysconfig/network-scripts/ifup-eth
+index c8154dc..1ee026b 100755
+--- a/sysconfig/network-scripts/ifup-eth
++++ b/sysconfig/network-scripts/ifup-eth
+@@ -1,6 +1,6 @@
+ #!/bin/bash
+ # Network Interface Configuration System
+-# Copyright (c) 1996-2010 Red Hat, Inc. all rights reserved.
++# Copyright (c) 1996-2014 Red Hat, Inc. all rights reserved.
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License, version 2,
+@@ -64,6 +64,15 @@ if [ "${TYPE}" = "Bridge" ]; then
+           value=${arg##*=};
+           echo $value > /sys/class/net/${DEVICE}/bridge/$key
+       done
++      # set LINKDELAY (used as timeout when calling check_link_down())
++      # to at least (${DELAY} * 2) + 7 if STP is enabled. This is the
++      # minimum time required for /sys/class/net/$REALDEVICE/carrier to
++      # become 1 after "ip link set dev $DEVICE up" is called.
++      if [ "${STP}" = "yes" -o "${STP}" = "on" ]; then
++          TMPD=7
++          [ -n "${DELAY}" ] && TMPD=$(expr ${DELAY} \* 2 + ${TMPD})
++          [ 0$LINKDELAY -lt $TMPD ] && LINKDELAY=$TMPD
++      fi
+ fi
+ 
+ # Create tap device.
+-- 
+1.8.3.1
+
diff --git a/initscripts.spec b/initscripts.spec
index f46403a..eeccc69 100644
--- a/initscripts.spec
+++ b/initscripts.spec
@@ -3,7 +3,7 @@ Name: initscripts
 Version: 9.56.1
 License: GPLv2
 Group: System Environment/Base
-Release: 3%{?dist}
+Release: 4%{?dist}
 URL: http://fedorahosted.org/releases/i/n/initscripts/
 Source: http://fedorahosted.org/releases/i/n/initscripts/initscripts-%{version}.tar.bz2
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
@@ -35,6 +35,7 @@ BuildRequires: glib2-devel popt-devel gettext pkgconfig
 Provides: /sbin/service
 
 Patch1: 0001-ifup-vlan-fix-typo.patch
+Patch2: 0001-adjust-LINKDELAY-when-STP-is-on.patch
 
 %description
 This package contains the script that activates and deactivates most
@@ -54,6 +55,7 @@ Currently, this consists of various memory checking code.
 %prep
 %setup -q
 %patch1 -p1
+%patch2 -p1
 
 %build
 make
@@ -192,6 +194,9 @@ rm -rf $RPM_BUILD_ROOT
 /etc/profile.d/debug*
 
 %changelog
+* Wed Nov 12 2014 Lukáš Nykrýn <lnykryn at redhat.com> - 9.56.1-4
+- adjust LINKDELAY when STP is on (#1162822)
+
 * Thu Nov 06 2014 Lukáš Nykrýn <lnykryn at redhat.com> - 9.56.1-3
 - ifup,vlan: fix typo
 


More information about the scm-commits mailing list