[PATCH v2 1/2] qemu: Check empty drives in block I/O throttle API

Fabian Leditzky via Devel posted 2 patches 7 months, 2 weeks ago
[PATCH v2 1/2] qemu: Check empty drives in block I/O throttle API
Posted by Fabian Leditzky via Devel 7 months, 2 weeks ago
Provide a proper user facing error when attempting to query block
I/O throttling settings for an empty drive. Without this patch, a less
meaningful internal error produced by qemuMonitorJSONBlockIoThrottleInfo
would be propagated to the user.

Signed-off-by: Fabian Leditzky <fabian@ldsoft.dev>
---
 src/qemu/qemu_driver.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index d2eddbd9ae..1dd30ed444 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -15368,6 +15368,14 @@ qemuDomainGetBlockIoTune(virDomainPtr dom,
         if (!qemuDomainDiskBlockIoTuneIsSupported(disk))
             goto endjob;
 
+        /* qemu won't return block IO throttle settings for an empty cd-rom drive */
+        if (virStorageSourceIsEmpty(disk->src)) {
+            virReportError(VIR_ERR_INVALID_ARG,
+                           _("disk '%1$s' does not currently have a source assigned"),
+                           path);
+            goto endjob;
+        }
+
         qemuDomainObjEnterMonitor(vm);
         rc = qemuMonitorGetBlockIoThrottle(priv->mon, QEMU_DOMAIN_DISK_PRIVATE(disk)->qomName, &reply);
         qemuDomainObjExitMonitor(vm);
-- 
2.48.1
Re: [PATCH v2 1/2] qemu: Check empty drives in block I/O throttle API
Posted by Peter Krempa 7 months, 1 week ago
On Tue, Jan 21, 2025 at 14:33:25 +0000, Fabian Leditzky via Devel wrote:
> Provide a proper user facing error when attempting to query block
> I/O throttling settings for an empty drive. Without this patch, a less
> meaningful internal error produced by qemuMonitorJSONBlockIoThrottleInfo
> would be propagated to the user.
> 
> Signed-off-by: Fabian Leditzky <fabian@ldsoft.dev>
> ---
>  src/qemu/qemu_driver.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index d2eddbd9ae..1dd30ed444 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -15368,6 +15368,14 @@ qemuDomainGetBlockIoTune(virDomainPtr dom,
>          if (!qemuDomainDiskBlockIoTuneIsSupported(disk))
>              goto endjob;
>  
> +        /* qemu won't return block IO throttle settings for an empty cd-rom drive */
> +        if (virStorageSourceIsEmpty(disk->src)) {
> +            virReportError(VIR_ERR_INVALID_ARG,
> +                           _("disk '%1$s' does not currently have a source assigned"),
> +                           path);
> +            goto endjob;
> +        }
> +
>          qemuDomainObjEnterMonitor(vm);
>          rc = qemuMonitorGetBlockIoThrottle(priv->mon, QEMU_DOMAIN_DISK_PRIVATE(disk)->qomName, &reply);
>          qemuDomainObjExitMonitor(vm);

Reviewed-by: Peter Krempa <pkrempa@redhat.com>