[PATCH 29/36] qemu: block: Add support for passing FDs of disk images

Pavel Hrdina phrdina at redhat.com
Fri Jan 6 13:33:51 UTC 2023


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

Reviewed-by: Pavel Hrdina <phrdina at redhat.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20230106/4bf99d88/attachment.sig>


More information about the libvir-list mailing list