[libvirt] [PATCH] lxcSetSchedulerParameters: reverse order of tests; improve a diagnostic
Eric Blake
eblake at redhat.com
Thu May 13 01:23:25 UTC 2010
On 05/11/2010 07:51 AM, Jim Meyering wrote:
> Investigating something else in the vicinity,
> I noticed that the ordering of tests was backwards.
> Here's the fix for that.
>
> Also, looking at the following code, I saw that failure of
> virCgroupSetCpuShares could evoke no diagnostic.
> Now it does.
>
>>From bc3404d9f12c42cf883a43395fee6fc14c952b2c Mon Sep 17 00:00:00 2001
> From: Jim Meyering <meyering at redhat.com>
> Date: Tue, 11 May 2010 15:43:32 +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 | 19 ++++++++++++-------
> 1 files changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
> index fc0df37..5636eee 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 (STRNEQ(param->field, "cpu_shares")) {
> + lxcError(VIR_ERR_INVALID_ARG,
> + _("Invalid parameter `%s'"), param->field);
> + goto cleanup;
> + }
> +
> if (param->type != VIR_DOMAIN_SCHED_FIELD_ULLONG) {
> lxcError(VIR_ERR_INVALID_ARG, "%s",
> - _("Invalid type for cpu_shares tunable, expected a 'ullong'"));
> + _("Invalid type for cpu_shares tunable, expected a 'ullong'"));
Why the indentation change here?
> 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);
> + 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;
> }
> }
ACK.
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20100512/b247c6dd/attachment-0001.sig>
More information about the libvir-list
mailing list