]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_block: introduce qemuBlockFinalize
authorPavel Hrdina <phrdina@redhat.com>
Wed, 13 Jul 2022 08:16:48 +0000 (10:16 +0200)
committerPavel Hrdina <phrdina@redhat.com>
Mon, 9 Jan 2023 12:32:46 +0000 (13:32 +0100)
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

index da3a1e8557eaf843b8bcc86c7b36ac7fc8e48d37..70811aa8618e69db840039c63a37e75dcfab9178 100644 (file)
@@ -3525,3 +3525,35 @@ qemuBlockPivot(virDomainObj *vm,
 
     return ret;
 }
+
+
+/**
+ * qemuBlockFinalize:
+ * @vm: domain object
+ * @job: qemu block job data object
+ * @asyncJob: qemu async job type
+ *
+ * When qemu job is started with autofinalize disabled it will wait in pending
+ * state for block job finalize to be called manually in order to finish the
+ * job. This is useful when we are running jobs on multiple disks to make
+ * a synchronization point before we finish.
+ *
+ * Return -1 on error, 0 on success.
+ */
+int
+qemuBlockFinalize(virDomainObj *vm,
+                  qemuBlockJobData *job,
+                  virDomainAsyncJob asyncJob)
+{
+    int ret;
+    qemuDomainObjPrivate *priv = vm->privateData;
+
+    if (qemuDomainObjEnterMonitorAsync(vm, asyncJob) < 0)
+        return -1;
+
+    ret = qemuMonitorJobFinalize(priv->mon, job->name);
+
+    qemuDomainObjExitMonitor(vm);
+
+    return ret;
+}
index 7b6aec2a7d4f804943c433c4c374c84430cd6eff..c169432d9c1471ccdaef1d234e01ac1283513c69 100644 (file)
@@ -293,3 +293,8 @@ qemuBlockPivot(virDomainObj *vm,
                qemuBlockJobData *job,
                virDomainAsyncJob asyncJob,
                virDomainDiskDef *disk);
+
+int
+qemuBlockFinalize(virDomainObj *vm,
+                  qemuBlockJobData *job,
+                  virDomainAsyncJob asyncJob);