[ofa-general] [PATCH 0/3] Implement partial scan of fabric when tools request a single switch. (WAS Re: [PATCH 8/8] Convert ibqueryerrors.pl to C and use new ibnetdisc library.)

Ira Weiny weiny2 at llnl.gov
Thu Apr 30 14:29:41 PDT 2009


Hey Sasha,

See below:

On Mon, 27 Apr 2009 14:50:26 -0700
Ira Weiny <weiny2 at llnl.gov> wrote:

> On Sat, 25 Apr 2009 18:54:41 +0300
> Sasha Khapyorsky <sashak at voltaire.com> wrote:
> 
> > On 13:31 Thu 23 Apr     , Ira Weiny wrote:

[snip]

> > > +	}
> > > +
> > > +	report_suppressed();
> > > +
> > > +	if (switch_guid) {
> > > +		ibnd_node_t *node = ibnd_find_node_guid(fabric, switch_guid);
> > > +		print_node(node, NULL);
> > > +	} else if (dr_path) {
> > > +		ibnd_node_t *node = ibnd_find_node_dr(fabric, dr_path);
> > > +		print_node(node, NULL);
> > 
> > When GUID or DR Path are specified we don't need to discover whole
> > fabric, but can try to resolve LID using SA or querying PortInfo.
> > 
> > Although when in GUID is specified and SA is not responsive there is
> > probably no other choice than discover.
> > 
> 
> :-( good point.  Discovering only part of the fabric was a huge speed
> improvement but if the resolve does not succeed I should do a full discover.
> 
> I will work up a separate patch.  Right now you are correct if the SA is
> unresponsive the "-S" option will fail.  iblinkinfo does the full scan every
> time.  But that slows down the query for a single switch to the same O(n)
> query that a full system scan requires.  I would rather have that query be
> O(1).  So I implemented ibqueryerrors in this manner with the intent of going
> back and "fixing" iblinkinfo.  I think having a fall back on a full system
> scan is a good idea.  Patch for both tools will follow...  :-D
> 

Following up on what I said I would do above.  This turned out to be a 3 patch
series.  Summary of patches (to pq/ibn4) are below.

   1/3) I had to fix libibmad DRSLID/DRDLID fields.  (See my 1 man thread from
      a couple of days ago...  ;-)
   2/3) ibnetdiscover (and therefore libibnetdisc) was not designed to use
      combined DR routing for discovery.  Add combined routing support to
      libibnetdisc.
   3/3) Make iblinkinfo resolve a portid from GUID.  Then change iblinkinfo
      and ibqueryerrors to attempt a single hop discovery around that portid.
      If either resolving the GUID or discover fails they both attempt a full
      discover.  Then they print the single switch asked for on the command
      line.

Patches follow,
Ira




More information about the general mailing list