Re: [PATCH 31/42] 95fcoe: Store current configuration in dracut cmdline

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux