Re: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid port. Otherwise leave it as 0

2011-04-18 Thread Hal Rosenstock
On 4/17/2011 9:26 PM, Weiny, Ira K. wrote:
 On Apr 17, 2011, at 8:21 AM, Hal Rosenstock wrote:
 
 On 4/15/2011 6:17 PM, Ira Weiny wrote:

 Subject: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid 
 port.  Otherwise leave it as 0


 Signed-off-by: Ira Weiny wei...@llnl.gov
 ---
 opensm/osm_perfmgr.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

 diff --git a/opensm/osm_perfmgr.c b/opensm/osm_perfmgr.c
 index 6a1fa63..3e1575a 100644
 --- a/opensm/osm_perfmgr.c
 +++ b/opensm/osm_perfmgr.c
 @@ -454,7 +454,9 @@ static void collect_guids(cl_map_item_t * p_map_item, 
 void *context)
   ib_switch_info_is_enhanced_port0(node-sw-

 switch_info));
 for (port = mon_node-esp0 ? 0 : 1; port  num_ports; port++) {
 -   mon_node-port[port].orig_lid = get_base_lid(node, 
 port);
 +   mon_node-port[port].orig_lid = 0;
 +   if (osm_physp_is_valid(node-physp_table[port]))
 +   mon_node-port[port].orig_lid = 
 get_base_lid(node, port);
 mon_node-port[port].valid = TRUE;
 }


 There are several other calls to get_base_lid. Is it also an issue there
 too or is port always valid there ? If it's not always valid for those
 cases, why not just move this check into get_base_lid ?
 
 I believe this is a special case because we are looping through the ports of 
 a CA node and not all of it's ports are valid on this fabric.  Most of the 
 other places where get_base_lid is called I believe the port is known to be 
 good, therefore there is an assertion in there just to protect us.
 
 I think the better way to fix this would probably be to change the perfmgr 
 to track ports rather than nodes.[*]

Why would tracking ports be better than tracking nodes ? Just to
eliminate this issue ?

 Unfortunately this will take a significant amount of coding effort.  I think 
 the best thing to do is just check if the physical port is valid as I did 
 above.
 
 As to Alex's comment I think the port should be marked invalid as well.  (I 
 should have CC'ed the list on my response to him.)  I will resend the patch 
 with that change.
 
 Ira
 
 [*] At the time I coded the perfmgr it seemed to make more sense to track 
 nodes rather than ports.  
 In hindsight this might have been a mistake but for this small place I don't 
 see a reason to re-architect it all yet.

I'm not following what you're thinking here other than this small issue.
Is there something more behind this ?

-- Hal

--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid port. Otherwise leave it as 0

2011-04-18 Thread Ira Weiny
On Mon, 18 Apr 2011 05:42:56 -0700
Hal Rosenstock h...@dev.mellanox.co.il wrote:

 On 4/17/2011 9:26 PM, Weiny, Ira K. wrote:
  On Apr 17, 2011, at 8:21 AM, Hal Rosenstock wrote:
  
  On 4/15/2011 6:17 PM, Ira Weiny wrote:
 

[snip]

 
  There are several other calls to get_base_lid. Is it also an issue there
  too or is port always valid there ? If it's not always valid for those
  cases, why not just move this check into get_base_lid ?
  
  I believe this is a special case because we are looping through the ports 
  of a CA node and not all of it's ports are valid on this fabric.  Most of 
  the other places where get_base_lid is called I believe the port is known 
  to be good, therefore there is an assertion in there just to protect us.
  
  I think the better way to fix this would probably be to change the 
  perfmgr to track ports rather than nodes.[*]
 
 Why would tracking ports be better than tracking nodes ? Just to
 eliminate this issue ?
 
  Unfortunately this will take a significant amount of coding effort.  I 
  think the best thing to do is just check if the physical port is valid as I 
  did above.
  
  As to Alex's comment I think the port should be marked invalid as well.  (I 
  should have CC'ed the list on my response to him.)  I will resend the patch 
  with that change.
  
  Ira
  
  [*] At the time I coded the perfmgr it seemed to make more sense to track 
  nodes rather than ports.  
  In hindsight this might have been a mistake but for this small place I 
  don't see a reason to re-architect it all yet.
 
 I'm not following what you're thinking here other than this small issue.
 Is there something more behind this ?

I agree that it would not be worth the effort to fix this minor issue.  My 
thoughts were: we are tracking values which are provided by ports not nodes.  
(They are PortCounters after all.)  So in some ways it makes sense to keep 
track of all the ports in the system.

However, I did think about it more after my email and tracking ports may have 
other disadvantages.  One example I could think of was that the perfmgr keeps 
it's own list of monitored nodes.  This list would be much larger if we were 
tracking ports.  So finding the monitored port would be slower when 
processing response mads.  Would that be a big deal?  Perhaps not.  I would 
have to do some performance tests.

