[PATCH 2/7] qemu: capabilities: Introduce QEMU_CAPS_BLOCKDEV_MIRROR_TARGET_IS_ZERO

Peter Krempa via Devel posted 7 patches 5 days, 6 hours ago
[PATCH 2/7] qemu: capabilities: Introduce QEMU_CAPS_BLOCKDEV_MIRROR_TARGET_IS_ZERO
Posted by Peter Krempa via Devel 5 days, 6 hours ago
From: Peter Krempa <pkrempa@redhat.com>

The 'target-is-zero' option of 'blockdev-mirror' allows telling qemu to
skip zeroing the mirror target if the user certifies that it's empty. It
was introduced in qemu-10.1.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
 src/qemu/qemu_capabilities.c                               | 4 ++++
 src/qemu/qemu_capabilities.h                               | 3 +++
 tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml           | 1 +
 tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml | 1 +
 tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml          | 1 +
 tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml         | 1 +
 tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml     | 1 +
 tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml          | 1 +
 tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml         | 1 +
 tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml          | 1 +
 10 files changed, 15 insertions(+)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 65d8aac4fb..2911982678 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -764,6 +764,9 @@ VIR_ENUM_IMPL(virQEMUCaps,
               "uefi-vars", /* QEMU_CAPS_DEVICE_UEFI_VARS */
               "query-block-flat", /* QEMU_CAPS_QUERY_BLOCK_FLAT */
               "amd-iommu.xtsup", /* QEMU_CAPS_AMD_IOMMU_XTSUP */
+
+              /* 495 */
+              "blockdev-mirror.target-is-zero", /* QEMU_CAPS_BLOCKDEV_MIRROR_TARGET_IS_ZERO */
     );


@@ -1648,6 +1651,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = {
     { "blockdev-add/arg-type/+nbd/tls-hostname", QEMU_CAPS_BLOCKDEV_NBD_TLS_HOSTNAME },
     { "blockdev-add/arg-type/+qcow2/discard-no-unref", QEMU_CAPS_QCOW2_DISCARD_NO_UNREF },
     { "blockdev-add/arg-type/+virtio-blk-vhost-vdpa/$fdset", QEMU_CAPS_DEVICE_VIRTIO_BLK_VHOST_VDPA},
+    { "blockdev-mirror/arg-type/target-is-zero", QEMU_CAPS_BLOCKDEV_MIRROR_TARGET_IS_ZERO },
     { "calc-dirty-rate/arg-type/mode", QEMU_CAPS_DIRTYRATE_MODE },
     { "chardev-add/arg-type/backend/+socket/data/reconnect-ms", QEMU_CAPS_CHARDEV_RECONNECT_MILISECONDS },
     { "chardev-add/arg-type/backend/+qemu-vdagent", QEMU_CAPS_CHARDEV_QEMU_VDAGENT },
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index b93d1532ff..c26e06104d 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -739,6 +739,9 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
     QEMU_CAPS_QUERY_BLOCK_FLAT, /* 'query-block' command supports 'flat' */
     QEMU_CAPS_AMD_IOMMU_XTSUP, /* amd-iommu.xtsup */

+    /* 495 */
+    QEMU_CAPS_BLOCKDEV_MIRROR_TARGET_IS_ZERO, /* 'blockdev-mirror' supports 'target-is-zero' */
+
     QEMU_CAPS_LAST /* this must always be the last item */
 } virQEMUCapsFlags;

diff --git a/tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml b/tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml
index f33b366db8..584a1b304c 100644
--- a/tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml
+++ b/tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml
@@ -143,6 +143,7 @@
   <flag name='virtio-iommu.aw-bits'/>
   <flag name='iommufd'/>
   <flag name='uefi-vars'/>
+  <flag name='blockdev-mirror.target-is-zero'/>
   <version>10001000</version>
   <microcodeVersion>39100286</microcodeVersion>
   <package>v10.1.0</package>
diff --git a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml b/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml
index 05de206987..6dd00c360f 100644
--- a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml
+++ b/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml
@@ -196,6 +196,7 @@
   <flag name='iommufd'/>
   <flag name='uefi-vars'/>
   <flag name='amd-iommu.xtsup'/>
+  <flag name='blockdev-mirror.target-is-zero'/>
   <version>10001000</version>
   <microcodeVersion>43100286</microcodeVersion>
   <package>v10.1.0</package>
diff --git a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml
index 5a2bc0d66f..e7a0818697 100644
--- a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml
@@ -218,6 +218,7 @@
   <flag name='iommufd'/>
   <flag name='uefi-vars'/>
   <flag name='amd-iommu.xtsup'/>
+  <flag name='blockdev-mirror.target-is-zero'/>
   <version>10001000</version>
   <microcodeVersion>43100286</microcodeVersion>
   <package>v10.1.0</package>
diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml
index ac8f50b984..df3e2a8275 100644
--- a/tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml
+++ b/tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml
@@ -185,6 +185,7 @@
   <flag name='virtio-iommu.aw-bits'/>
   <flag name='iommufd'/>
   <flag name='uefi-vars'/>
+  <flag name='blockdev-mirror.target-is-zero'/>
   <version>10002000</version>
   <microcodeVersion>61700287</microcodeVersion>
   <package>v10.2.0</package>
diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml b/tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml
index 05a28f6ddc..54018639ad 100644
--- a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml
+++ b/tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml
@@ -206,6 +206,7 @@
   <flag name='iommufd'/>
   <flag name='uefi-vars'/>
   <flag name='amd-iommu.xtsup'/>
+  <flag name='blockdev-mirror.target-is-zero'/>
   <version>10002000</version>
   <microcodeVersion>43100287</microcodeVersion>
   <package>v10.2.0</package>
diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml
index 29ca620345..d5cc279e13 100644
--- a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml
@@ -219,6 +219,7 @@
   <flag name='iommufd'/>
   <flag name='uefi-vars'/>
   <flag name='amd-iommu.xtsup'/>
+  <flag name='blockdev-mirror.target-is-zero'/>
   <version>10002000</version>
   <microcodeVersion>43100287</microcodeVersion>
   <package>v10.2.0</package>
diff --git a/tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml b/tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml
index bca13980ce..28cd421f12 100644
--- a/tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml
+++ b/tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml
@@ -187,6 +187,7 @@
   <flag name='iommufd'/>
   <flag name='uefi-vars'/>
   <flag name='query-block-flat'/>
+  <flag name='blockdev-mirror.target-is-zero'/>
   <version>10002050</version>
   <microcodeVersion>61700286</microcodeVersion>
   <package>v10.2.0-2062-g084a6c6e73</package>
diff --git a/tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml b/tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml
index 2e20a6f3b2..d8c39368d2 100644
--- a/tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml
@@ -221,6 +221,7 @@
   <flag name='uefi-vars'/>
   <flag name='query-block-flat'/>
   <flag name='amd-iommu.xtsup'/>
+  <flag name='blockdev-mirror.target-is-zero'/>
   <version>10002050</version>
   <microcodeVersion>43100286</microcodeVersion>
   <package>v10.2.0-2062-g084a6c6e73</package>
-- 
2.53.0