fcoe-utils/mkinitrd-boot.sh

58 lines
1.1 KiB
Bash
Raw Normal View History

#!/bin/bash
#%stage: device
#%depends: network lldpad
#%programs: fcoeadm
#%programs: fipvlan
#%programs: ip
#%programs: sed
#%programs: sleep
#%programs: vconfig
#%modules: fcoe 8021q
#%if: "$root_fcoe"
#
##### FCoE initialization
##
## This script initializes FCoE (FC over Ethernet).
load_modules
create_fcoe_vlan()
{
local if=$1
local vlan=$2
local vif=$3
vconfig add $if $vlan
tmp_vif=$(sed -n "s/\([^ ]*\).*${vlan}.*${if}/\1/p" /proc/net/vlan/config)
if [ "$vif" ] && [ "$tmp_vif" != "$vif" ] ; then
ip link set dev $tmp_vif name $vif
fi
wait_for_events
ip link set $if up
ip link set $vif up
}
wait_for_fcoe_if()
{
local ifname=$1
local retry_count=$udev_timeout
echo -n "Wait for FCoE link on $ifname: "
while [ $retry_count -gt 0 ] ; do
status=$(fcoeadm -i $ifname 2> /dev/null | sed -n "s/.*State: *\(.*\)/\1/p")
if [ "$status" = "Online" ] ; then
echo "Ok"
return 0
fi
echo -n "."
retry_count=$(($retry_count-1))
sleep 2
done
emergency "Failed!"
}
create_fcoe_vlan $fcoe_if $fcoe_vlan $fcoe_vif
fipvlan -s $fcoe_if
wait_for_fcoe_if $fcoe_vif