[libvirt] [PATCH v2 2/5] cgroup: Use virCgroupNewThread

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


Replace the virCgroupNew{Vcpu|Emulator|IOThread} calls with the common
virCgroupNewThread API

Signed-off-by: John Ferlan <jferlan at redhat.com>
---
 src/libvirt_private.syms |   3 -
 src/qemu/qemu_cgroup.c   |  22 ++++---
 src/qemu/qemu_driver.c   |  41 +++++++-----
 src/util/vircgroup.c     | 160 +----------------------------------------------
 src/util/vircgroup.h     |  17 -----
 5 files changed, 42 insertions(+), 201 deletions(-)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 0800cb6..12614cb 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1180,14 +1180,11 @@ virCgroupMoveTask;
 virCgroupNewDetect;
 virCgroupNewDetectMachine;
 virCgroupNewDomainPartition;
-virCgroupNewEmulator;
 virCgroupNewIgnoreError;
-virCgroupNewIOThread;
 virCgroupNewMachine;
 virCgroupNewPartition;
 virCgroupNewSelf;
 virCgroupNewThread;
-virCgroupNewVcpu;
 virCgroupPathOfController;
 virCgroupRemove;
 virCgroupRemoveRecursively;
diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
index 50546a1..f287d24 100644
--- a/src/qemu/qemu_cgroup.c
+++ b/src/qemu/qemu_cgroup.c
@@ -629,7 +629,8 @@ qemuSetupCpusetMems(virDomainObjPtr vm)
         goto cleanup;
 
     if (mem_mask)
-        if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_temp) < 0 ||
+        if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_EMULATOR_NAME, 0,
+                               false, &cgroup_temp) < 0 ||
             virCgroupSetCpusetMems(cgroup_temp, mem_mask) < 0)
             goto cleanup;
 
@@ -790,7 +791,8 @@ qemuRestoreCgroupState(virDomainObjPtr vm)
         goto error;
 
     for (i = 0; i < priv->nvcpupids; i++) {
-        if (virCgroupNewVcpu(priv->cgroup, i, false, &cgroup_temp) < 0 ||
+        if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_VCPU_NAME, i,
+                               false, &cgroup_temp) < 0 ||
             virCgroupSetCpusetMemoryMigrate(cgroup_temp, true) < 0 ||
             virCgroupGetCpusetMems(cgroup_temp, &nodeset) < 0 ||
             virCgroupSetCpusetMems(cgroup_temp, nodeset) < 0)
@@ -800,7 +802,8 @@ qemuRestoreCgroupState(virDomainObjPtr vm)
     }
 
     for (i = 0; i < priv->niothreadpids; i++) {
-        if (virCgroupNewIOThread(priv->cgroup, i + 1, false, &cgroup_temp) < 0 ||
+        if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_IOTHREAD_NAME, i + 1,
+                               false, &cgroup_temp) < 0 ||
             virCgroupSetCpusetMemoryMigrate(cgroup_temp, true) < 0 ||
             virCgroupGetCpusetMems(cgroup_temp, &nodeset) < 0 ||
             virCgroupSetCpusetMems(cgroup_temp, nodeset) < 0)
@@ -809,7 +812,8 @@ qemuRestoreCgroupState(virDomainObjPtr vm)
         virCgroupFree(&cgroup_temp);
     }
 
-    if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_temp) < 0 ||
+    if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_EMULATOR_NAME, 0,
+                           false, &cgroup_temp) < 0 ||
         virCgroupSetCpusetMemoryMigrate(cgroup_temp, true) < 0 ||
         virCgroupGetCpusetMems(cgroup_temp, &nodeset) < 0 ||
         virCgroupSetCpusetMems(cgroup_temp, nodeset) < 0)
