Future IOThread setting patches would copy the code anyway, so create
and generalize a delete cgroup and pindef for the vcpu into its own API.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/qemu/qemu_driver.c | 43 +++++++++++++++++++++++++++++--------------
1 file changed, 29 insertions(+), 14 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 1114ce9..cec2758 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -4670,6 +4670,30 @@ qemuDomainHotplugAddCgroup(virCgroupPtr cgroup,
}
static int
+qemuDomainHotplugDelCgroupPin(virCgroupPtr cgroup,
+ virCgroupThreadName nameval,
+ int index,
+ virDomainPinDefPtr **pindef_list,
+ size_t *npin)
+{
+ virCgroupPtr new_cgroup = NULL;
+
+ if (cgroup) {
+ if (virCgroupNewThread(cgroup, nameval, index, false, &new_cgroup) < 0)
+ return -1;
+
+ /* Remove the offlined cgroup */
+ virCgroupRemove(new_cgroup);
+ virCgroupFree(&new_cgroup);
+ }
+
+ /* Free pindef setting */
+ virDomainPinDel(pindef_list, npin, index);
+
+ return 0;
+}
+
+static int
qemuDomainHotplugVcpus(virQEMUDriverPtr driver,
virDomainObjPtr vm,
unsigned int nvcpus)
@@ -4822,20 +4846,11 @@ qemuDomainHotplugVcpus(virQEMUDriverPtr driver,
}
} else {
for (i = oldvcpus - 1; i >= nvcpus; i--) {
- if (priv->cgroup) {
- if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_VCPU_NAME, i,
- false, &cgroup_vcpu) < 0)
- goto cleanup;
-
- /* Remove cgroup for the offlined vcpu */
- virCgroupRemove(cgroup_vcpu);
- virCgroupFree(&cgroup_vcpu);
- }
-
- /* Free vcpupin setting */
- virDomainPinDel(&vm->def->cputune.vcpupin,
- &vm->def->cputune.nvcpupin,
- i);
+ if (qemuDomainHotplugDelCgroupPin(priv->cgroup,
+ VIR_CGROUP_VCPU_NAME, i,
+ &vm->def->cputune.vcpupin,
+ &vm->def->cputune.nvcpupin) <
0)
+ goto cleanup;
}
}
--
2.1.0