[PATCH] lxcSetSchedulerParameters: reverse order of tests; improve a diagnostic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
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 = &params[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'"));
             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;
         }
     }
--
1.7.1.189.g07419

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]