@@ -1010,7 +1014,8 @@ qemuSetupCgroupForVcpu(virDomainObjPtr vm)
         goto cleanup;
 
     for (i = 0; i < priv->nvcpupids; i++) {
-        if (virCgroupNewVcpu(priv->cgroup, i, true, &cgroup_vcpu) < 0)
+        if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_VCPU_NAME, i,
+                               true, &cgroup_vcpu) < 0)
             goto cleanup;
 
         /* move the thread for vcpu to sub dir */
@@ -1096,7 +1101,8 @@ qemuSetupCgroupForEmulator(virDomainObjPtr vm)
     if (priv->cgroup == NULL)
         return 0; /* Not supported, so claim success */
 
-    if (virCgroupNewEmulator(priv->cgroup, true, &cgroup_emulator) < 0)
+    if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_EMULATOR_NAME, 0,
+                           true, &cgroup_emulator) < 0)
         goto cleanup;
 
     if (virCgroupMoveTask(priv->cgroup, cgroup_emulator) < 0)
@@ -1183,8 +1189,8 @@ qemuSetupCgroupForIOThreads(virDomainObjPtr vm)
         /* IOThreads are numbered 1..n, although the array is 0..n-1,
          * so we will account for that here
          */
-        if (virCgroupNewIOThread(priv->cgroup, i + 1, true,
-                                 &cgroup_iothread) < 0)
+        if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_IOTHREAD_NAME, i + 1,
+                               true, &cgroup_iothread) < 0)
             goto cleanup;
 
         /* move the thread for iothread to sub dir */
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 6132674..be54b7e 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -4728,7 +4728,8 @@ static int qemuDomainHotplugVcpus(virQEMUDriverPtr driver,
             if (priv->cgroup) {
                 int rv = -1;
                 /* Create cgroup for the onlined vcpu */
-                if (virCgroupNewVcpu(priv->cgroup, i, true, &cgroup_vcpu) < 0)
+                if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_VCPU_NAME, i,
+                                       true, &cgroup_vcpu) < 0)
                     goto cleanup;
 
                 if (mem_mask &&
@@ -4801,7 +4802,8 @@ static int qemuDomainHotplugVcpus(virQEMUDriverPtr driver,
     } else {
         for (i = oldvcpus - 1; i >= nvcpus; i--) {
             if (priv->cgroup) {
-                if (virCgroupNewVcpu(priv->cgroup, i, false, &cgroup_vcpu) < 0)
+                if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_VCPU_NAME, i,
+                                       false, &cgroup_vcpu) < 0)
                     goto cleanup;
 
                 /* Remove cgroup for the offlined vcpu */
@@ -4894,7 +4896,8 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus,
 
     if (flags & VIR_DOMAIN_AFFECT_LIVE && !(flags & VIR_DOMAIN_VCPU_GUEST) &&
         virNumaIsAvailable()) {
-        if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_temp) < 0)
+        if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_EMULATOR_NAME, 0,
+                               false, &cgroup_temp) < 0)
             goto endjob;
 
         if (!(all_nodes = virNumaGetHostNodeset()))
