]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: driver: Use appropriate job name when setting blockjob speed
authorPeter Krempa <pkrempa@redhat.com>
Fri, 6 Dec 2019 13:06:55 +0000 (14:06 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 9 Dec 2019 06:11:24 +0000 (07:11 +0100)
qemuDomainBlockJobSetSpeed was not converted to get the job name from
the block job data. This means that after enabling blockdev the API call
would fail as we wouldn't use the appropriate name.

https://bugzilla.redhat.com/show_bug.cgi?id=1780497

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
src/qemu/qemu_driver.c

index 572cea0d40bb6f22a1fcfc9130d523321db8431f..738e8832ccbe4450d13b61d8a50bfb1d501b29f3 100644 (file)
@@ -17864,8 +17864,8 @@ qemuDomainBlockJobSetSpeed(virDomainPtr dom,
     virDomainDiskDefPtr disk;
     int ret = -1;
     virDomainObjPtr vm;
-    g_autofree char *device = NULL;
     unsigned long long speed = bandwidth;
+    g_autoptr(qemuBlockJobData) job = NULL;
 
     virCheckFlags(VIR_DOMAIN_BLOCK_JOB_SPEED_BANDWIDTH_BYTES, -1);
 
@@ -17895,12 +17895,15 @@ qemuDomainBlockJobSetSpeed(virDomainPtr dom,
     if (!(disk = qemuDomainDiskByName(vm->def, path)))
         goto endjob;
 
-    if (!(device = qemuAliasDiskDriveFromDisk(disk)))
+    if (!(job = qemuBlockJobDiskGetJob(disk))) {
+        virReportError(VIR_ERR_INVALID_ARG,
+                       _("disk %s does not have an active block job"), disk->dst);
         goto endjob;
+    }
 
     qemuDomainObjEnterMonitor(driver, vm);
     ret = qemuMonitorBlockJobSetSpeed(qemuDomainGetMonitor(vm),
-                                      device,
+                                      job->name,
                                       speed);
     if (qemuDomainObjExitMonitor(driver, vm) < 0)
         ret = -1;