Stefano Garzarella <sgarz...@redhat.com> writes: > The virtio-blk-vhost-vdpa driver in libblkio 1.3.0 supports the fd > passing through the new 'fd' property. > > Since now we are using qemu_open() on '@path' if the virtio-blk driver > supports the fd passing, let's announce it. > In this way, the management layer can pass the file descriptor of an > already opened vhost-vdpa character device. This is useful especially > when the device can only be accessed with certain privileges. > > Add the '@fdset' feature only when the virtio-blk-vhost-vdpa driver > in libblkio supports it. > > Suggested-by: Markus Armbruster <arm...@redhat.com> > Signed-off-by: Stefano Garzarella <sgarz...@redhat.com> > --- > > Notes: > v4: > - added this patch to allow libvirt to discover we support fdset [Markus] > > meson.build | 4 ++++ > qapi/block-core.json | 8 +++++++- > 2 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/meson.build b/meson.build > index 78890f0155..8ea911f7b4 100644 > --- a/meson.build > +++ b/meson.build > @@ -2108,6 +2108,10 @@ config_host_data.set('CONFIG_LZO', lzo.found()) > config_host_data.set('CONFIG_MPATH', mpathpersist.found()) > config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api) > config_host_data.set('CONFIG_BLKIO', blkio.found()) > +if blkio.found() > + config_host_data.set('CONFIG_BLKIO_VHOST_VDPA_FD', > + blkio.version().version_compare('>=1.3.0')) > +endif > config_host_data.set('CONFIG_CURL', curl.found()) > config_host_data.set('CONFIG_CURSES', curses.found()) > config_host_data.set('CONFIG_GBM', gbm.found()) > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 98d9116dae..1538d84ef4 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -3955,10 +3955,16 @@ > # > # @path: path to the vhost-vdpa character device. > # > +# Features: > +# @fdset: Member @path supports the special "/dev/fdset/N" path (since 8.1)
Slightly long line, break it like this: # @fdset: Member @path supports the special "/dev/fdset/N" path # since 8.1) > +# > # Since: 7.2 > ## > { 'struct': 'BlockdevOptionsVirtioBlkVhostVdpa', > - 'data': { 'path': 'str' }, > + 'data': { 'path': { 'type': 'str', > + 'features': [ { 'name' :'fdset', > + 'if': 'CONFIG_BLKIO_VHOST_VDPA_FD' } ] > + } }, > 'if': 'CONFIG_BLKIO' } > > ## Tacking the feature to the member works. For what it's worth, the existing features serving similar purposes are all tacked to the command or type. Do libvirt developers have a preference?