[libvirt] [PATCH v2 4/5] qemu: qemuDomainHotplugVcpus - separate out the del cgroup and pin

John Ferlan jferlan at redhat.com
Tue Apr 7 13:23:16 UTC 2015


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 at 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




More information about the libvir-list mailing list