qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 10/18] vhost-vdpa: open device fd in net_init_vhost_vdpa()


From: Stefano Garzarella
Subject: Re: [PATCH 10/18] vhost-vdpa: open device fd in net_init_vhost_vdpa()
Date: Wed, 23 Jun 2021 17:07:14 +0200

On Mon, Jun 21, 2021 at 12:16:42PM +0800, Jason Wang wrote:
This path switches to open device fd in net_init_vhost_vpda(). This is
used to prepare for the multiqueue support.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
net/vhost-vdpa.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>


diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
index 572aed4ca2..e63a54a938 100644
--- a/net/vhost-vdpa.c
+++ b/net/vhost-vdpa.c
@@ -157,24 +157,19 @@ static NetClientInfo net_vhost_vdpa_info = {
};

static int net_vhost_vdpa_init(NetClientState *peer, const char *device,
-                               const char *name, const char *vhostdev)
+                               const char *name, int vdpa_device_fd)
{
    NetClientState *nc = NULL;
    VhostVDPAState *s;
-    int vdpa_device_fd = -1;
    int ret = 0;
    assert(name);
    nc = qemu_new_net_client(&net_vhost_vdpa_info, peer, device, name);
    snprintf(nc->info_str, sizeof(nc->info_str), TYPE_VHOST_VDPA);
    s = DO_UPCAST(VhostVDPAState, nc, nc);
-    vdpa_device_fd = qemu_open_old(vhostdev, O_RDWR);
-    if (vdpa_device_fd == -1) {
-        return -errno;
-    }
+
    s->vhost_vdpa.device_fd = vdpa_device_fd;
    ret = vhost_vdpa_add(nc, (void *)&s->vhost_vdpa);
    if (ret) {
-        qemu_close(vdpa_device_fd);
        qemu_del_net_client(nc);
    }
    return ret;
@@ -202,6 +197,7 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char 
*name,
                        NetClientState *peer, Error **errp)
{
    const NetdevVhostVDPAOptions *opts;
+    int vdpa_device_fd, ret;

    assert(netdev->type == NET_CLIENT_DRIVER_VHOST_VDPA);
    opts = &netdev->u.vhost_vdpa;
@@ -210,5 +206,16 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char 
*name,
                          (char *)name, errp)) {
        return -1;
    }
-    return net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name, opts->vhostdev);
+
+    vdpa_device_fd = qemu_open_old(opts->vhostdev, O_RDWR);
+    if (vdpa_device_fd == -1) {
+        return -errno;
+    }
+
+    ret = net_vhost_vdpa_init(peer, TYPE_VHOST_VDPA, name, vdpa_device_fd);
+    if (ret) {
+        qemu_close(vdpa_device_fd);
+    }
+
+    return ret;
}
--
2.25.1






reply via email to

[Prev in Thread] Current Thread [Next in Thread]