From 50820f9e18c7e7a8a0f2350c5a87a3e445a6a148 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 9 Dec 2009 11:33:04 +1100 Subject: [PATCH] Bond devices can have any name the user configures, so when checking link status for an interface, first check if this interface is in fact a bond device (by the precense of a /proc/net/bonding/IFACE file) and use that file for checking status. Othervise assume ib* is an infiniband interface which we donnt know how to check, or otherwise it is an ethernet interface and ethtool should hopefully work. (This used to be ctdb commit 8cc6c5de3d7abb0b72eaa6e769e70963b02d84cb) --- ctdb/config/events.d/10.interface | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/ctdb/config/events.d/10.interface b/ctdb/config/events.d/10.interface index cf109f3ef8a..f881808f115 100755 --- a/ctdb/config/events.d/10.interface +++ b/ctdb/config/events.d/10.interface @@ -142,18 +142,23 @@ case "$1" in INTERFACES=`for IFACE in $INTERFACES ; do echo $IFACE ; done | sort | uniq` for IFACE in $INTERFACES ; do + # These interfaces are sometimes bond devices + # When we use VLANs for bond interfaces, there will only + # be an entry in /proc for the underlying real interface + REALIFACE=`echo $IFACE |sed -e 's/\..*$//'` + [ -f /proc/net/bonding/$REALIFACE ] && { + grep -q 'Currently Active Slave: None' /proc/net/bonding/$REALIFACE && { + echo "ERROR: No active slaves for bond device $REALIFACE" + exit 1 + } + grep -q '^MII Status: up' /proc/net/bonding/$REALIFACE || { + echo "ERROR: public network interface $REALIFACE is down" + exit 1 + } + exit 0; + } + case $IFACE in - ethX*|bond*) - IFACE=`echo $IFACE |sed -e 's/\....$//'` - grep -q 'Currently Active Slave: None' /proc/net/bonding/$IFACE && { - echo "ERROR: No active slaves for bond device $IFACE" - exit 1 - } - grep -q '^MII Status: up' /proc/net/bonding/$IFACE || { - echo "ERROR: public network interface $IFACE is down" - exit 1 - } - ;; ib*) # we dont know how to test ib links ;;