]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: blockjob: Extract emitting of libvirt events
authorPeter Krempa <pkrempa@redhat.com>
Wed, 12 Sep 2018 15:13:16 +0000 (17:13 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 17 Jan 2019 16:12:50 +0000 (17:12 +0100)
Put the emitting of VIR_DOMAIN_EVENT_ID_BLOCK_JOB and
VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2 into a separate function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_blockjob.c

index 0f52996ade1970578eeffae4d13709d73a7bd4a8..4b016f1ee9ac0b6a4a17f2ce3dc63855b540b457 100644 (file)
 VIR_LOG_INIT("qemu.qemu_blockjob");
 
 
+/**
+ * qemuBlockJobEmitEvents:
+ *
+ * Emits the VIR_DOMAIN_EVENT_ID_BLOCK_JOB and VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2
+ * for a block job.
+ */
+static void
+qemuBlockJobEmitEvents(virQEMUDriverPtr driver,
+                       virDomainObjPtr vm,
+                       virDomainDiskDefPtr disk,
+                       virDomainBlockJobType type,
+                       virConnectDomainEventBlockJobStatus status)
+{
+    virObjectEventPtr event = NULL;
+    virObjectEventPtr event2 = NULL;
+
+    event = virDomainEventBlockJobNewFromObj(vm, virDomainDiskGetSource(disk),
+                                             type, status);
+    virObjectEventStateQueue(driver->domainEventState, event);
+
+    event2 = virDomainEventBlockJob2NewFromObj(vm, disk->dst, type, status);
+    virObjectEventStateQueue(driver->domainEventState, event2);
+}
+
+
 /**
  * qemuBlockJobUpdate:
  * @vm: domain
@@ -101,9 +126,6 @@ qemuBlockJobEventProcess(virQEMUDriverPtr driver,
                          int type,
                          int status)
 {
-    virObjectEventPtr event = NULL;
-    virObjectEventPtr event2 = NULL;
-    const char *path;
     virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
     virDomainDiskDefPtr persistDisk = NULL;
     qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
@@ -114,14 +136,11 @@ qemuBlockJobEventProcess(virQEMUDriverPtr driver,
               type,
               status);
 
-    /* Have to generate two variants of the event for old vs. new
-     * client callbacks */
     if (type == VIR_DOMAIN_BLOCK_JOB_TYPE_COMMIT &&
         disk->mirrorJob == VIR_DOMAIN_BLOCK_JOB_TYPE_ACTIVE_COMMIT)
         type = disk->mirrorJob;
-    path = virDomainDiskGetSource(disk);
-    event = virDomainEventBlockJobNewFromObj(vm, path, type, status);
-    event2 = virDomainEventBlockJob2NewFromObj(vm, disk->dst, type, status);
+
+    qemuBlockJobEmitEvents(driver, vm, disk, type, status);
 
     /* If we completed a block pull or commit, then update the XML
      * to match.  */
@@ -210,9 +229,6 @@ qemuBlockJobEventProcess(virQEMUDriverPtr driver,
                      "after block job", vm->def->name);
     }
 
-    virObjectEventStateQueue(driver->domainEventState, event);
-    virObjectEventStateQueue(driver->domainEventState, event2);
-
     virObjectUnref(cfg);
 }