On Fri, Sep 03, 2021 at 05:10:22PM +0800, Jason Wang wrote: > This path switches to open device fd in net_init_vhost_vpda(). This is
patch? > used to prepare for the multiqueue support. > > Reviewed-by: Stefano Garzarella <sgarz...@redhat.com> > Signed-off-by: Jason Wang <jasow...@redhat.com> > --- > net/vhost-vdpa.c | 23 +++++++++++++++-------- > 1 file changed, 15 insertions(+), 8 deletions(-) > > diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c > index 912686457c..73d29a74ef 100644 > --- a/net/vhost-vdpa.c > +++ b/net/vhost-vdpa.c > @@ -156,24 +156,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; > @@ -201,6 +196,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; > @@ -209,5 +205,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