DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] vhost: ABI/API change announcement due to refactor
@ 2016-04-06  6:53 Yuanhan Liu
  2016-04-07  7:12 ` Panu Matilainen
  0 siblings, 1 reply; 4+ messages in thread
From: Yuanhan Liu @ 2016-04-06  6:53 UTC (permalink / raw)
  To: dev; +Cc: huawei.xie, Thomas Monjalon, Yuanhan Liu, Ilya Maximets

We currently exposed way too many fields (or even structures) than
necessary. For example, vhost_virtqueue struct should NOT be exposed
to user at all: application just need to tell the right queue id to
locate a specific queue, and that's all. Instead, the structure should
be defined in an internal header file. With that, we could do any changes
to it we want, without worrying about that we may offense the painful
ABI rules.

Similar changes could be done to virtio_net struct as well, just exposing
very few fields that are necessary and moving all others to an internal
structure.

Huawei then suggested a more radical yet much cleaner one: just exposing
a virtio_net handle to application, just like the way kernel exposes an
fd to user for locating a specific file, and exposing some new functions
to access those old fields, such as flags, virt_qp_nb.

With this change, we're likely to be free from ABI violations forever
(well, except when we have to extend the virtio_net_device_ops struct).
For example, following nice cleanup would not be a blocking one then:

    http://dpdk.org/ml/archives/dev/2016-February/033528.html

Suggested-by: Huawei Xie <huawei.xie@intel.com>
Cc: Ilya Maximets <i.maximets@samsung.com>
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
---
 doc/guides/rel_notes/deprecation.rst | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index ad31355..7d16d86 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -40,3 +40,10 @@ Deprecation Notices
   The existing API will be backward compatible, but there will be new API
   functions added to facilitate the creation of mempools using an external
   handler. The 16.07 release will contain these changes.
+
+* A librte_vhost public structures refactor is planned for DPDK 16.07
+  that requires both ABI and API change.
+  The proposed refactor would expose DPDK vhost dev to applications as
+  a handle, like the way kernel exposes an fd to user for locating a
+  specific file, and to keep all major structures internally, so that
+  we are likely to be free from ABI violations in future.
-- 
1.9.0

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [PATCH] vhost: ABI/API change announcement due to refactor
  2016-04-06  6:53 [dpdk-dev] [PATCH] vhost: ABI/API change announcement due to refactor Yuanhan Liu
@ 2016-04-07  7:12 ` Panu Matilainen
  2016-04-10  9:58   ` Thomas Monjalon
  0 siblings, 1 reply; 4+ messages in thread
From: Panu Matilainen @ 2016-04-07  7:12 UTC (permalink / raw)
  To: Yuanhan Liu, dev; +Cc: huawei.xie, Thomas Monjalon, Ilya Maximets

On 04/06/2016 09:53 AM, Yuanhan Liu wrote:
> We currently exposed way too many fields (or even structures) than
> necessary. For example, vhost_virtqueue struct should NOT be exposed
> to user at all: application just need to tell the right queue id to
> locate a specific queue, and that's all. Instead, the structure should
> be defined in an internal header file. With that, we could do any changes
> to it we want, without worrying about that we may offense the painful
> ABI rules.
>
> Similar changes could be done to virtio_net struct as well, just exposing
> very few fields that are necessary and moving all others to an internal
> structure.
>
> Huawei then suggested a more radical yet much cleaner one: just exposing
> a virtio_net handle to application, just like the way kernel exposes an
> fd to user for locating a specific file, and exposing some new functions
> to access those old fields, such as flags, virt_qp_nb.
>
> With this change, we're likely to be free from ABI violations forever
> (well, except when we have to extend the virtio_net_device_ops struct).
> For example, following nice cleanup would not be a blocking one then:
>
>      http://dpdk.org/ml/archives/dev/2016-February/033528.html
>
> Suggested-by: Huawei Xie <huawei.xie@intel.com>
> Cc: Ilya Maximets <i.maximets@samsung.com>
> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
> ---
>   doc/guides/rel_notes/deprecation.rst | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
> index ad31355..7d16d86 100644
> --- a/doc/guides/rel_notes/deprecation.rst
> +++ b/doc/guides/rel_notes/deprecation.rst
> @@ -40,3 +40,10 @@ Deprecation Notices
>     The existing API will be backward compatible, but there will be new API
>     functions added to facilitate the creation of mempools using an external
>     handler. The 16.07 release will contain these changes.
> +
> +* A librte_vhost public structures refactor is planned for DPDK 16.07
> +  that requires both ABI and API change.
> +  The proposed refactor would expose DPDK vhost dev to applications as
> +  a handle, like the way kernel exposes an fd to user for locating a
> +  specific file, and to keep all major structures internally, so that
> +  we are likely to be free from ABI violations in future.
>

Acked-by: Panu Matilainen <pmatilai@redhat.com>

I applaud the initiative, public structs are by far the worst offender 
when trying to maintain a stable ABI because they're so hard to 
correctly version that hardly anybody besides glibc bothers.

	- Panu -

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [PATCH] vhost: ABI/API change announcement due to refactor
  2016-04-07  7:12 ` Panu Matilainen