In the end I just wanted to acknowledge that there might be another way.

:-D

Ira

 
 -- Hal
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-rdma in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html


-- 
Ira Weiny
Math Programmer/Computer Scientist
Lawrence Livermore National Lab
925-423-8008
wei...@llnl.gov
--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid port. Otherwise leave it as 0

2011-04-17 Thread Alex Netes
Hi Ira,

On 15:17 Fri 15 Apr , Ira Weiny wrote:
 
 Subject: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid 
 port.  Otherwise leave it as 0
 
 
 Signed-off-by: Ira Weiny wei...@llnl.gov
 ---
  opensm/osm_perfmgr.c |4 +++-
  1 files changed, 3 insertions(+), 1 deletions(-)
 
 diff --git a/opensm/osm_perfmgr.c b/opensm/osm_perfmgr.c
 index 6a1fa63..3e1575a 100644
 --- a/opensm/osm_perfmgr.c
 +++ b/opensm/osm_perfmgr.c
 @@ -454,7 +454,9 @@ static void collect_guids(cl_map_item_t * p_map_item, 
 void *context)
 ib_switch_info_is_enhanced_port0(node-sw-
  
 switch_info));
   for (port = mon_node-esp0 ? 0 : 1; port  num_ports; port++) {
 - mon_node-port[port].orig_lid = get_base_lid(node, 
 port);
 + mon_node-port[port].orig_lid = 0;
 + if (osm_physp_is_valid(node-physp_table[port]))
 + mon_node-port[port].orig_lid = 
 get_base_lid(node, port);
   mon_node-port[port].valid = TRUE;

Shouldn't this port marked with mon_node-port[port].valid = FALSE ?


-- Alex
--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid port. Otherwise leave it as 0

2011-04-17 Thread Hal Rosenstock
On 4/15/2011 6:17 PM, Ira Weiny wrote:
 
 Subject: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid 
 port.  Otherwise leave it as 0
 
 
 Signed-off-by: Ira Weiny wei...@llnl.gov
 ---
  opensm/osm_perfmgr.c |4 +++-
  1 files changed, 3 insertions(+), 1 deletions(-)
 
 diff --git a/opensm/osm_perfmgr.c b/opensm/osm_perfmgr.c
 index 6a1fa63..3e1575a 100644
 --- a/opensm/osm_perfmgr.c
 +++ b/opensm/osm_perfmgr.c
 @@ -454,7 +454,9 @@ static void collect_guids(cl_map_item_t * p_map_item, 
 void *context)
 ib_switch_info_is_enhanced_port0(node-sw-
  
 switch_info));
   for (port = mon_node-esp0 ? 0 : 1; port  num_ports; port++) {
 - mon_node-port[port].orig_lid = get_base_lid(node, 
 port);
 + mon_node-port[port].orig_lid = 0;
 + if (osm_physp_is_valid(node-physp_table[port]))
 + mon_node-port[port].orig_lid = 
 get_base_lid(node, port);
   mon_node-port[port].valid = TRUE;
   }
  

There are several other calls to get_base_lid. Is it also an issue there
too or is port always valid there ? If it's not always valid for those
cases, why not just move this check into get_base_lid ?
--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid port. Otherwise leave it as 0

2011-04-17 Thread Weiny, Ira K.
On Apr 17, 2011, at 8:21 AM, Hal Rosenstock wrote:

 On 4/15/2011 6:17 PM, Ira Weiny wrote:
 
 Subject: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid 
 port.  Otherwise leave it as 0
 
 
 Signed-off-by: Ira Weiny wei...@llnl.gov
 ---
 opensm/osm_perfmgr.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
 
 diff --git a/opensm/osm_perfmgr.c b/opensm/osm_perfmgr.c
 index 6a1fa63..3e1575a 100644
 --- a/opensm/osm_perfmgr.c
 +++ b/opensm/osm_perfmgr.c
 @@ -454,7 +454,9 @@ static void collect_guids(cl_map_item_t * p_map_item, 
 void *context)
ib_switch_info_is_enhanced_port0(node-sw-
 
 switch_info));
  for (port = mon_node-esp0 ? 0 : 1; port  num_ports; port++) {
 -mon_node-port[port].orig_lid = get_base_lid(node, 
 port);
 +mon_node-port[port].orig_lid = 0;
 +if (osm_physp_is_valid(node-physp_table[port]))
 +mon_node-port[port].orig_lid = 
 get_base_lid(node, port);
  mon_node-port[port].valid = TRUE;
  }
 
 
 There are several other calls to get_base_lid. Is it also an issue there
 too or is port always valid there ? If it's not always valid for those
 cases, why not just move this check into get_base_lid ?

