When starting a domain, qemuProcessLaunch() iterates over all VIR_PERF_EVENT_* values and (possibly) enables them. While there is nothing wrong with the code, the for loop where its done makes it harder to jump onto next block of code. Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- Is this trivial enough to be pushed as such? src/qemu/qemu_process.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 6b1644880a..dd60fb0ddf 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6700,6 +6700,25 @@ qemuProcessEnableDomainNamespaces(virQEMUDriverPtr driver, } +static int +qemuProcessEnablePerf(virDomainObjPtr vm) +{ + qemuDomainObjPrivatePtr priv = vm->privateData; + size_t i; + + if (!(priv->perf = virPerfNew())) + return -1; + + for (i = 0; i < VIR_PERF_EVENT_LAST; i++) { + if (vm->def->perf.events[i] == VIR_TRISTATE_BOOL_YES && + virPerfEventEnable(priv->perf, i, vm->pid) < 0) + return -1; + } + + return 0; +} + + /** * qemuProcessLaunch: * @@ -6733,7 +6752,6 @@ qemuProcessLaunch(virConnectPtr conn, g_autoptr(virQEMUDriverConfig) cfg = NULL; size_t nnicindexes = 0; g_autofree int *nicindexes = NULL; - size_t i; VIR_DEBUG("conn=%p driver=%p vm=%p name=%s if=%d asyncJob=%d " "incoming.launchURI=%s incoming.deferredURI=%s " @@ -6885,15 +6903,10 @@ qemuProcessLaunch(virConnectPtr conn, if (qemuSetupCgroup(vm, nnicindexes, nicindexes) < 0) goto cleanup; - if (!(priv->perf = virPerfNew())) + VIR_DEBUG("Setting up domain perf (if required)"); + if (qemuProcessEnablePerf(vm) < 0) goto cleanup; - for (i = 0; i < VIR_PERF_EVENT_LAST; i++) { - if (vm->def->perf.events[i] == VIR_TRISTATE_BOOL_YES && - virPerfEventEnable(priv->perf, i, vm->pid) < 0) - goto cleanup; - } - /* This must be done after cgroup placement to avoid resetting CPU * affinity */ if (qemuProcessInitCpuAffinity(vm) < 0) -- 2.26.2