From: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Jiri Pirko <jiri-rHqAuBHg3fBzbRFIqnYvSA@public.gmane.org>
Cc: Leon Romanovsky <leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Yishai Hadas <yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: Re: [PATCH rdma-next 2/6] IB/uverbs: Enable QP creation which is associated to underlay QP
Date: Sun, 04 Jun 2017 10:25:30 -0400 [thread overview]
Message-ID: <1496586330.7171.136.camel@redhat.com> (raw)
In-Reply-To: <20170604135122.GC1910-6KJVSR23iU488b5SBfVpbw@public.gmane.org>
On Sun, 2017-06-04 at 15:51 +0200, Jiri Pirko wrote:
> Sun, Jun 04, 2017 at 03:43:14PM CEST, dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org wrote:
> >
> > > This breaks uapi...
> >
> > We don't really care about this particular uapi breakage.
> >
> > First, this is the ib_uverbs_*ex*_create_qp struct, so this is
> > already
> > part of the "extensible uAPI" we created back when we included XRC
> > support into the mainline kernel. A fundamental part of that uAPI
> > was
> > that we were allowed to extend structs (but not reorganize them) so
> > that we could add new stuff to the end as we added features, but
> > old
> > apps would continue to work. As a result, it was understood that
> > the
> > uapi structs would continue to grow.
> >
> > Given that fact, if we put a reserved1 element into a struct to pad
> > it
> > out to a given size (which we did roughly 1 year ago with
> > commit c70285f880e88 (IB/uverbs: Extend create QP to get RWQ
> > indirection table) which made this change to the ex_create_qp
> > struct:
> >
> > __u32 create_flags;
> > + __u32 rwq_ind_tbl_handle;
> > + __u32 reserved1;
> > };
> >
> > that doesn't mean a user of the uapi should directly reference this
> > element, it means we added 32 bits out of a 64 bit line and we'll
> > add
> > the other 32 bits later, so don't reference that pad element by
> > name,
> > use the preferred means of clearing the struct prior to use:
> > memset(sizeof(struct)) or calloc or equivalent. Given that only
> > user
> > space verbs providers that have been updated to support the RWQ
> > indirection table would possibly ever even have seen this API
> > element,
> > and given that those should be fairly rare at this point (I doubt
> > that
> > any exist besides possibly libibverbs or rdma-core, I'm not sure if
> > this support went into libibverbs before we merged it into rdma-
> > core,
> > but if it didn't, then only rdma-core would have been updated to
> > know
> > about these last two struct elements), I'm not going to have
> > Mellanox
> > put a bunch of ugly cruft in here for probably non-existent, but
> > very
> > recently updated if it even exists, consumers that don't follow
> > best
> > practice when accessing/clearing elements of an extensible struct.
>
> I understand all the reasons why this breakage should not cause any
> harm, don't get me wrong Doug. It's just, it is a breakage, no matter
> how pink you paint it :) Either the uapi is guaranteed to be backward
> compatible, or not. Nothing in between. Just saying...
We can make it explicit then that the uapi requires the use of
memset/calloc on structs to zero them, and people are not allowed to
access any reserved elements. Under that understanding, this is *not*
a uapi break and it is an acceptable extension. This was more or less
understood already, just adding a comment to the uapi header is all we
need.
--
Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
GPG KeyID: B826A3330E572FDD
Key fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD
--
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
next prev parent reply other threads:[~2017-06-04 14:25 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-30 7:15 [PATCH rdma-next 0/6] Enable flow steering on IPoIB UD QP Leon Romanovsky
[not found] ` <20170530071602.8139-1-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-05-30 7:15 ` [PATCH rdma-next 1/6] IB/core: Enable QP creation which is associated to underlay QP Leon Romanovsky
[not found] ` <20170530071602.8139-2-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-05-30 16:04 ` Jason Gunthorpe
[not found] ` <20170530160447.GA21513-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-06-01 14:42 ` Yishai Hadas
[not found] ` <1d799662-bc2b-ed12-882c-42d12d1ed8a1-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2017-06-05 15:36 ` Jason Gunthorpe
[not found] ` <CAFgAxU9c1SwehkCY3o0RZPO_CTHGJb2A1omjVvJvyabO0V57iQ@mail.gmail.com>
[not found] ` <CAFgAxU9c1SwehkCY3o0RZPO_CTHGJb2A1omjVvJvyabO0V57iQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-06-06 16:33 ` Jason Gunthorpe
[not found] ` <20170606163320.GC8671-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-06-07 12:23 ` Alex Rosenbaum
[not found] ` <CAFgAxU-=i2=yNnjE2kYHV0Re6Vrd=LyTB55q=p_1fc+zuotwvA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-06-07 17:44 ` Jason Gunthorpe
2017-05-30 7:15 ` [PATCH rdma-next 2/6] IB/uverbs: " Leon Romanovsky
[not found] ` <20170530071602.8139-3-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-05-30 7:33 ` Jiri Pirko
2017-05-30 7:58 ` Leon Romanovsky
[not found] ` <20170530075845.GA5406-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-05-30 8:00 ` Leon Romanovsky
2017-05-30 8:15 ` Jiri Pirko
2017-05-30 17:22 ` Leon Romanovsky
[not found] ` <20170530172259.GD5406-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-05-30 18:03 ` Jiri Pirko
2017-05-31 4:20 ` Leon Romanovsky
[not found] ` <20170531042031.GG5406-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-05-31 5:37 ` Jiri Pirko
2017-05-31 8:39 ` Leon Romanovsky
[not found] ` <20170531083955.GJ5406-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-05-31 20:05 ` Hefty, Sean
2017-06-04 13:43 ` Doug Ledford
[not found] ` <1496583794.7171.134.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-06-04 13:51 ` Jiri Pirko
[not found] ` <20170604135122.GC1910-6KJVSR23iU488b5SBfVpbw@public.gmane.org>
2017-06-04 14:25 ` Doug Ledford [this message]
2017-06-05 15:26 ` Jason Gunthorpe
2017-05-30 7:15 ` [PATCH rdma-next 3/6] IB/mlx5: Add support for underlay QP managing Leon Romanovsky
2017-05-30 7:16 ` [PATCH rdma-next 4/6] IB/mlx5: Add multicast flow steering support for underlay QP Leon Romanovsky
2017-05-30 7:16 ` [PATCH rdma-next 5/6] net/mlx5: Report enhanced capabilities for IPoIB Leon Romanovsky
2017-05-30 7:16 ` [PATCH rdma-next 6/6] IB/mlx5: Report RX checksum " Leon Romanovsky
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=1496586330.7171.136.camel@redhat.com \
--to=dledford-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=jiri-rHqAuBHg3fBzbRFIqnYvSA@public.gmane.org \
--cc=leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=yishaih-VPRAkNaXOzVWk0Htik3J/w@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.