[PATCH 29/36] qemu: block: Add support for passing FDs of disk images
Peter Krempa
pkrempa at redhat.com
Fri Jan 6 14:16:23 UTC 2023
On Fri, Jan 06, 2023 at 14:33:51 +0100, Pavel Hrdina wrote:
> On Thu, Jan 05, 2023 at 05:30:18PM +0100, Peter Krempa wrote:
> > Prepare the internal data for passing FDs instead of having qemu open
> > the file internally.
> >
> > Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> > ---
> > src/qemu/qemu_block.c | 31 ++++++++++++++++++++++++++++---
> > src/qemu/qemu_command.c | 22 ++++++++++++++++++++++
> > 2 files changed, 50 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
> > index 8a6f601b29..a672ad6f54 100644
> > --- a/src/qemu/qemu_block.c
> > +++ b/src/qemu/qemu_block.c
> > @@ -673,22 +673,47 @@ qemuBlockStorageSourceGetSshProps(virStorageSource *src)
> >
> > static virJSONValue *
> > qemuBlockStorageSourceGetFileProps(virStorageSource *src,
> > - bool onlytarget)
> > + bool onlytarget,
> > + virTristateBool *autoReadOnly,
> > + virTristateBool *readOnly)
> > {
> > + const char *path = src->path;
> > const char *iomode = NULL;
> > const char *prManagerAlias = NULL;
> > virJSONValue *ret = NULL;
> >
> > if (!onlytarget) {
> > + qemuDomainStorageSourcePrivate *srcpriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src);
> > +
> > if (src->pr)
> > prManagerAlias = src->pr->mgralias;
> >
> > if (src->iomode != VIR_DOMAIN_DISK_IO_DEFAULT)
> > iomode = virDomainDiskIoTypeToString(src->iomode);
> > +
> > + if (srcpriv && srcpriv->fdpass) {
> > + path = qemuFDPassGetPath(srcpriv->fdpass);
> > +
> > + /* when passing a FD to qemu via the /dev/fdset mechanism qemu
> > + * fetches the appropriate FD from the fdset by checking that it has
> > + * the correct accessmode. Now with 'auto-read-only' in effect qemu
> > + * wants to use a read-only FD first. If the user didn't pass multiple
> > + * FDs the feature will not work regardless, so we'll disable it. */
>
> What happens if users passes multiple FDs but none of them are
> read-only? Otherwise looks good so if this is not an issue
qemu will complain that it can't find the appropriate one. Given that
this is for very specific use cases I didn't want to overdo it with
validation.
More information about the libvir-list
mailing list