[Devel] [PATCH rh7 4/7] ub: ressurrect ioprio_set IOPRIO_WHO_UBC

Vladimir Davydov vdavydov at parallels.com
Tue Jun 9 07:06:45 PDT 2015


Signed-off-by: Vladimir Davydov <vdavydov at parallels.com>
---
 block/cfq-iosched.c |  7 +++++++
 kernel/bc/io_prio.c | 19 +++++++++----------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index c649678cf800..b4a9ff76fe39 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1739,6 +1739,13 @@ static int cfq_set_leaf_weight(struct cgroup *cgrp, struct cftype *cft, u64 val)
 	return __cfq_set_weight(cgrp, cft, val, true);
 }
 
+#ifdef CONFIG_BC_IO_PRIORITY
+int blkcg_set_weight(struct cgroup *cgrp, unsigned int weight)
+{
+	return cfq_set_weight(cgrp, NULL, weight);
+}
+#endif
+
 static int cfqg_print_stat(struct cgroup *cgrp, struct cftype *cft,
 			   struct seq_file *sf)
 {
diff --git a/kernel/bc/io_prio.c b/kernel/bc/io_prio.c
index f51553c236cc..6d31ce9c17e5 100644
--- a/kernel/bc/io_prio.c
+++ b/kernel/bc/io_prio.c
@@ -14,11 +14,16 @@
 #include <bc/proc.h>
 #include "blk-cgroup.h"
 
-//static u64 ioprio_weight[UB_IOPRIO_MAX] = {320, 365, 410, 460, 500, 550, 600, 640};
+static unsigned int ioprio_weight[UB_IOPRIO_MAX] = {
+	320, 365, 410, 460, 500, 550, 600, 640,
+};
+
+extern int blkcg_set_weight(struct cgroup *cgrp, unsigned int weight);
 
 int ub_set_ioprio(int id, int ioprio)
 {
 	struct user_beancounter *ub;
+	struct cgroup_subsys_state *css;
 	int ret;
 
 	ret = -ERANGE;
@@ -30,15 +35,9 @@ int ub_set_ioprio(int id, int ioprio)
 	if (!ub)
 		goto out;
 
-	ret = 0;
-#if 0
-	if (ub->blkio_cgroup)
-//		ret = blkio_cgroup_set_weight(ub->blkio_cgroup,
-//				ioprio_weight[ioprio])
-		ret = 0;
-	else
-		ret = -ENOTSUPP;
-#endif
+	css = ub_get_blkio_css(ub);
+	ret = blkcg_set_weight(css->cgroup, ioprio_weight[ioprio]);
+	css_put(css);
 	put_beancounter(ub);
 out:
 	return ret;
-- 
2.1.4




More information about the Devel mailing list