]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: capabilities: Introduce QEMU_CAPS_BLOCKDEV_BACKUP
authorPeter Krempa <pkrempa@redhat.com>
Thu, 18 Mar 2021 14:02:00 +0000 (15:02 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 19 Mar 2021 15:41:39 +0000 (16:41 +0100)
Upcoming commit will enable full backup support (incremental part
requires blockdev-reopen, which won't happen in qemu for at least
another release).

Add a capability that the 'blockdev-backup' job is supported by qemu
capped, but limited to when qemu supports QEMU_CAPS_BLOCKDEV.

We can also use it in the expression to enable
QEMU_CAPS_INCREMENTAL_BACKUP since it's a pre-requisite too.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
17 files changed:
src/qemu/qemu_capabilities.c
src/qemu/qemu_capabilities.h
tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml
tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml
tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml
tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml
tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml
tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml
tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml
tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml
tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml
tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml
tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml
tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml
tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml
tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml
tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml

index 447cf77875a1d8c54f19c19e30f63cd0865868d3..08bd0e13ced063556aa0c862e07498dc575577fa 100644 (file)
@@ -622,6 +622,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
               /* 395 */
               "vnc-power-control",
               "audiodev",
+              "blockdev-backup",
     );
 
 
@@ -1557,6 +1558,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = {
     { "netdev_add/arg-type/+vhost-vdpa", QEMU_CAPS_NETDEV_VHOST_VDPA },
     { "migrate-set-parameters/arg-type/block-bitmap-mapping/bitmaps/transform",
       QEMU_CAPS_MIGRATION_PARAM_BLOCK_BITMAP_MAPPING },
+    { "blockdev-backup", QEMU_CAPS_BLOCKDEV_BACKUP },
 };
 
 typedef struct _virQEMUCapsObjectTypeProps virQEMUCapsObjectTypeProps;
@@ -5168,7 +5170,10 @@ virQEMUCapsInitQMPVersionCaps(virQEMUCapsPtr qemuCaps)
 void
 virQEMUCapsInitProcessCapsInterlock(virQEMUCapsPtr qemuCaps)
 {
-    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV) &&
+    if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV))
+        virQEMUCapsClear(qemuCaps, QEMU_CAPS_BLOCKDEV_BACKUP);
+
+    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV_BACKUP) &&
         virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV_REOPEN) &&
         virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BLOCK_BITMAP_MAPPING))
         virQEMUCapsSet(qemuCaps, QEMU_CAPS_INCREMENTAL_BACKUP);
index ee321df66c958da68cb6d0f348e5186ffe7ec9f8..792cb91ce1e5a5ae7771e50eb22aedab099625ce 100644 (file)
@@ -602,6 +602,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
     /* 395 */
     QEMU_CAPS_VNC_POWER_CONTROL, /* -vnc power-control option */
     QEMU_CAPS_AUDIODEV, /* -audiodev instead of QEMU_AUDIO_DRV */
+    QEMU_CAPS_BLOCKDEV_BACKUP, /* qemu supports the blockdev-backup job */
 
     QEMU_CAPS_LAST /* this must always be the last item */
 } virQEMUCapsFlags;
index b53584cfb85a6288a1976d29ddb4755990b59920..371e6192e22f7dce88c73425b5c6eb5a37faabb3 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>4001050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>61700242</microcodeVersion>
index 363c4372c1218c3ac5b0182b557ae6e6222d9e26..1f6f2e583348f2642cd525920c726ae799c41f61 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>4002000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>39100242</microcodeVersion>
index 4443974912bc3e597803393cb4c4d719b060c47b..8f9972eb14313096b1b51df9b5cc84623931ad5e 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>4002000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100242</microcodeVersion>
index 9a2b1f2061a07224f2a7cfc73ab91f5dcd53d381..51d83b9f47cfe092c01dcb7d8831dfedcac377c1 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>61700241</microcodeVersion>
index ab12f7e72c058916ca2be30f35c7a8eb945b1093..4e6aec6fdad773bf03428494f46a4fd99b9cfea0 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>42900241</microcodeVersion>
index a5e0853a4228715d85ed8a4a19ebb4b8314c875e..850dda922b5a9051f39b0e8e36a518229b9d843e 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>0</microcodeVersion>
index 7c84402f631aa1d9dff436d3b8dfc082f1ac5e37..7dd3e9ae898c88bc1bcdc803259ace2c798e2924 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100241</microcodeVersion>
index 35ed8312c111c510fb72d9a8d1e678b7eae6e6ad..5b4b9d4b5bef6af61f0be94d93df1a057a21846a 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5001000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>0</microcodeVersion>
index dd91777c9b8c928506282cbfa52a2bb94ef0fc76..71ae857c8ff6b0c0678c4bc7137a3702a314ee0f 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5001000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100242</microcodeVersion>
index 2247606310c00c9e2145638b665ecf577bae7b07..4417f03f132c609e3fed4200004ec135ceda8283 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5002000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>61700243</microcodeVersion>
index 419d05380ceadce5d967923ead4c5937c98f21f4..f5d072b6c645a47d35f0fa903572a3d7d62a1fd1 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5002000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>42900243</microcodeVersion>
index 8a6ea5450b97885b3f763494df75473db357db6e..c12477a55c7aac899c1e7e230b8bf5bbbc54e922 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5002000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>0</microcodeVersion>
index 2fd360f690f06e6050cff97cd523aee6bafdb2cb..53ed7fa31277cfad52f57499555f0ca87576ac7c 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5002000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>39100243</microcodeVersion>
index 17cec44cd8bbb11ffd6b670878a8d6eac345422c..1f6b2de2a1d2efb8451eabc7582faea2bd54b944 100644 (file)
   <flag name='memory-backend-file.x-use-canonical-path-for-ramblock-id'/>
   <flag name='vnc-opts'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5002000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100243</microcodeVersion>
index 6d546268e4780bc3e4b71bb7006408c348ccfc8b..f054aa9d69cdd827af316bbe85091ad22b3b6569 100644 (file)
   <flag name='migration-param.block-bitmap-mapping'/>
   <flag name='vnc-power-control'/>
   <flag name='audiodev'/>
+  <flag name='blockdev-backup'/>
   <version>5002050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100242</microcodeVersion>