All of lore.kernel.org
 help / color / mirror / Atom feed
From: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Jason Gunthorpe
	<jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
Cc: Jeff Squyres <jsquyres-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH V2] libibverbs: Allow arbitrary int values for MTU.
Date: Thu, 20 Jun 2013 20:31:07 -0400	[thread overview]
Message-ID: <51C39ECB.3040006@redhat.com> (raw)
In-Reply-To: <20130620211454.GA2434-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>

On 06/20/2013 05:14 PM, Jason Gunthorpe wrote:
> On Thu, Jun 20, 2013 at 04:31:14PM -0400, Doug Ledford wrote:
>>> happened for iwarp, rocee, etc.
>>
>> If it happened once, then I would agree with you above.  That it *keeps*
>> happening is the issue.  To me, that's a clear indication that instead
>> of fixing the shortcomings of the current API properly, band-aids just
>> keep getting applied.
> 
> The new transports have new requirements, and the apps have new
> required behaviors - the API simply can't hide all this in every
> case. The changes before had nothing to do with MTU, FWIW.

It demonstrates what I would call a leakage between layer 2 and higher
layer APIs though.

> Nope, people want new apps (using extensions/etc) to run on old verbs
> versions. I don't really like that, mind you, but it has been strongly
> asked for.

At some point people just need to suck it up and deal with a new
version.  Once you reach a certain level of maturity you can maintain
long term back compatibility and forward compatibility.  But that
requires that the API be sufficiently well thought out that each change
is more evolutionary than revolutionary.  The entire IB stack still
likes to do major, revolutionary changes.  It has not reached the level
of maturity where it can truly maintain a long term forward/back
compatibility IMO.  And the layer level leakage I mention earlier just
makes this more problematic.

> Both the app and librdmacm have a DT_NEEDED on libibverbs, and both
> call into libibverbs.
> 
> The issue is not sorting out the install of the core libraries via
> package management tricks, but what happens when an app/middleware
> outside the package management dynamically links to this mess.

If a user chooses not to use packaging, that's their prerogative.
However, they can also collect the pieces when things break.  If a ISV
chooses to do the same, then that ISV is just being flat lazy and
sloppy.  The package management stacks are there for a reason and serve
a valuable purpose.  Ignoring them is akin to just thumbing your nose at
the libibverbs version as well.

> We've already seen this fail in the field with apps that link to the
> v1.0 verbs ABI that call into other libraries that were linked to the
> v1.1 API.

So this exposes an issue, I agree.

> It explodes. The fundamental problem with the v1.0/v1.1 switch is the
> v1.0 functions are returning pointers that cannot be passed into a
> v1.1 function, eg iv_close_device@1.1(ibv_open_device@1.0(..))
> crashes. 

This isn't a problem if library A doesn't call into library B and try to
use the same struct as the app itself when the app calls into library B.

> Your idea to change the MTU causes the same problem with structure
> versioning. If I use a rdmacm/etc API to get a MTU containing
> structure then I still get the new meaning because rdmacm is linked to
> the v1.2 verbs symbols, but my app is linked to the v1.1 symbols and
> can't support it.
> 
> .. and of course rdmacm is just an example, there are other middleware
> libraries (uDAPL, MPI, etc) that may be affected.
> 
> Symbol versioning *doesn't* solve the problem, it just creates a new
> class of subtle failure modes. It appears to work in simple cases so
> people think it is a silver bullet, but it is not. It is very complex,
> the failures cases are screwy and subtle, and verbs tends to hit them
> head on because of how exposed all the internal structures are.

I would argue that this is because the libraries are so disjoint (that
librdmacm needs the deep internal knowledge it needs of libibverbs
indicates that maybe these two shouldn't be separate from each other for
example, or that maybe libibverbs should provide a unified connection
API to the user and internally use both librdmacm and libibcm on the
back end to work IP v. GUID connection setup).  So, I think there is
significant room to improve the layout of the overall RDMA APIs and
doing that would address this particular issue and is probably the right
way to go.

However, aside from that, my current objection to all of this is that
this solution, while meeting the needs of the "we don't want to have to
change anything unless the app wants to run on this new fabric" results
in what I would call a gross hack (some enum, some int, same variable).
 I'm not so much complaining about Jeff's solution, more the requirement
that we come up with such an ugly construct.  We are headed down a
course of putting in gross hacks in order to preserve an outdated
design, one which has much more elegant solutions today than what we are
currently using.  At *some* point, this becomes a miserable,
unmaintainable mess.

