[ewg] perfquery error

Hal Rosenstock hal.rosenstock at gmail.com
Wed Jul 23 19:16:57 PDT 2008


Sasha,

On Wed, Jul 23, 2008 at 5:22 PM, Sasha Khapyorsky <sashak at voltaire.com> wrote:
> Hi Hal,
>
> On 12:37 Mon 21 Jul     , Hal Rosenstock wrote:
>> > or directory)
>> > [root at vic12 ~]# perfquery
>> > ibpanic: [3926] madrpc_init: can't open UMAD port ((null):0): (No such file
>> > or directory)
>> > [root at vic12 ~]#
>>
>> This sounds like an additional aspect of the libibumad API issue
>> introduced when some functionality related to this was eliminated. The
>> previous fix related to OpenSM appears to not be the complete solution
>> to these mixed configurations.
>
> I think you are referring changes which were done in OpenSM ibumad vendor
> layer, specifically commits 5cf395cb107ef76091d554cd4b42456dc53b38a2 and
> 36cfd8e6967d8a7aea74b9a180fac0275ef549dd and had nothing to do with
> libibumad API.

I was referring to the changes which eliminated index 0 being the
default interface. Was the elimination of the default interface not an
API change to libibumad ?

-- Hal

> Regarding to an issue itself. Steve, does something like this:
>
>
> diff --git a/libibumad/src/umad.c b/libibumad/src/umad.c
> index dcc7275..9010307 100644
> --- a/libibumad/src/umad.c
> +++ b/libibumad/src/umad.c
> @@ -499,6 +499,19 @@ umad_done(void)
>        return 0;
>  }
>
> +static unsigned is_ib_type(char *ca_name)
> +{
> +       char dir_name[256];
> +       unsigned type;
> +
> +       snprintf(dir_name, sizeof(dir_name), "%s/%s", SYS_INFINIBAND, ca_name);
> +
> +       if (sys_read_uint(dir_name, SYS_NODE_TYPE, &type) < 0)
> +               return 0;
> +
> +       return type >= 1 && type <= 3 ? 1 : 0;
> +}
> +
>  int
>  umad_get_cas_names(char cas[][UMAD_CA_NAME_LEN], int max)
>  {
> @@ -512,7 +525,7 @@ umad_get_cas_names(char cas[][UMAD_CA_NAME_LEN], int max)
>                for (i = 0; i < n; i++) {
>                        if (strcmp(namelist[i]->d_name, ".") &&
>                            strcmp(namelist[i]->d_name, "..")) {
> -                               if (j < max)
> +                               if (j < max && is_ib_type(namelist[i]->d_name))
>                                        strncpy(cas[j++], namelist[i]->d_name,
>                                                UMAD_CA_NAME_LEN);
>                        }
>
>
> helps?
>
> Sasha
>



More information about the ewg mailing list