diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index c02de0a2cde035843529fff1ec86f0163ee1aeb7..2be6ce9284b1632bb018c999bdafacfd86bedbb0 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4576,21 +4576,23 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, priv = vm->privateData; - if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_temp) < 0) + if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!(all_nodes = virNumaGetHostNodeset())) - goto cleanup; + if (flags & VIR_DOMAIN_AFFECT_LIVE && !(flags & VIR_DOMAIN_VCPU_GUEST)) { + if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_temp) < 0) + goto cleanup; - if (!(all_nodes_str = virBitmapFormat(all_nodes))) - goto cleanup; + if (!(all_nodes = virNumaGetHostNodeset())) + goto cleanup; - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) - goto cleanup; + if (!(all_nodes_str = virBitmapFormat(all_nodes))) + goto cleanup; - if (virCgroupGetCpusetMems(cgroup_temp, &mem_mask) < 0 || - virCgroupSetCpusetMems(cgroup_temp, all_nodes_str) < 0) - goto endjob; + if (virCgroupGetCpusetMems(cgroup_temp, &mem_mask) < 0 || + virCgroupSetCpusetMems(cgroup_temp, all_nodes_str) < 0) + goto endjob; + } maximum = (flags & VIR_DOMAIN_VCPU_MAXIMUM) != 0; flags &= ~VIR_DOMAIN_VCPU_MAXIMUM;