@ 2016-04-10  9:58   ` Thomas Monjalon
  2016-04-10 10:02     ` Thomas Monjalon
  0 siblings, 1 reply; 4+ messages in thread
From: Thomas Monjalon @ 2016-04-10  9:58 UTC (permalink / raw)
  To: Yuanhan Liu; +Cc: Panu Matilainen, dev, huawei.xie, Ilya Maximets

2016-04-07 10:12, Panu Matilainen:
> On 04/06/2016 09:53 AM, Yuanhan Liu wrote:
> > +* A librte_vhost public structures refactor is planned for DPDK 16.07
> > +  that requires both ABI and API change.
> > +  The proposed refactor would expose DPDK vhost dev to applications as
> > +  a handle, like the way kernel exposes an fd to user for locating a
> > +  specific file, and to keep all major structures internally, so that
> > +  we are likely to be free from ABI violations in future.
> 
> Acked-by: Panu Matilainen <pmatilai@redhat.com>
> 
> I applaud the initiative, public structs are by far the worst offender 
> when trying to maintain a stable ABI because they're so hard to 
> correctly version that hardly anybody besides glibc bothers.

Yes, nice cleanup to do.

Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [PATCH] vhost: ABI/API change announcement due to refactor
  2016-04-10  9:58   ` Thomas Monjalon
@ 2016-04-10 10:02     ` Thomas Monjalon
  0 siblings, 0 replies; 4+ messages in thread
From: Thomas Monjalon @ 2016-04-10 10:02 UTC (permalink / raw)
  To: Yuanhan Liu; +Cc: Panu Matilainen, dev, huawei.xie, Ilya Maximets

> > > +* A librte_vhost public structures refactor is planned for DPDK 16.07
> > > +  that requires both ABI and API change.
> > > +  The proposed refactor would expose DPDK vhost dev to applications as
> > > +  a handle, like the way kernel exposes an fd to user for locating a
> > > +  specific file, and to keep all major structures internally, so that
> > > +  we are likely to be free from ABI violations in future.
> > 
> > Acked-by: Panu Matilainen <pmatilai@redhat.com>
> > 
> > I applaud the initiative, public structs are by far the worst offender 
> > when trying to maintain a stable ABI because they're so hard to 
> > correctly version that hardly anybody besides glibc bothers.
> 
> Yes, nice cleanup to do.
> 
> Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>

Applied, thanks

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-04-10 10:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-06  6:53 [dpdk-dev] [PATCH] vhost: ABI/API change announcement due to refactor Yuanhan Liu
2016-04-07  7:12 ` Panu Matilainen
2016-04-10  9:58   ` Thomas Monjalon
2016-04-10 10:02     ` Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).