On 12/12/2014 04:02 AM, Baoquan He wrote: > On 12/11/14 at 03:46pm, Thomas Renninger wrote: >> From: Hannes Reinecke <hare@xxxxxxx> >> >> When running with --hostonly-cmdline we should be storing >> the current configuration in /etc/cmdline.d so that dracut >> will be configure the system automatically. >> >> References: bnc#877288 >> >> Signed-off-by: Hannes Reinecke <hare@xxxxxxx> >> Signed-off-by: Thomas Renninger <trenn@xxxxxxx> >> --- >> modules.d/95fcoe/module-setup.sh | 52 ++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 52 insertions(+) >> >> diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh >> index b67aa04..174745a 100755 >> --- a/modules.d/95fcoe/module-setup.sh >> +++ b/modules.d/95fcoe/module-setup.sh >> @@ -2,7 +2,16 @@ >> >> # called by dracut >> check() { >> + [[ $hostonly ]] || [[ $mount_needs ]] && { >> + for c in /sys/bus/fcoe/devices/ctlr_* ; do >> + [ -L $c ] || continue >> + fcoe_ctlr=$c >> + done >> + [ -z "$fcoe_ctlr" ] && return 255 >> + } >> + >> require_binaries dcbtool fipvlan lldpad ip readlink || return 1 >> + >> return 0 >> } >> >> @@ -17,12 +26,55 @@ installkernel() { >> instmods fcoe 8021q edd >> } >> >> +get_vlan_parent() { >> + local link=$1 >> + >> + [ -d $link ] || return >> + read iflink < $link/iflink >> + for if in /sys/class/net/* ; do >> + read idx < $if/ifindex >> + if [ $idx -eq $iflink ] ; then >> + echo ${if##*/} >> + fi >> + done >> +} >> + >> +# called by dracut >> +cmdline() { >> + >> + for c in /sys/bus/fcoe/devices/ctlr_* ; do >> + [ -L $c ] || continue >> + read enabled < $c/enabled >> + [ $enabled -eq 0 ] && continue >> + d=$(cd -P $c; echo $PWD) >> + i=${d%/*} >> + read mac < ${i}/address >> + s=$(dcbtool gc ${i##*/} dcb | sed -n 's/^DCB State:\t*\(.*\)/\1/p') >> + if [ -z "$s" ] ; then >> + p=$(get_vlan_parent ${i}) >> + if [ "$p" ] ; then >> + s=$(dcbtool gc ${p} dcb | sed -n 's/^DCB State:\t*\(.*\)/\1/p') >> + fi >> + fi >> + if [ "$s" = "on" ] ; then >> + dcb="dcb" >> + else >> + dcb="nodcb" >> + fi >> + echo "fcoe=${mac}:${dcb}" >> + done >> +} > > Hi Thomas, > > Why do you need to do this? Usually a module should do the work based on > its functionality. According to your change, how does a user specify NIC > or vlan they only want to bring up? > You don't. The current code checking for DCBx capabilities, and sets a default for that. The FCoE mac address is basically fixed (derived from the network MAC address), and the VLAN is given by the DCBx information. If DCB is not running there's a fair chance you're FCoE connection won't run reliably, neither. (Intel claims it FCoE would run without DCB in a Peer-to-Peer connection, but I've never seen that in real life). Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@xxxxxxx +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: J. Hawn, J. Guild, F. Imendörffer, HRB 21284 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe initramfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html