Tuesday, 4 March
2014
Tue, 4 Mar
'14
7:13 a.m.
---
src/lxc/lxc_cgroup.c | 13 ++++++++++---
src/lxc/lxc_driver.c | 6 +++++-
src/qemu/qemu_cgroup.c | 12 +++++++++---
src/qemu/qemu_driver.c | 7 ++++++-
4 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c
index 876c32e..5887b24 100644
--- a/src/lxc/lxc_cgroup.c
+++ b/src/lxc/lxc_cgroup.c
@@ -36,9 +36,16 @@ static int virLXCCgroupSetupCpuTune(virDomainDefPtr def,
virCgroupPtr cgroup)
{
int ret = -1;
- if (def->cputune.sharesSpecified &&
- virCgroupSetCpuShares(cgroup, def->cputune.shares) < 0)
- goto cleanup;
+
+ if (def->cputune.sharesSpecified) {
+ unsigned long long val;
+ if (virCgroupSetCpuShares(cgroup, def->cputune.shares) < 0)
+ goto cleanup;
+
+ if (virCgroupGetCpuShares(cgroup, &val) < 0)
+ goto cleanup;
+ def->cputune.shares = val;
+ }
if (def->cputune.quota != 0 &&
virCgroupSetCpuCfsQuota(cgroup, def->cputune.quota) < 0)
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index 26333a7..aafb81a 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -1887,10 +1887,14 @@ lxcDomainSetSchedulerParametersFlags(virDomainPtr dom,
if (STREQ(param->field, VIR_DOMAIN_SCHEDULER_CPU_SHARES)) {
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
+ unsigned long long val;
if (virCgroupSetCpuShares(priv->cgroup, params[i].value.ul) < 0)
goto cleanup;
- vm->def->cputune.shares = params[i].value.ul;
+ if (virCgroupGetCpuShares(priv->cgroup, &val) < 0)
+ goto cleanup;
+
+ vm->def->cputune.shares = val;
vm->def->cputune.sharesSpecified = true;
}
diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
index 57c7302..a13f085 100644
--- a/src/qemu/qemu_cgroup.c
+++ b/src/qemu/qemu_cgroup.c
@@ -653,9 +653,15 @@ qemuSetupCpuCgroup(virDomainObjPtr vm)
}
}
- if (vm->def->cputune.sharesSpecified &&
- virCgroupSetCpuShares(priv->cgroup, vm->def->cputune.shares) < 0)
- return -1;
+ if (vm->def->cputune.sharesSpecified) {
+ unsigned long long val;
+ if (virCgroupSetCpuShares(priv->cgroup, vm->def->cputune.shares) <
0)
+ return -1;
+
+ if (virCgroupGetCpuShares(priv->cgroup, &val) < 0)
+ return -1;
+ vm->def->cputune.shares = val;
+ }
return 0;
}
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 3c9ddb6..d082a6b 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -9004,9 +9004,14 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom,
if (STREQ(param->field, VIR_DOMAIN_SCHEDULER_CPU_SHARES)) {
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
+ unsigned long long val;
if (virCgroupSetCpuShares(priv->cgroup, value_ul) < 0)
goto cleanup;
- vm->def->cputune.shares = value_ul;
+
+ if (virCgroupGetCpuShares(priv->cgroup, &val) < 0)
+ goto cleanup;
+
+ vm->def->cputune.shares = val;
vm->def->cputune.sharesSpecified = true;
}
--
1.8.3.2