So I hear you that people object to breaking the API for a new library
version.  My objection (which I'm sure I'll be overruled on) is that
people are taking the easy way out instead of fixing things up the right
way.

>> So, this isn't broken, it's just that no one is taking the time to
>> properly identify incompatible versions and force compatible versions to
>> be installed before things are allowed to link up.
> 
> You can't enforce things on binary-only proprietary apps being
> installed from outside package management.

Correcting the API resolves this, and you can possibly play games in
header files to catch issues at compile time.  But if people ignore
package management, then they get to keep their own pieces as far as I'm
concerned.

> The verbs extension mechanism can safely deal with this kind of
> change, it effectively adds structure versioning to the ABI, but it is
> not mainlined yet and is also pretty complex.

That would address structures, but I think the API itself could use some
love and care, and that wouldn't be addressed by just the verbs
extension mechanism (and in fact if you rethink some of the exposed API,
it might drastically change how you might want to handle
extensions...who knows).

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

  parent reply	other threads:[~2013-06-21  0:31 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-20 14:21 [PATCH V2] libibverbs: Allow arbitrary int values for MTU Jeff Squyres
     [not found] ` <1371738080-18537-1-git-send-email-jsquyres-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2013-06-20 16:34   ` Doug Ledford
     [not found]     ` <51C32EFC.8060202-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-20 16:42       ` Doug Ledford
2013-06-20 16:53       ` Jason Gunthorpe
     [not found]         ` <20130620165305.GA19800-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-06-20 20:31           ` Doug Ledford
     [not found]             ` <51C36692.7000507-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-20 21:14               ` Jason Gunthorpe
     [not found]                 ` <20130620211454.GA2434-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-06-21  0:31                   ` Doug Ledford [this message]
     [not found]                     ` <51C39ECB.3040006-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-21  1:03                       ` Hefty, Sean
2013-06-21  6:36                       ` Jason Gunthorpe
     [not found]                         ` <20130621063648.GA27963-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-06-21 17:36                           ` Doug Ledford
     [not found]                             ` <51C48F01.5030103-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-21 18:26                               ` Jason Gunthorpe
     [not found]                                 ` <20130621182617.GA17700-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-06-21 20:57                                   ` Doug Ledford
     [not found]                                     ` <51C4BE25.9000501-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-06-21 21:20                                       ` Jason Gunthorpe
     [not found]                                         ` <20130621212016.GA10637-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-06-21 21:56                                           ` Hefty, Sean
2013-06-22 13:13                                           ` Jeff Squyres (jsquyres)
2013-07-02 12:31 Jeff Squyres
     [not found] ` <1372768306-6786-1-git-send-email-jsquyres-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2013-07-04  0:36   ` Jeff Squyres (jsquyres)
2013-07-05 19:11   ` Roland Dreier
     [not found]     ` <CAL1RGDVU9otyMtoit1PJR5JkVy4XvU=4xjL1rN1QB7pq0rVcxA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-07-08 16:26       ` Jeff Squyres (jsquyres)
     [not found]         ` <EF66BBEB19BADC41AC8CCF5F684F07FC4F6F31A6-nsZYYkk5h5QQ2GdVW7+PtKBKnGwkPULj@public.gmane.org>
2013-07-08 17:19           ` Roland Dreier
     [not found]             ` <CAL1RGDU+4CSJyF0TAfAv-YYcjA4FG+XNeg5pGCHPeW5iqhvwpA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-07-08 17:26               ` Jason Gunthorpe
     [not found]                 ` <20130708172621.GA3852-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-07-10 12:14                   ` Jeff Squyres (jsquyres)
     [not found]                     ` <EF66BBEB19BADC41AC8CCF5F684F07FC4F70BF83-nsZYYkk5h5QQ2GdVW7+PtKBKnGwkPULj@public.gmane.org>
2013-07-15 14:20                       ` Jeff Squyres (jsquyres)
     [not found]                         ` <EF66BBEB19BADC41AC8CCF5F684F07FC4F71CB0F-nsZYYkk5h5QQ2GdVW7+PtKBKnGwkPULj@public.gmane.org>
2013-07-30 16:44                           ` Christoph Lameter
     [not found]                             ` <0000014030779fed-e7bdfc9a-6714-4473-b093-4b247ab940b6-000000-p/GC64/jrecnJqMo6gzdpkEOCMrvLtNR@public.gmane.org>
2013-07-30 17:21                               ` Jeff Squyres (jsquyres)
     [not found]                                 ` <EF66BBEB19BADC41AC8CCF5F684F07FC4F7883AD-nsZYYkk5h5QQ2GdVW7+PtKBKnGwkPULj@public.gmane.org>
2013-07-30 18:31                                   ` Christoph Lameter
     [not found]                                     ` <0000014030d9bc3d-2916693b-9669-4017-a724-75b51c6dc3dc-000000-p/GC64/jrecnJqMo6gzdpkEOCMrvLtNR@public.gmane.org>
2013-07-30 18:45                                       ` Atchley, Scott
     [not found]                                         ` <17370FDF-C64B-4D74-A848-79C1438E6283-1Heg1YXhbW8@public.gmane.org>
2013-07-30 18:47                                           ` Doug Ledford
2013-07-16  8:04                       ` Hefty, Sean
     [not found]                         ` <1828884A29C6694DAF28B7E6B8A82373805AAB74-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-07-16 14:47                           ` Jason Gunthorpe
     [not found]                             ` <20130716144747.GA7304-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-07-16 17:11                               ` Jeff Squyres (jsquyres)
     [not found]                                 ` <EF66BBEB19BADC41AC8CCF5F684F07FC4F7211E6-nsZYYkk5h5QQ2GdVW7+PtKBKnGwkPULj@public.gmane.org>
2013-07-17  0:16                                   ` Roland Dreier
     [not found]                                     ` <CAL1RGDWKmecLXsqphwdP9XG=4Y=65Z_ACSdRBhEqVQb6Q4LrUg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-07-17 17:57                                       ` Doug Ledford
     [not found]                                         ` <51E6DB11.9050906-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-08-05 18:48                                           ` Roland Dreier
     [not found]                                             ` <CAL1RGDVuuQU-NZ2o+T0_kuxPMRadGPeqzO1J9iuW=DRuFMMYfQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-08-05 19:02                                               ` Jason Gunthorpe
     [not found]                                                 ` <20130805190238.GA14356-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-08-05 20:06                                                   ` Roland Dreier
     [not found]                                                     ` <CAL1RGDWPHWzAWx7XXxGGCVQQ1xHU6QDVybrttnvoqUPrzqzvWA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-08-05 22:22                                                       ` Jason Gunthorpe
     [not found]                                                         ` <20130805222250.GA4486-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-08-05 22:35                                                           ` Roland Dreier
     [not found]                                                             ` <CAL1RGDW5V_N62LSZa1YRG1JA1fOf+nbQwBG1xQ7yYiuF6z0fMw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-08-05 22:43                                                               ` Jason Gunthorpe
2013-07-17  4:06                                   ` Hefty, Sean
     [not found]                                     ` <1828884A29C6694DAF28B7E6B8A82373805AECC0-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-07-17 18:12                                       ` Jeff Squyres (jsquyres)
     [not found]                                         ` <EF66BBEB19BADC41AC8CCF5F684F07FC4F725B8C-nsZYYkk5h5QQ2GdVW7+PtKBKnGwkPULj@public.gmane.org>
2013-07-17 21:41                                           ` Hefty, Sean
     [not found]                                             ` <1828884A29C6694DAF28B7E6B8A82373805B941D-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-07-17 21:44                                               ` Steve Wise
     [not found]                                                 ` <51E71023.2060006-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
2013-07-18  2:32                                                   ` Jeff Squyres (jsquyres)
     [not found]                                                     ` <EF66BBEB19BADC41AC8CCF5F684F07FC4F727D11-nsZYYkk5h5QQ2GdVW7+PtKBKnGwkPULj@public.gmane.org>
2013-07-18 16:50                                                       ` Jason Gunthorpe
     [not found]                                                         ` <20130718165003.GB9237-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-07-23 13:26                                                           ` Jeff Squyres (jsquyres)
     [not found]                                                             ` <EF66BBEB19BADC41AC8CCF5F684F07FC4F749B82-nsZYYkk5h5QQ2GdVW7+PtKBKnGwkPULj@public.gmane.org>
2013-07-30 12:59                                                               ` Jeff Squyres (jsquyres)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51C39ECB.3040006@redhat.com \
    --to=dledford-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org \
    --cc=jsquyres-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.