]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: driver: Don't allow certain operations with FD-passed disks
authorPeter Krempa <pkrempa@redhat.com>
Thu, 5 Jan 2023 13:53:52 +0000 (14:53 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 9 Jan 2023 13:59:43 +0000 (14:59 +0100)
Probing stats and block copy to a FD passed image is not yet supported.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
src/qemu/qemu_driver.c

index 0a98551f8a3331019c10b9ed95b6a3d578d9eb95..3b30b6df386d269f41e2e64d290b1f4680df66f3 100644 (file)
@@ -10499,6 +10499,13 @@ qemuDomainBlockPeek(virDomainPtr dom,
         goto cleanup;
     }
 
+    if (virStorageSourceIsFD(disk->src)) {
+        virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+                       _("peeking is not supported for FD passed images"));
+        goto cleanup;
+
+    }
+
     if (qemuDomainStorageFileInit(driver, vm, disk->src, NULL) < 0)
         goto cleanup;
 
@@ -10858,6 +10865,12 @@ qemuDomainGetBlockInfo(virDomainPtr dom,
         goto endjob;
     }
 
+    if (virStorageSourceIsFD(disk->src)) {
+        virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+                       _("block info is not supported for FD passed disk image"));
+        goto endjob;
+    }
+
     /* for inactive domains we have to peek into the files */
     if (!virDomainObjIsActive(vm)) {
         if ((qemuStorageLimitsRefresh(driver, cfg, vm, disk->src, false)) < 0)
@@ -14569,6 +14582,12 @@ qemuDomainBlockCopyCommon(virDomainObj *vm,
     if (!qemuDomainDiskBlockJobIsSupported(disk))
         goto endjob;
 
+    if (virStorageSourceIsFD(mirror)) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                       _("copy to a FD passed disk source is not yet supported"));
+        goto endjob;
+    }
+
     if (disk->device == VIR_DOMAIN_DISK_DEVICE_LUN &&
         virDomainDiskDefSourceLUNValidate(mirror) < 0)
         goto endjob;
@@ -17679,6 +17698,9 @@ qemuDomainGetStatsOneBlockFallback(virQEMUDriver *driver,
     if (virStorageSourceIsEmpty(src))
         return 0;
 
+    if (virStorageSourceIsFD(src))
+        return 0;
+
     if (qemuStorageLimitsRefresh(driver, cfg, dom, src, true) <= 0) {
         virResetLastError();
         return 0;