[libvirt] [PATCH] LXC: blkio: allow to setup weight_device

Gao feng gaofeng at cn.fujitsu.com
Thu Jun 27 08:32:30 UTC 2013


libivrt lxc can only set generic weight for container,
This patch allows user to setup per device blkio
weigh for container.

Signed-off-by: Gao feng <gaofeng at cn.fujitsu.com>
---
 src/lxc/lxc_cgroup.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c
index 5c8acb3..4443b83 100644
--- a/src/lxc/lxc_cgroup.c
+++ b/src/lxc/lxc_cgroup.c
@@ -123,21 +123,35 @@ cleanup:
 static int virLXCCgroupSetupBlkioTune(virDomainDefPtr def,
                                       virCgroupPtr cgroup)
 {
-    int ret = -1;
+    int i, rc;
 
     if (def->blkio.weight) {
-        int rc = virCgroupSetBlkioWeight(cgroup, def->blkio.weight);
+        rc = virCgroupSetBlkioWeight(cgroup, def->blkio.weight);
         if (rc != 0) {
             virReportSystemError(-rc,
                                  _("Unable to set Blkio weight for domain %s"),
                                  def->name);
-            goto cleanup;
+            return -1;
         }
     }
 
-    ret = 0;
-cleanup:
-    return ret;
+    if (def->blkio.ndevices) {
+        for (i = 0; i < def->blkio.ndevices; i++) {
+            virBlkioDeviceWeightPtr dw = &def->blkio.devices[i];
+            if (!dw->weight)
+                continue;
+            rc = virCgroupSetBlkioDeviceWeight(cgroup, dw->path, dw->weight);
+            if (rc != 0) {
+                virReportSystemError(-rc,
+                                     _("Unable to set io device weight "
+                                       "for domain %s"),
+                                     def->name);
+                return -1;
+            }
+        }
+    }
+
+    return 0;
 }
 
 
-- 
1.8.1.4




More information about the libvir-list mailing list