-More complex network wait semantics:

-Move all waiting to a common loop, waiting a total of no more than 80 seconds for all nics
   -Give up after 15 seconds with no link-up reported by ethtool
   -Detect suspect spanning-tree.
   -Record spanning-tree suspicion, no link, and total dhcp timeouts to /etc/motd
-Have /etc/profile in nbroot cat /etc/motd, to make ssh into shell report diagnostic messages


git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@843 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
jbjohnso 2008-03-19 18:33:48 +00:00
parent 32fa58e7fc
commit bc6bcc869e

View File

@ -4,6 +4,8 @@ nic=0
hba=0
MOD=""
NICSTOWAIT=""
echo "cat /etc/motd" >> /etc/profile
#Load common usb drivers
modprobe ohci-hcd
@ -45,12 +47,9 @@ do
echo "alias myri0 $MOD" >>/etc/modprobe.conf
else
modprobe $MOD
udhcpc -i eth$nic -b
let extrat=0
until ifconfig eth$nic|grep "inet addr" || [ $extrat == 30 ]; do
sleep 1
let extrat=extrat+1
done
ifconfig eth$nic up
udhcpc -i eth$nic -b &
NICSTOWAIT="$NICSTOWAIT eth$nic"
nic=$(($nic + 1))
fi
;;
@ -94,5 +93,24 @@ if [ -d /proc/device-tree/lhea* ]; then
done
fi
#Give 5 seconds for things to quiesce.
sleep 5
let extrat=0
until [ $extrat == 80 -o -z "$NICSTOWAIT" ]; do
sleep 1
let extrat=extrat+1
for nic in $NICSTOWAIT; do
if ifconfig $nic|grep "inet addr"; then
NICSTOWAIT=`echo $NICSTOWAIT|sed -e s/$nic//`
if [ $extrat -gt 45 ]; then
echo "Warning: $nic took more than 45 seconds to receive DHCP reply, spanning-tree may not be configured well, examine switch configuration" >> /etc/motd
fi
elif [ $extrat == 15 ]; then
if ethtool $nic | grep "Link detected: no"; then
echo "$nic did not have any link when bringing up network" >> /etc/motd
NICSTOWAIT=`echo $NICSTOWAIT|sed -e s/$nic//`
fi
fi
done
done
if [ ! -z "$NICSTOWAIT" ]; then
echo "Warning: the following network devices appeared to be connected to networks, but received no DHCP response: $NICSTOWAIT"
fi