if (virDomainSetPerfEventsEnsureACL(dom->conn, vm->def) < 0)
goto cleanup;
- if (virDomainObjGetDefs(vm, flags, &def, &persistentDef) < 0)
+ if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
+ if (virDomainObjGetDefs(vm, flags, &def, &persistentDef) < 0)
+ goto endjob;
+
if (def) {
for (i = 0; i < nparams; i++) {
virTypedParameterPtr param = ¶ms[i];
type = virPerfEventTypeFromString(param->field);
if (!enabled && virPerfEventDisable(priv->perf, type))
- goto cleanup;
+ goto endjob;
if (enabled && virPerfEventEnable(priv->perf, type, vm->pid))
- goto cleanup;
+ goto endjob;
def->perf->events[type] = enabled ?
VIR_TRISTATE_BOOL_YES : VIR_TRISTATE_BOOL_NO;
}
if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver->caps) < 0)
- goto cleanup;
+ goto endjob;
}
if (persistentDef) {
}
if (virDomainSaveConfig(cfg->configDir, driver->caps, persistentDef) < 0)
- goto cleanup;
+ goto endjob;
}
ret = 0;
+ endjob:
+ qemuDomainObjEndJob(driver, vm);
+
cleanup:
virDomainObjEndAPI(&vm);
virObjectUnref(cfg);
int *nparams,
unsigned int flags)
{
+ virQEMUDriverPtr driver = dom->conn->privateData;
virDomainObjPtr vm = NULL;
qemuDomainObjPrivatePtr priv;
virDomainDefPtr def;
if (virDomainGetPerfEventsEnsureACL(dom->conn, vm->def) < 0)
goto cleanup;
- if (!(def = virDomainObjGetOneDef(vm, flags)))
+ if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0)
goto cleanup;
+ if (!(def = virDomainObjGetOneDef(vm, flags)))
+ goto endjob;
+
priv = vm->privateData;
for (i = 0; i < VIR_PERF_EVENT_LAST; i++) {
if (virTypedParamsAddBoolean(&par, &npar, &maxpar,
virPerfEventTypeToString(i),
perf_enabled) < 0)
- goto cleanup;
+ goto endjob;
}
*params = par;
npar = 0;
ret = 0;
+ endjob:
+ qemuDomainObjEndJob(driver, vm);
+
cleanup:
virDomainObjEndAPI(&vm);
virTypedParamsFree(par, npar);