[PATCH 5/6] blk-cgroup: buffered write IO controller - bandwidth limit interface

From: Fengguang Wu
Date: Wed Mar 28 2012 - 18:38:20 EST


Add blkio controller interface "throttle.buffered_write_bps".

Signed-off-by: Wu Fengguang <fengguang.wu@xxxxxxxxx>
---
block/blk-cgroup.c | 21 +++++++++++++++++++++
include/linux/blk-cgroup.h | 1 +
2 files changed, 22 insertions(+)

--- linux-next.orig/block/blk-cgroup.c 2012-03-28 15:36:16.402093131 +0800
+++ linux-next/block/blk-cgroup.c 2012-03-28 15:36:44.974092545 +0800
@@ -1355,6 +1355,12 @@ static u64 blkiocg_file_read_u64 (struct
return (u64)blkcg->weight;
}
break;
+ case BLKIO_POLICY_THROTL:
+ switch (name) {
+ case BLKIO_THROTL_buffered_write_bps:
+ return (u64)blkcg->buffered_write_bps;
+ }
+ break;
default:
BUG();
}
@@ -1377,6 +1383,13 @@ blkiocg_file_write_u64(struct cgroup *cg
return blkio_weight_write(blkcg, val);
}
break;
+ case BLKIO_POLICY_THROTL:
+ switch (name) {
+ case BLKIO_THROTL_buffered_write_bps:
+ blkcg->buffered_write_bps = val;
+ return 0;
+ }
+ break;
default:
BUG();
}
@@ -1500,6 +1513,14 @@ struct cftype blkio_files[] = {
BLKIO_THROTL_io_serviced),
.read_map = blkiocg_file_read_map,
},
+ {
+ .name = "throttle.buffered_write_bps",
+ .private = BLKIOFILE_PRIVATE(BLKIO_POLICY_THROTL,
+ BLKIO_THROTL_buffered_write_bps),
+ .read_u64 = blkiocg_file_read_u64,
+ .write_u64 = blkiocg_file_write_u64,
+ .max_write_len = 256,
+ },
#endif /* CONFIG_BLK_DEV_THROTTLING */

#ifdef CONFIG_DEBUG_BLK_CGROUP
--- linux-next.orig/include/linux/blk-cgroup.h 2012-03-28 15:36:16.426093131 +0800
+++ linux-next/include/linux/blk-cgroup.h 2012-03-28 15:36:44.974092545 +0800
@@ -113,6 +113,7 @@ enum blkcg_file_name_throtl {
BLKIO_THROTL_write_iops_device,
BLKIO_THROTL_io_service_bytes,
BLKIO_THROTL_io_serviced,
+ BLKIO_THROTL_buffered_write_bps,
};

struct blkio_cgroup {


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/