From dd1058fa8ff74617d891fe81927c3b5527780682 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Tue, 11 May 2010 15:51:46 +0200 Subject: [PATCH] lxcSetSchedulerParameters: reverse order of tests; diagnose a failure * src/lxc/lxc_driver.c (lxcSetSchedulerParameters): Ensure that "->field" is "cpu_shares" before possibly giving a diagnostic about a type for a "cpu_shares" value. Also, virCgroupSetCpuShares could fail without evoking a diagnostic. Add one. --- src/lxc/lxc_driver.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 8c3bbd312e..14a8b2abaa 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -2054,18 +2054,23 @@ static int lxcSetSchedulerParameters(virDomainPtr domain, for (i = 0; i < nparams; i++) { virSchedParameterPtr param = ¶ms[i]; - if (param->type != VIR_DOMAIN_SCHED_FIELD_ULLONG) { - lxcError(VIR_ERR_INVALID_ARG, "%s", - _("Invalid type for cpu_shares tunable, expected a 'ullong'")); + + if (STRNEQ(param->field, "cpu_shares")) { + lxcError(VIR_ERR_INVALID_ARG, + _("Invalid parameter `%s'"), param->field); goto cleanup; } - if (STREQ(param->field, "cpu_shares")) { - if (virCgroupSetCpuShares(group, params[i].value.ul) != 0) - goto cleanup; - } else { - lxcError(VIR_ERR_INVALID_ARG, - _("Invalid parameter `%s'"), param->field); + if (param->type != VIR_DOMAIN_SCHED_FIELD_ULLONG) { + lxcError(VIR_ERR_INVALID_ARG, "%s", + _("Invalid type for cpu_shares tunable, expected a 'ullong'")); + goto cleanup; + } + + int rc = virCgroupSetCpuShares(group, params[i].value.ul); + if (rc != 0) { + virReportSystemError(-rc, _("failed to set cpu_shares=%llu"), + params[i].value.ul); goto cleanup; } }