[PATCH] qemu: Properly handle setting of <iotune> for empty cdrom
Daniel Henrique Barboza
danielhb413 at gmail.com
Tue Jan 5 12:10:58 UTC 2021
On 1/5/21 8:22 AM, Peter Krempa wrote:
> When starting a VM with an empty cdrom which has <iotune> configured the
> startup fails as qemu is not happy about setting tuning for an empty
> drive:
>
> error: internal error: unable to execute 'block_set_io_throttle', unexpected error: 'Device has no medium'
>
> Resolve this by skipping the setting of throttling for empty drives and
> updating the throttling when new medium is inserted into the drive.
>
> Resolves: https://gitlab.com/libvirt/libvirt/-/issues/111
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> src/qemu/qemu_hotplug.c | 10 ++++++++++
> src/qemu/qemu_process.c | 4 ++++
> 2 files changed, 14 insertions(+)
>
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index 9b93f256e8..57635cd419 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -558,6 +558,16 @@ qemuDomainChangeMediaBlockdev(virQEMUDriverPtr driver,
> nodename);
> }
>
> + /* set throttling for the new image */
> + if (rc == 0 &&
> + !virStorageSourceIsEmpty(newsrc) &&
> + qemuDiskConfigBlkdeviotuneEnabled(disk)) {
> + rc = qemuMonitorSetBlockIoThrottle(priv->mon, NULL,
> + diskPriv->qomName,
> + &disk->blkdeviotune,
> + true, true, true);
> + }
> +
> if (rc == 0)
> rc = qemuMonitorBlockdevTrayClose(priv->mon, diskPriv->qomName);
>
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index e7421b415f..414e9327d2 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -6838,6 +6838,10 @@ qemuProcessSetupDiskThrottlingBlockdev(virQEMUDriverPtr driver,
> if (qemuDiskBusIsSD(disk->bus))
> continue;
>
> + /* Setting throttling for empty drives fails */
> + if (virStorageSourceIsEmpty(disk->src))
> + continue;
> +
> if (!qemuDiskConfigBlkdeviotuneEnabled(disk))
> continue;
>
More information about the libvir-list
mailing list