I believe this is a special case because we are looping through the ports of a 
CA node and not all of it's ports are valid on this fabric.  Most of the other 
places where get_base_lid is called I believe the port is known to be good, 
therefore there is an assertion in there just to protect us.

I think the better way to fix this would probably be to change the perfmgr to 
track ports rather than nodes.[*]  Unfortunately this will take a significant 
amount of coding effort.  I think the best thing to do is just check if the 
physical port is valid as I did above.

As to Alex's comment I think the port should be marked invalid as well.  (I 
should have CC'ed the list on my response to him.)  I will resend the patch 
with that change.

Ira

[*] At the time I coded the perfmgr it seemed to make more sense to track nodes 
rather than ports.  In hindsight this might have been a mistake but for this 
small place I don't see a reason to re-architect it all yet.

 --
 To unsubscribe from this list: send the line unsubscribe linux-rdma in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid port. Otherwise leave it as 0

2011-04-17 Thread Weiny, Ira K.

On Apr 17, 2011, at 8:06 AM, Alex Netes wrote:

 Hi Ira,
 
 On 15:17 Fri 15 Apr , Ira Weiny wrote:
 
 Subject: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid 
 port.  Otherwise leave it as 0
 
 
 Signed-off-by: Ira Weiny wei...@llnl.gov
 ---
 opensm/osm_perfmgr.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
 
 diff --git a/opensm/osm_perfmgr.c b/opensm/osm_perfmgr.c
 index 6a1fa63..3e1575a 100644
 --- a/opensm/osm_perfmgr.c
 +++ b/opensm/osm_perfmgr.c
 @@ -454,7 +454,9 @@ static void collect_guids(cl_map_item_t * p_map_item, 
 void *context)
ib_switch_info_is_enhanced_port0(node-sw-
 
 switch_info));
  for (port = mon_node-esp0 ? 0 : 1; port  num_ports; port++) {
 -mon_node-port[port].orig_lid = get_base_lid(node, 
 port);
 +mon_node-port[port].orig_lid = 0;
 +if (osm_physp_is_valid(node-physp_table[port]))
 +mon_node-port[port].orig_lid = 
 get_base_lid(node, port);
  mon_node-port[port].valid = TRUE;
 
 Shouldn't this port marked with mon_node-port[port].valid = FALSE ?

New patch below.


Subject: [PATCH 1/5] opensm/perfmgr: set redirect orig_lid and valid flag only 
when we have a valid port.

Signed-off-by: Ira Weiny wei...@llnl.gov
---
 opensm/osm_perfmgr.c |8 ++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/opensm/osm_perfmgr.c b/opensm/osm_perfmgr.c
index 5758587..3578e13 100644
--- a/opensm/osm_perfmgr.c
+++ b/opensm/osm_perfmgr.c
@@ -454,8 +454,12 @@ static void collect_guids(cl_map_item_t * p_map_item, void 
*context)
  ib_switch_info_is_enhanced_port0(node-sw-
   
switch_info));
for (port = mon_node-esp0 ? 0 : 1; port  num_ports; port++) {
-   mon_node-port[port].orig_lid = get_base_lid(node, 
port);
-   mon_node-port[port].valid = TRUE;
+   mon_node-port[port].orig_lid = 0;
+   mon_node-port[port].valid = FALSE;
+   if (osm_physp_is_valid(node-physp_table[port])) {
+   mon_node-port[port].orig_lid = 
get_base_lid(node, port);
+   mon_node-port[port].valid = TRUE;
+   }
}
 
cl_qmap_insert(pm-monitored_map, node_guid,
-- 
1.7.1


--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] opensm: perfmgr, only set orig_lid when we have a valid port. Otherwise leave it as 0

2011-04-15 Thread Ira Weiny

Subject: [PATCH] opensm: perfmgr, only set orig_lid when we have a valid port.  
Otherwise leave it as 0


Signed-off-by: Ira Weiny wei...@llnl.gov
---
 opensm/osm_perfmgr.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/opensm/osm_perfmgr.c b/opensm/osm_perfmgr.c
index 6a1fa63..3e1575a 100644
--- a/opensm/osm_perfmgr.c
+++ b/opensm/osm_perfmgr.c
@@ -454,7 +454,9 @@ static void collect_guids(cl_map_item_t * p_map_item, void 
*context)
  ib_switch_info_is_enhanced_port0(node-sw-
   
switch_info));
for (port = mon_node-esp0 ? 0 : 1; port  num_ports; port++) {
-   mon_node-port[port].orig_lid = get_base_lid(node, 
port);
+   mon_node-port[port].orig_lid = 0;
+   if (osm_physp_is_valid(node-physp_table[port]))
+   mon_node-port[port].orig_lid = 
get_base_lid(node, port);
mon_node-port[port].valid = TRUE;
}
 
-- 
1.7.1

--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html