On Thu, Jul 29, 2010 at 01:07:36PM -0700, Ralph Campbell wrote:

> > @@ -640,6 +640,9 @@ struct ibv_context_ops {
> >                                         size_t length,
> >                                         int access);
> >     int                     (*dereg_mr)(struct ibv_mr *mr);
> > +        struct ibv_mr *         (*reg_io_mr)(struct ibv_pd *pd, void 
> > *addr, size_t length,
> > +                                        int access);
> > +        int                     (*dereg_io_mr)(struct ibv_mr *mr);
> >     struct ibv_mw *         (*alloc_mw)(struct ibv_pd *pd, enum ibv_mw_type 
> > type);
> >     int                     (*bind_mw)(struct ibv_qp *qp, struct ibv_mw *mw,
> >                                        struct ibv_mw_bind *mw_bind);
> 
> Doesn't adding these in the middle of the struct break the
> libibverbs to libxxxverbs.so binary interface?
> Shouldn't they be added at the end of the struct?
> I'm not sure how the versioning works between libibverbs and
> device plugins. Don't we need to protect against libibverbs
> being upgraded but the libxxxverbs.so being older?

Adding them at all, anywhere, breaks the ABI, and needs a soname bump
of libibverbs. Last time this was done a versioned symbol approach was
used to try and keep handling a 1.0 ibv_context structure, but that
only works some times and breaks in corner cases :(

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to