if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
+ if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
+ goto cleanup;
+
if (virDomainLiveConfigHelperMethod(caps, driver->xmlopt, vm, &flags,
&vmdef) < 0)
- goto cleanup;
+ goto endjob;
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
/* Make a copy for updated domain. */
- vmdef = virDomainObjCopyPersistentDef(vm, caps, driver->xmlopt);
- if (!vmdef)
- goto cleanup;
+ if (!(vmdef = virDomainObjCopyPersistentDef(vm, caps, driver->xmlopt)))
+ goto endjob;
}
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPU)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("cgroup CPU controller is not mounted"));
- goto cleanup;
+ goto endjob;
}
}
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
unsigned long long val;
if (virCgroupSetCpuShares(priv->cgroup, value_ul) < 0)
- goto cleanup;
+ goto endjob;
if (virCgroupGetCpuShares(priv->cgroup, &val) < 0)
- goto cleanup;
+ goto endjob;
vm->def->cputune.shares = val;
vm->def->cputune.sharesSpecified = true;
&eventMaxNparams,
VIR_DOMAIN_TUNABLE_CPU_CPU_SHARES,
val) < 0)
- goto cleanup;
+ goto endjob;
}
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
if (flags & VIR_DOMAIN_AFFECT_LIVE && value_ul) {
if ((rc = qemuSetVcpusBWLive(vm, priv->cgroup, value_ul, 0)))
- goto cleanup;
+ goto endjob;
vm->def->cputune.period = value_ul;
&eventMaxNparams,
VIR_DOMAIN_TUNABLE_CPU_VCPU_PERIOD,
value_ul) < 0)
- goto cleanup;
+ goto endjob;
}
if (flags & VIR_DOMAIN_AFFECT_CONFIG)
if (flags & VIR_DOMAIN_AFFECT_LIVE && value_l) {
if ((rc = qemuSetVcpusBWLive(vm, priv->cgroup, 0, value_l)))
- goto cleanup;
+ goto endjob;
vm->def->cputune.quota = value_l;
&eventMaxNparams,
VIR_DOMAIN_TUNABLE_CPU_VCPU_QUOTA,
value_l) < 0)
- goto cleanup;
+ goto endjob;
}
if (flags & VIR_DOMAIN_AFFECT_CONFIG)
if (flags & VIR_DOMAIN_AFFECT_LIVE && value_ul) {
if ((rc = qemuSetEmulatorBandwidthLive(vm, priv->cgroup,
value_ul, 0)))
- goto cleanup;
+ goto endjob;
vm->def->cputune.emulator_period = value_ul;
&eventMaxNparams,
VIR_DOMAIN_TUNABLE_CPU_EMULATOR_PERIOD,
value_ul) < 0)
- goto cleanup;
+ goto endjob;
}
if (flags & VIR_DOMAIN_AFFECT_CONFIG)
if (flags & VIR_DOMAIN_AFFECT_LIVE && value_l) {
if ((rc = qemuSetEmulatorBandwidthLive(vm, priv->cgroup,
0, value_l)))
- goto cleanup;
+ goto endjob;
vm->def->cputune.emulator_quota = value_l;
&eventMaxNparams,
VIR_DOMAIN_TUNABLE_CPU_EMULATOR_QUOTA,
value_l) < 0)
- goto cleanup;
+ goto endjob;
}
if (flags & VIR_DOMAIN_AFFECT_CONFIG)
}
if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm) < 0)
- goto cleanup;
+ goto endjob;
if (eventNparams) {
event = virDomainEventTunableNewFromDom(dom, eventParams, eventNparams);
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
rc = virDomainSaveConfig(cfg->configDir, vmdef);
if (rc < 0)
- goto cleanup;
+ goto endjob;
virDomainObjAssignDef(vm, vmdef, false, NULL);
vmdef = NULL;
ret = 0;
+ endjob:
+ qemuDomainObjEndJob(driver, vm);
+
cleanup:
virDomainDefFree(vmdef);
qemuDomObjEndAPI(&vm);