[ewg] perfquery error

Sasha Khapyorsky sashak at voltaire.com
Wed Jul 23 14:22:42 PDT 2008


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.

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