[libvirt] [PATCH 2/2] vircgroup: Add virCgroupSetupMemtune()

Fabiano Fidêncio fabiano at fidencio.org
Sun Jun 3 18:10:00 UTC 2018


virCgroupSetupMemtune() has been introduced in order to remove the code
duplication present between virLXCCgroupSetupMemTune() and
qemuSetupMemoryCgroup().

Signed-off-by: Fabiano Fidêncio <fabiano at fidencio.org>
---
 src/libvirt_private.syms |  1 +
 src/lxc/lxc_cgroup.c     | 20 ++------------------
 src/qemu/qemu_cgroup.c   | 14 +-------------
 src/util/vircgroup.c     | 20 ++++++++++++++++++++
 src/util/vircgroup.h     |  1 +
 5 files changed, 25 insertions(+), 31 deletions(-)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 4bec93c786..39fce2e169 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1546,6 +1546,7 @@ virCgroupSetMemorySoftLimit;
 virCgroupSetMemSwapHardLimit;
 virCgroupSetOwner;
 virCgroupSetupBlkiotune;
+virCgroupSetupMemtune;
 virCgroupSupportsCpuBW;
 virCgroupTerminateMachine;
 
diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c
index 2158c1c12b..a5e71aee53 100644
--- a/src/lxc/lxc_cgroup.c
+++ b/src/lxc/lxc_cgroup.c
@@ -113,26 +113,10 @@ static int virLXCCgroupSetupBlkioTune(virDomainDefPtr def,
 static int virLXCCgroupSetupMemTune(virDomainDefPtr def,
                                     virCgroupPtr cgroup)
 {
-    int ret = -1;
-
     if (virCgroupSetMemory(cgroup, virDomainDefGetMemoryInitial(def)) < 0)
-        goto cleanup;
-
-    if (virMemoryLimitIsSet(def->mem.hard_limit))
-        if (virCgroupSetMemoryHardLimit(cgroup, def->mem.hard_limit) < 0)
-            goto cleanup;
-
-    if (virMemoryLimitIsSet(def->mem.soft_limit))
-        if (virCgroupSetMemorySoftLimit(cgroup, def->mem.soft_limit) < 0)
-            goto cleanup;
-
-    if (virMemoryLimitIsSet(def->mem.swap_hard_limit))
-        if (virCgroupSetMemSwapHardLimit(cgroup, def->mem.swap_hard_limit) < 0)
-            goto cleanup;
+        return -1;
 
-    ret = 0;
- cleanup:
-    return ret;
+    return virCgroupSetupMemtune(cgroup, &def->mem);
 }
 
 
diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
index 47ee23796c..7b6a4ec796 100644
--- a/src/qemu/qemu_cgroup.c
+++ b/src/qemu/qemu_cgroup.c
@@ -543,19 +543,7 @@ qemuSetupMemoryCgroup(virDomainObjPtr vm)
         }
     }
 
-    if (virMemoryLimitIsSet(vm->def->mem.hard_limit))
-        if (virCgroupSetMemoryHardLimit(priv->cgroup, vm->def->mem.hard_limit) < 0)
-            return -1;
-
-    if (virMemoryLimitIsSet(vm->def->mem.soft_limit))
-        if (virCgroupSetMemorySoftLimit(priv->cgroup, vm->def->mem.soft_limit) < 0)
-            return -1;
-
-    if (virMemoryLimitIsSet(vm->def->mem.swap_hard_limit))
-        if (virCgroupSetMemSwapHardLimit(priv->cgroup, vm->def->mem.swap_hard_limit) < 0)
-            return -1;
-
-    return 0;
+    return virCgroupSetupMemtune(priv->cgroup, &vm->def->mem);
 }
 
 
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index 4e57f1322f..88f213e6da 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -4974,3 +4974,23 @@ virCgroupSetupBlkiotune(virCgroupPtr cgroup,
 
     return 0;
 }
+
+
+int
+virCgroupSetupMemtune(virCgroupPtr cgroup,
+                      virDomainMemtunePtr mem)
+{
+    if (virMemoryLimitIsSet(mem->hard_limit))
+        if (virCgroupSetMemoryHardLimit(cgroup, mem->hard_limit) < 0)
+            return -1;
+
+    if (virMemoryLimitIsSet(mem->soft_limit))
+        if (virCgroupSetMemorySoftLimit(cgroup, mem->soft_limit) < 0)
+            return -1;
+
+    if (virMemoryLimitIsSet(mem->swap_hard_limit))
+        if (virCgroupSetMemSwapHardLimit(cgroup, mem->swap_hard_limit) < 0)
+            return -1;
+
+    return 0;
+}
diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h
index bd7e7c6d70..5d7973b272 100644
--- a/src/util/vircgroup.h
+++ b/src/util/vircgroup.h
@@ -300,4 +300,5 @@ int virCgroupHasEmptyTasks(virCgroupPtr cgroup, int controller);
 bool virCgroupControllerAvailable(int controller);
 
 int virCgroupSetupBlkiotune(virCgroupPtr cgroup, virDomainBlkiotunePtr blkio);
+int virCgroupSetupMemtune(virCgroupPtr cgroup, virDomainMemtunePtr mem);
 #endif /* __VIR_CGROUP_H__ */
-- 
2.14.3




More information about the libvir-list mailing list