[ofa-general] Re: suggested patch for partition membership definitiion in osm-partitions.conf (fix)

Philippe Gregoire philippe.gregoire at cea.fr
Tue May 15 08:32:25 PDT 2007


Here are the patches as you asked.
I changed the code to use strncmp as suggested by Sasha.
Philippe

Hal Rosenstock a écrit :
> Hi Philippe,
>
> On Mon, 2007-05-14 at 11:26, Philippe Gregoire wrote:
>   
>> This time , with the definitive patch (sorry)
>>     
>
> Can you resubmit this with a S-O-B line ?
>
>   
>> Hi Hal,
>> the way to define in osm-partitions.conf file  partition membership for
>> port guids is quite very verbose,
>> specially when you have a lot of (full member) ports.
>>     
>
> or lots of limited members, either way. This is an improvement in the
> allowed syntax.
>
>   
>> Here is a patch to allow a more compact partition membership definition.
>> It allows definition of a default
>> membership partition for the port guid list. The old syntax is still usable.
>> old way
>> G1 = 0x01 :  0x123=full, 0x124=full, 0x0x125=full, 0x126=full, 0x127=full ;
>> G1 = 0x01 :  0x128=full, 0x129=full, 0x567, 0x569=full
>>
>> new way :
>> G1 = 0x01 , defmember=full : 0x123, 0x124, 0x125, 0x126, 0x127 ;
>> G1 = 0x01 , defmember=full :  0x128, 0x129, 0x567=limited, 0x569
>>
>> I changed also the opensm man page as some lines (arround limited/full
>> membership) are not well formatted.
>>     
>
> Can you break this piece into 2 parts: fix formatting, and then add
> defmember ?
>
>   
>> This patch has been compiled and tested on our cluster with the
>> following osm-partitions.conf :
>> G1  = 0x0001 , defmember=full : 0x0005ad00000165f1, 0x0005ad0000016cb9,
>> 0x0005ad00000168ad, 0x0005ad0000000cb7=limited, 0x0008f10403962eb1 ;
>> G2  = 0x0002 , defmember=full : 0x0005ad00000165f1, 0x0008f10403962eb1 ;
>> G3  = 0x0003 , defmember=full : 0x0005ad00000165f1, 0x0005ad0000016cb9,
>> 0x0008f10403962eb1 ;
>> G5  = 0x0005 , defmember=full : 0x0008f10403962eb1 ;
>> G10 = 0x0010 , defmember=full : 0x0005ad00000165f1, 0x0008f10403962eb1 ;
>> G70 = 0x0070 , defmember=full : 0x0005ad00000165f1 ;
>> G80 = 0x0080 , defmember=full : 0x0005ad00000165f1;
>> G80 = 0x0080 : 0x0005ad00000168ad;
>> G80 = 0x0080 , defmember=full : 0x0005ad0000016cb9;
>> G80 = 0x0080 , defmember=limited : 0x0005ad0000000cb7, 0x0008f10403962eb1;
>>     
>
> Thanks.
>
> -- Hal
>
>   
>> Philippe
>>
>>
>>
>> ______________________________________________________________________
>>
>> --- opensm/osm_prtn_config.old.c	2007-04-18 11:54:29.000000000 +0200
>> +++ opensm/osm_prtn_config.c	2007-05-14 17:14:42.228813361 +0200
>> @@ -70,6 +70,7 @@
>>  	osm_subn_t *p_subn;
>>  	osm_prtn_t *p_prtn;
>>  	unsigned    is_ipoib, mtu, rate, sl, scope;
>> +	boolean_t   full;
>>  };
>>  
>>  extern osm_prtn_t *osm_prtn_make_new(osm_log_t *p_log, osm_subn_t *p_subn,
>> @@ -163,6 +164,14 @@
>>  				" - skipped\n", lineno);
>>  		else
>>  			conf->sl = sl;
>> +	} else if (!strncmp(flag, "defmember", len)) {
>> +		if (!val || (strcmp(val, "limited") && strcmp(val, "full")))
>> +			osm_log(conf->p_log, OSM_LOG_VERBOSE,
>> +				"PARSE WARN: line %d: "
>> +				"flag \'defmember\' requires valid value (limited or full)"
>> +				" - skipped\n", lineno);
>> +		else
>> +			conf->full = strcmp(val, "full") == 0;
>>  	} else {
>>  			osm_log(conf->p_log, OSM_LOG_VERBOSE,
>>  					  "PARSE WARN: line %d: "
>> @@ -177,12 +186,14 @@
>>  {
>>  	osm_prtn_t *p = conf->p_prtn;
>>  	ib_net64_t guid;
>> -	boolean_t full = FALSE;
>> +	boolean_t full = conf->full;
>>  
>>  	if (!name || !*name || !strncmp(name, "NONE", strlen(name)))
>>  		return 0;
>>  
>>  	if (flag) {
>> +		/* reset default membership to limited */
>> +		full = FALSE;
>>  		if (!strncmp(flag, "full", strlen(flag)))
>>  			full = TRUE;
>>  		else if (strncmp(flag, "limited", strlen(flag))) {
>> @@ -275,6 +286,7 @@
>>  	conf->p_prtn = NULL;
>>  	conf->is_ipoib = 0;
>>  	conf->sl = OSM_DEFAULT_SL;
>> +	conf->full = FALSE;
>>  	return conf;
>>  }
>>  
>> --- man/opensm.8.old	2007-04-18 11:54:29.000000000 +0200
>> +++ man/opensm.8	2007-05-14 16:19:11.747555126 +0200
>> @@ -291,13 +291,15 @@
>>  
>>  Partition Definition:
>>  
>> -[PartitionName][=PKey][,flag[=value]]
>> +[PartitionName][=PKey][,flag[=value]][,defmember=full|limited]
>>  
>>   PartitionName - string, will be used with logging. When omitted
>>                   empty string will be used.
>>   PKey          - P_Key value for this partition. Only low 15 bits will
>>                   be used. When omitted will be autogenerated.
>>   flag          - used to indicate IPoIB capability of this partition.
>> + defmember=full|limited - specifies default membership for port guid. 
>> +                 Default is limited.
>>  
>>  Currently recognized flags are:
>>  
>> @@ -317,10 +319,10 @@
>>  
>>  PortGUIDs list:
>>  
>> -PortGUID     - GUID of partition member EndPort. Hexadecimal numbers
>> -               should start from 0x, decimal numbers are accepted too.
>> -full or      - indicates full or limited membership for this port. When
>> -  limited      omitted (or unrecognized) limited membership is assumed.
>> + PortGUID         - GUID of partition member EndPort. Hexadecimal numbers
>> +                   should start from 0x, decimal numbers are accepted too.
>> + full or limited  - indicates full or limited membership for this port.
>> +                   When omitted (or unrecognized) default (defmember) membership is assumed.
>>  
>>  There are two useful keywords for PortGUID definition:
>>  
>> @@ -346,12 +348,20 @@
>>  
>>  Examples:
>>  
>> -Default=0x7fff : ALL, SELF=full ;
>> + Default=0x7fff : ALL, SELF=full ;
>>  
>> -NewPartition , ipoib : 0x123456=full, 0x3456789034=limi, 0x2134af2306 ;
>> + NewPartition , ipoib : 0x123456=full, 0x3456789034=limi, 0x2134af2306 ;
>>  
>> -YetAnotherOne = 0x300 : SELF=full ;
>> -YetAnotherOne = 0x300 : ALL=limited ;
>> + YetAnotherOne = 0x300 : SELF=full ;
>> + YetAnotherOne = 0x300 : ALL=limited ;
>> +
>> + ShareIO = 0x80 , defmember=full : 0x123451, 0x123452;
>> + # 0x123453, 0x123454 will be limited
>> + ShareIO = 0x80 : 0x123453, 0x123454, 0x123455=full;
>> + # 0x123456, 0x123457 will be limited
>> + ShareIO = 0x80 : defmember=limited : 0x123456, 0x123457, 0x123458=full;
>> + ShareIO = 0x80 , defmember=full : 0x123459, 0x12345a;
>> + ShareIO = 0x80 , defmember=full : 0x12345b, 0x12345c=limited, 0x12345d;
>>  
>>  Note:
>>  
>>     
>
>
>   

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: defmember.patch
URL: <http://lists.openfabrics.org/pipermail/general/attachments/20070515/803b4944/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: osm-man1.patch
URL: <http://lists.openfabrics.org/pipermail/general/attachments/20070515/803b4944/attachment-0001.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: osm-man2.patch
URL: <http://lists.openfabrics.org/pipermail/general/attachments/20070515/803b4944/attachment-0002.ksh>


More information about the general mailing list