]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: driver: blockdevize qemuDomainGetBlockJobInfo
authorPeter Krempa <pkrempa@redhat.com>
Fri, 31 May 2019 16:51:05 +0000 (18:51 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 25 Jul 2019 11:21:32 +0000 (13:21 +0200)
Use the stored job name rather than passing in the disk alias when
referring to the job which allows the same code to work also when
-blockdev will be used.

Note that this API does not require the change to use 'query-job' as it
will ever only work with blockjobs bound to disks due to the arguments
which allow only referring to a disk. For the disk-less jobs we'll need
to add a separate API later.

The change to qemuMonitorGetBlockJobInfo is required as the API was
stripping the 'drive-' prefix when returning the data which is not
desired any more.

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

index 065e0a1bd8836caf424ea200eeac2720879bdf13..49dd6f433e6ac38f3501562ea783f00c4fd53351 100644 (file)
@@ -17289,6 +17289,7 @@ qemuDomainGetBlockJobInfo(virDomainPtr dom,
     virDomainDiskDefPtr disk;
     int ret = -1;
     qemuMonitorBlockJobInfo rawInfo;
+    VIR_AUTOUNREF(qemuBlockJobDataPtr) job = NULL;
 
     virCheckFlags(VIR_DOMAIN_BLOCK_JOB_INFO_BANDWIDTH_BYTES, -1);
 
@@ -17311,9 +17312,13 @@ qemuDomainGetBlockJobInfo(virDomainPtr dom,
         goto endjob;
     }
 
+    if (!(job = qemuBlockJobDiskGetJob(disk))) {
+        ret = 0;
+        goto endjob;
+    }
+
     qemuDomainObjEnterMonitor(driver, vm);
-    ret = qemuMonitorGetBlockJobInfo(qemuDomainGetMonitor(vm),
-                                     disk->info.alias, &rawInfo);
+    ret = qemuMonitorGetBlockJobInfo(qemuDomainGetMonitor(vm), job->name, &rawInfo);
     if (qemuDomainObjExitMonitor(driver, vm) < 0)
         ret = -1;
     if (ret <= 0)
index 5ad66d1dcab31a81f330caf6140f03fb3e7e27ff..a880da3ab69f3d90599f869062d6bf6c8a3472e1 100644 (file)
@@ -3463,7 +3463,7 @@ qemuMonitorGetBlockJobInfo(qemuMonitorPtr mon,
 
     VIR_DEBUG("alias=%s, info=%p", alias, info);
 
-    if (!(all = qemuMonitorGetAllBlockJobInfo(mon, false)))
+    if (!(all = qemuMonitorGetAllBlockJobInfo(mon, true)))
         return -1;
 
     if ((data = virHashLookup(all, alias))) {