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);
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;