This patch propagates struct vhost_user_socket's vhost_transport_ops into the newly created vhost device.
This patch completes the initial refactoring of socket.c, with the AF_UNIX-specific code now in trans_af_unix.c and the librte_vhost API entrypoints in socket.c. Now it is time to turn towards vhost_user.c and its mixture of vhost-user protocol processing and socket I/O. The socket I/O will be moved into trans_af_unix.c so that other transports can be added that don't use file descriptors. Signed-off-by: Nikos Dragazis <ndraga...@arrikto.com> Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> --- lib/librte_vhost/trans_af_unix.c | 2 +- lib/librte_vhost/vhost.c | 4 ++-- lib/librte_vhost/vhost.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/librte_vhost/trans_af_unix.c b/lib/librte_vhost/trans_af_unix.c index e8a4ef2..865d862 100644 --- a/lib/librte_vhost/trans_af_unix.c +++ b/lib/librte_vhost/trans_af_unix.c @@ -167,7 +167,7 @@ vhost_user_add_connection(int fd, struct vhost_user_socket *vsocket) return; } - vid = vhost_new_device(); + vid = vhost_new_device(vsocket->trans_ops); if (vid == -1) { goto err; } diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c index a36bc01..a72edf3 100644 --- a/lib/librte_vhost/vhost.c +++ b/lib/librte_vhost/vhost.c @@ -480,7 +480,7 @@ reset_device(struct virtio_net *dev) * there is a new virtio device being attached). */ int -vhost_new_device(void) +vhost_new_device(const struct vhost_transport_ops *trans_ops) { struct virtio_net *dev; int i; @@ -507,7 +507,7 @@ vhost_new_device(void) dev->vid = i; dev->flags = VIRTIO_DEV_BUILTIN_VIRTIO_NET; dev->slave_req_fd = -1; - dev->trans_ops = &af_unix_trans_ops; + dev->trans_ops = trans_ops; dev->vdpa_dev_id = -1; dev->postcopy_ufd = -1; rte_spinlock_init(&dev->slave_req_lock); diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h index 64b7f77..0831b27 100644 --- a/lib/librte_vhost/vhost.h +++ b/lib/librte_vhost/vhost.h @@ -568,7 +568,7 @@ get_device(int vid) return dev; } -int vhost_new_device(void); +int vhost_new_device(const struct vhost_transport_ops *trans_ops); void cleanup_device(struct virtio_net *dev, int destroy); void reset_device(struct virtio_net *dev); void vhost_destroy_device(int); -- 2.7.4