[dpdk-dev] [PATCH] vhost: ABI/API change announcement due to refactor

Panu Matilainen pmatilai at redhat.com
Thu Apr 7 09:12:00 CEST 2016


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 at intel.com>
> Cc: Ilya Maximets <i.maximets at samsung.com>
> Signed-off-by: Yuanhan Liu <yuanhan.liu at 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 at 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 -


More information about the dev mailing list