]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: blockjob: Emit VIR_DOMAIN_EVENT_ID_BLOCK_JOB only for local disks
authorPeter Krempa <pkrempa@redhat.com>
Thu, 17 Jan 2019 12:52:09 +0000 (13:52 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 17 Jan 2019 16:12:50 +0000 (17:12 +0100)
The event reports the disk path to identify the disk which makes sense
only for local disks. Additionally network backed disks like NBD don't
need to have a path so the callback would return NULL.

Report VIR_DOMAIN_EVENT_ID_BLOCK_JOB only for non-empty local disks.

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

index 4b016f1ee9ac0b6a4a17f2ce3dc63855b540b457..828140138dda95ddc3667e3f93a2451e9811a529 100644 (file)
@@ -46,7 +46,7 @@ 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.
+ * for a block job. The former event is emitted only for local disks.
  */
 static void
 qemuBlockJobEmitEvents(virQEMUDriverPtr driver,
@@ -58,9 +58,12 @@ qemuBlockJobEmitEvents(virQEMUDriverPtr driver,
     virObjectEventPtr event = NULL;
     virObjectEventPtr event2 = NULL;
 
-    event = virDomainEventBlockJobNewFromObj(vm, virDomainDiskGetSource(disk),
-                                             type, status);
-    virObjectEventStateQueue(driver->domainEventState, event);
+    if (virStorageSourceIsLocalStorage(disk->src) &&
+        !virStorageSourceIsEmpty(disk->src)) {
+        event = virDomainEventBlockJobNewFromObj(vm, virDomainDiskGetSource(disk),
+                                                 type, status);
+        virObjectEventStateQueue(driver->domainEventState, event);
+    }
 
     event2 = virDomainEventBlockJob2NewFromObj(vm, disk->dst, type, status);
     virObjectEventStateQueue(driver->domainEventState, event2);