virCgroupSetupMemtune() has been introduced in order to remove the code
duplication present between virLXCCgroupSetupMemTune() and
qemuSetupMemoryCgroup().
Signed-off-by: Fabiano FidĂȘncio <fabiano(a)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