diff --git a/src/hypervisor/domain_cgroup.c b/src/hypervisor/domain_cgroup.c index bef60f56c56c728509e5719ce0ced33363111100..e60abd536c2f714b89aa08cc87ba289b08656457 100644 --- a/src/hypervisor/domain_cgroup.c +++ b/src/hypervisor/domain_cgroup.c @@ -65,3 +65,22 @@ virDomainCgroupSetupBlkio(virCgroupPtr cgroup, virDomainBlkiotune blkio) return 0; } + + +int +virDomainCgroupSetupMemtune(virCgroupPtr cgroup, virDomainMemtune 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/hypervisor/domain_cgroup.h b/src/hypervisor/domain_cgroup.h index af244bd2d29a96baa11cafdd32d7d3526baf6a21..82ba47e85fe52af4e7c8f6155b769f876e82a934 100644 --- a/src/hypervisor/domain_cgroup.h +++ b/src/hypervisor/domain_cgroup.h @@ -25,3 +25,4 @@ int virDomainCgroupSetupBlkio(virCgroupPtr cgroup, virDomainBlkiotune blkio); +int virDomainCgroupSetupMemtune(virCgroupPtr cgroup, virDomainMemtune mem); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 283d6ef71f07f95606feeb6fc653b4c7aadcbf59..3d73fa39b0253634bcafe6be98c6de02739a0317 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1392,6 +1392,7 @@ virSetConnectStorage; # hypervisor/domain_cgroup.h virDomainCgroupSetupBlkio; +virDomainCgroupSetupMemtune; # libvirt_internal.h diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c index 96a89256a16118a950698d3f0d1c93aba3a4f0a7..eac1ee1ee0e111760a898d34f878d72e2b38bdef 100644 --- a/src/lxc/lxc_cgroup.c +++ b/src/lxc/lxc_cgroup.c @@ -112,19 +112,7 @@ static int virLXCCgroupSetupMemTune(virDomainDefPtr def, if (virCgroupSetMemory(cgroup, virDomainDefGetMemoryInitial(def)) < 0) return -1; - if (virMemoryLimitIsSet(def->mem.hard_limit)) - if (virCgroupSetMemoryHardLimit(cgroup, def->mem.hard_limit) < 0) - return -1; - - if (virMemoryLimitIsSet(def->mem.soft_limit)) - if (virCgroupSetMemorySoftLimit(cgroup, def->mem.soft_limit) < 0) - return -1; - - if (virMemoryLimitIsSet(def->mem.swap_hard_limit)) - if (virCgroupSetMemSwapHardLimit(cgroup, def->mem.swap_hard_limit) < 0) - return -1; - - return 0; + return virDomainCgroupSetupMemtune(cgroup, def->mem); } diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index 475c06382380f4c962ff39803f05a1b870c2ce47..0c2f5f1b25994ff6f4c90ae2c243772520d36c77 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -625,19 +625,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 virDomainCgroupSetupMemtune(priv->cgroup, vm->def->mem); }