[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