@@ -5136,7 +5139,8 @@ qemuDomainPinVcpuFlags(virDomainPtr dom,
 
         /* Configure the corresponding cpuset cgroup before set affinity. */
         if (virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPUSET)) {
-            if (virCgroupNewVcpu(priv->cgroup, vcpu, false, &cgroup_vcpu) < 0)
+            if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_VCPU_NAME, vcpu,
+                                   false, &cgroup_vcpu) < 0)
                 goto endjob;
             if (qemuSetupCgroupCpusetCpus(cgroup_vcpu, pcpumap) < 0) {
                 virReportError(VIR_ERR_OPERATION_INVALID,
@@ -5419,7 +5423,8 @@ qemuDomainPinEmulator(virDomainPtr dom,
                 /*
                  * Configure the corresponding cpuset cgroup.
                  */
-                if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_emulator) < 0)
+                if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_EMULATOR_NAME,
+                                       0, false, &cgroup_emulator) < 0)
                     goto endjob;
                 if (qemuSetupCgroupCpusetCpus(cgroup_emulator,
                                               newVcpuPin[0]->cpumask) < 0) {
@@ -6014,8 +6019,8 @@ qemuDomainPinIOThread(virDomainPtr dom,
         /* Configure the corresponding cpuset cgroup before set affinity. */
         if (virCgroupHasController(priv->cgroup,
                                    VIR_CGROUP_CONTROLLER_CPUSET)) {
-            if (virCgroupNewIOThread(priv->cgroup, iothread_id,
-                                     false, &cgroup_iothread) < 0)
+            if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_IOTHREAD_NAME,
+                                   iothread_id, false, &cgroup_iothread) < 0)
                 goto endjob;
             if (qemuSetupCgroupCpusetCpus(cgroup_iothread, pcpumap) < 0) {
                 virReportError(VIR_ERR_OPERATION_INVALID,
@@ -9956,21 +9961,23 @@ qemuDomainSetNumaParamsLive(virDomainObjPtr vm,
     if (!(nodeset_str = virBitmapFormat(nodeset)))
         goto cleanup;
 
-    if (virCgroupNewEmulator(priv->cgroup, false, &cgroup_temp) < 0 ||
+    if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_EMULATOR_NAME, 0,
+                           false, &cgroup_temp) < 0 ||
         virCgroupSetCpusetMems(cgroup_temp, nodeset_str) < 0)
         goto cleanup;
     virCgroupFree(&cgroup_temp);
 
     for (i = 0; i < priv->nvcpupids; i++) {
-        if (virCgroupNewVcpu(priv->cgroup, i, false, &cgroup_temp) < 0 ||
+        if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_VCPU_NAME, i,
+                               false, &cgroup_temp) < 0 ||
             virCgroupSetCpusetMems(cgroup_temp, nodeset_str) < 0)
             goto cleanup;
         virCgroupFree(&cgroup_temp);
     }
 
     for (i = 0; i < priv->niothreadpids; i++) {
-        if (virCgroupNewIOThread(priv->cgroup, i + 1, false,
-                                 &cgroup_temp) < 0 ||
+        if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_IOTHREAD_NAME, i + 1,
+                               false, &cgroup_temp) < 0 ||
             virCgroupSetCpusetMems(cgroup_temp, nodeset_str) < 0)
             goto cleanup;
         virCgroupFree(&cgroup_temp);
@@ -10237,7 +10244,8 @@ qemuSetVcpusBWLive(virDomainObjPtr vm, virCgroupPtr cgroup,
      */
     if (priv->nvcpupids != 0 && priv->vcpupids[0] != vm->pid) {
         for (i = 0; i < priv->nvcpupids; i++) {
-            if (virCgroupNewVcpu(cgroup, i, false, &cgroup_vcpu) < 0)
+            if (virCgroupNewThread(cgroup, VIR_CGROUP_VCPU_NAME, i,
+                                   false, &cgroup_vcpu) < 0)
                 goto cleanup;
 
             if (qemuSetupCgroupVcpuBW(cgroup_vcpu, period, quota) < 0)
@@ -10267,7 +10275,8 @@ qemuSetEmulatorBandwidthLive(virDomainObjPtr vm, virCgroupPtr cgroup,
     if (priv->nvcpupids == 0 || priv->vcpupids[0] == vm->pid)
         return 0;
 
-    if (virCgroupNewEmulator(cgroup, false, &cgroup_emulator) < 0)
+    if (virCgroupNewThread(cgroup, VIR_CGROUP_EMULATOR_NAME, 0,
+                           false, &cgroup_emulator) < 0)
         goto cleanup;
 
     if (qemuSetupCgroupVcpuBW(cgroup_emulator, period, quota) < 0)
@@ -10562,7 +10571,8 @@ qemuGetVcpusBWLive(virDomainObjPtr vm,
     }
 
     /* get period and quota for vcpu0 */
-    if (virCgroupNewVcpu(priv->cgroup, 0, false, &cgroup_vcpu) < 0)
+    if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_VCPU_NAME, 0,
+                           false, &cgroup_vcpu) < 0)
         goto cleanup;
 
     rc = qemuGetVcpuBWLive(cgroup_vcpu, period, quota);
@@ -10595,7 +10605,8 @@ qemuGetEmulatorBandwidthLive(virDomainObjPtr vm, virCgroupPtr cgroup,
     }
 
     /* get period and quota for emulator */
-    if (virCgroupNewEmulator(cgroup, false, &cgroup_emulator) < 0)
+    if (virCgroupNewThread(cgroup, VIR_CGROUP_EMULATOR_NAME, 0,
+                           false, &cgroup_emulator) < 0)
         goto cleanup;
 
     rc = qemuGetVcpuBWLive(cgroup_emulator, period, quota);
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index 7fec0cc..f1665c8 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -1482,128 +1482,6 @@ virCgroupNewThread(virCgroupPtr domain,
 }
 
 
-/**
- * virCgroupNewVcpu:
- *
- * @domain: group for the domain
- * @vcpuid: id of the vcpu
- * @create: true to create if not already existing
- * @group: Pointer to returned virCgroupPtr
- *
- * Returns 0 on success, or -1 on error
- */
-int
-virCgroupNewVcpu(virCgroupPtr domain,
-                 int vcpuid,
-                 bool create,
-                 virCgroupPtr *group)
-{
-    int ret = -1;
-    char *name = NULL;
-    int controllers;
-
-    if (virAsprintf(&name, "vcpu%d", vcpuid) < 0)
-        goto cleanup;
-
-    controllers = ((1 << VIR_CGROUP_CONTROLLER_CPU) |
-                   (1 << VIR_CGROUP_CONTROLLER_CPUACCT) |
-                   (1 << VIR_CGROUP_CONTROLLER_CPUSET));
-
-    if (virCgroupNew(-1, name, domain, controllers, group) < 0)
-        goto cleanup;
-
-    if (virCgroupMakeGroup(domain, *group, create, VIR_CGROUP_NONE) < 0) {
-        virCgroupRemove(*group);
-        virCgroupFree(group);
-        goto cleanup;
-    }
-
-    ret = 0;
- cleanup:
-    VIR_FREE(name);
-    return ret;
-}
-
-
-/**
- * virCgroupNewEmulator:
- *
- * @domain: group for the domain
- * @create: true to create if not already existing
- * @group: Pointer to returned virCgroupPtr
- *
- * Returns: 0 on success or -1 on error
- */
-int
-virCgroupNewEmulator(virCgroupPtr domain,
-                     bool create,
-                     virCgroupPtr *group)
-{
-    int ret = -1;
-    int controllers;
-
-    controllers = ((1 << VIR_CGROUP_CONTROLLER_CPU) |
-                   (1 << VIR_CGROUP_CONTROLLER_CPUACCT) |
-                   (1 << VIR_CGROUP_CONTROLLER_CPUSET));
-
-    if (virCgroupNew(-1, "emulator", domain, controllers, group) < 0)
-        goto cleanup;
-
-    if (virCgroupMakeGroup(domain, *group, create, VIR_CGROUP_NONE) < 0) {
-        virCgroupRemove(*group);
-        virCgroupFree(group);
-        goto cleanup;
-    }
-
-    ret = 0;
- cleanup:
-    return ret;
-}
-
-
-/**
- * virCgroupNewIOThread:
- *
- * @domain: group for the domain
- * @iothreadid: id of the iothread
- * @create: true to create if not already existing
- * @group: Pointer to returned virCgroupPtr
- *
- * Returns 0 on success, or -1 on error
- */
-int
-virCgroupNewIOThread(virCgroupPtr domain,
-                     int iothreadid,
-                     bool create,
-                     virCgroupPtr *group)
-{
-    int ret = -1;
-    char *name = NULL;
-    int controllers;
-
-    if (virAsprintf(&name, "iothread%d", iothreadid) < 0)
-        goto cleanup;
-
-    controllers = ((1 << VIR_CGROUP_CONTROLLER_CPU) |
-                   (1 << VIR_CGROUP_CONTROLLER_CPUACCT) |
-                   (1 << VIR_CGROUP_CONTROLLER_CPUSET));
-
-    if (virCgroupNew(-1, name, domain, controllers, group) < 0)
-        goto cleanup;
-
-    if (virCgroupMakeGroup(domain, *group, create, VIR_CGROUP_NONE) < 0) {
-        virCgroupRemove(*group);
-        virCgroupFree(group);
-        goto cleanup;
-    }
-
-    ret = 0;
- cleanup:
-    VIR_FREE(name);
-    return ret;
-}
-
-
 int
 virCgroupNewDetect(pid_t pid,
                    int controllers,
@@ -3106,7 +2984,8 @@ virCgroupGetPercpuVcpuSum(virCgroupPtr group,
         unsigned long long tmp;
         ssize_t j;
 
-        if (virCgroupNewVcpu(group, i, false, &group_vcpu) < 0)
+        if (virCgroupNewThread(group, VIR_CGROUP_VCPU_NAME, i,
+                               false, &group_vcpu) < 0)
             goto cleanup;
 
         if (virCgroupGetCpuacctPercpuUsage(group_vcpu, &buf) < 0)
@@ -4140,41 +4019,6 @@ virCgroupNewThread(virCgroupPtr domain ATTRIBUTE_UNUSED,
 
 
 int
-virCgroupNewVcpu(virCgroupPtr domain ATTRIBUTE_UNUSED,
-                 int vcpuid ATTRIBUTE_UNUSED,
-                 bool create ATTRIBUTE_UNUSED,
-                 virCgroupPtr *group ATTRIBUTE_UNUSED)
-{
-    virReportSystemError(ENXIO, "%s",
-                         _("Control groups not supported on this platform"));
-    return -1;
-}
-
-
-int
-virCgroupNewEmulator(virCgroupPtr domain ATTRIBUTE_UNUSED,
-                     bool create ATTRIBUTE_UNUSED,
-                     virCgroupPtr *group ATTRIBUTE_UNUSED)
-{
-    virReportSystemError(ENXIO, "%s",
-                         _("Control groups not supported on this platform"));
-    return -1;
-}
-
-
-int
-virCgroupNewIOThread(virCgroupPtr domain ATTRIBUTE_UNUSED,
-                     int iothreadid ATTRIBUTE_UNUSED,
-                     bool create ATTRIBUTE_UNUSED,
-                     virCgroupPtr *group ATTRIBUTE_UNUSED)
-{
-    virReportSystemError(ENXIO, "%s",
-                         _("Control groups not supported on this platform"));
-    return -1;
-}
-
-
-int
 virCgroupNewDetect(pid_t pid ATTRIBUTE_UNUSED,
                    int controllers ATTRIBUTE_UNUSED,
                    virCgroupPtr *group ATTRIBUTE_UNUSED)
diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h
index a756b03..cf90e0b 100644
--- a/src/util/vircgroup.h
+++ b/src/util/vircgroup.h
@@ -85,23 +85,6 @@ int virCgroupNewThread(virCgroupPtr domain,
                        virCgroupPtr *group)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(5);
 
-int virCgroupNewVcpu(virCgroupPtr domain,
-                     int vcpuid,
-                     bool create,
-                     virCgroupPtr *group)
-    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4);
-
-int virCgroupNewEmulator(virCgroupPtr domain,
-                         bool create,
-                         virCgroupPtr *group)
-    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3);
-
-int virCgroupNewIOThread(virCgroupPtr domain,
-                         int iothreadid,
-                         bool create,
-                         virCgroupPtr *group)
-    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4);
-
 int virCgroupNewDetect(pid_t pid,
                        int controllers,
                        virCgroupPtr *group);
-- 
2.1.0




More information about the libvir-list mailing list