]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_block: allow configuring autofinalize for block commit
authorPavel Hrdina <phrdina@redhat.com>
Mon, 2 Jan 2023 13:46:51 +0000 (14:46 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Mon, 9 Jan 2023 12:32:45 +0000 (13:32 +0100)
External snapshots will use this to synchronize qemu block jobs.

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

index 99409a969b055d59aaed18a90207693fe22b87b6..da3a1e8557eaf843b8bcc86c7b36ac7fc8e48d37 100644 (file)
@@ -3207,11 +3207,17 @@ qemuBlockExportAddNBD(virDomainObj *vm,
  * @top_parent: disk source that has @topSource as backing disk
  * @bandwidth: bandwidth limit, flags determine the unit
  * @asyncJob: qemu async job type
+ * @autofinalize: virTristateBool controlling qemu block job finalization
  * @flags: bitwise-OR of virDomainBlockCommitFlags
  *
  * Starts a block commit job for @disk. If @asyncJob is different then
  * VIR_ASYNC_JOB_NONE the job will be started as synchronous.
  *
+ * The @autofinalize argument controls if the qemu block job will be automatically
+ * finalized. This is used when deleting external snapshots where we need to
+ * disable automatic finalization for some use-case. The default value passed
+ * to this argument should be VIR_TRISTATE_BOOL_YES.
+ *
  * Returns -1 on error, 0 on success.
  */
 int
@@ -3222,6 +3228,7 @@ qemuBlockCommit(virDomainObj *vm,
                 virStorageSource *top_parent,
                 unsigned long bandwidth,
                 virDomainAsyncJob asyncJob,
+                virTristateBool autofinalize,
                 unsigned int flags)
 {
     qemuDomainObjPrivate *priv = vm->privateData;
@@ -3365,7 +3372,7 @@ qemuBlockCommit(virDomainObj *vm,
                                  topSource->nodeformat,
                                  baseSource->nodeformat,
                                  backingPath, bandwidth,
-                                 VIR_TRISTATE_BOOL_YES);
+                                 autofinalize);
 
     qemuDomainObjExitMonitor(vm);
 
index 3f2082f102d1cb290246321548ac2fec7414639b..7b6aec2a7d4f804943c433c4c374c84430cd6eff 100644 (file)
@@ -285,6 +285,7 @@ qemuBlockCommit(virDomainObj *vm,
                 virStorageSource *top_parent,
                 unsigned long bandwidth,
                 virDomainAsyncJob asyncJob,
+                virTristateBool autofinalize,
                 unsigned int flags);
 
 int
index 970cc29eafa8df8a78dee8881e668673ebcb8b4e..c6bca8a24e88657a5e82196cd91ce200d40c229e 100644 (file)
@@ -15026,7 +15026,8 @@ qemuDomainBlockCommit(virDomainPtr dom,
         goto endjob;
 
     ret = qemuBlockCommit(vm, disk, baseSource, topSource, top_parent,
-                          bandwidth, VIR_ASYNC_JOB_NONE, flags);
+                          bandwidth, VIR_ASYNC_JOB_NONE, VIR_TRISTATE_BOOL_YES,
+                          flags);
 
  endjob:
     virDomainObjEndJob(vm);