aboutsummaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2014-05-13 12:16:21 -0400
committerTejun Heo <tj@kernel.org>2014-05-13 12:16:21 -0400
commit451af504df0c62f695a69b83c250486e77c66378 (patch)
treef89879cf3f88e9da346d8bd3fa1ae192a280d772 /block
parentb41686401e501430ffe93b575ef7959d2ecc6f2e (diff)
cgroup: replace cftype->write_string() with cftype->write()
Convert all cftype->write_string() users to the new cftype->write() which maps directly to kernfs write operation and has full access to kernfs and cgroup contexts. The conversions are mostly mechanical. * @css and @cft are accessed using of_css() and of_cft() accessors respectively instead of being specified as arguments. * Should return @nbytes on success instead of 0. * @buf is not trimmed automatically. Trim if necessary. Note that blkcg and netprio don't need this as the parsers already handle whitespaces. cftype->write_string() has no user left after the conversions and removed. While at it, remove unnecessary local variable @p in cgroup_subtree_control_write() and stale comment about CGROUP_LOCAL_BUFFER_SIZE in cgroup_freezer.c. This patch doesn't introduce any visible behavior changes. v2: netprio was missing from conversion. Converted. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Aristeu Rozanski <arozansk@redhat.com> Acked-by: Vivek Goyal <vgoyal@redhat.com> Acked-by: Li Zefan <lizefan@huawei.com> Cc: Jens Axboe <axboe@kernel.dk> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.cz> Cc: Neil Horman <nhorman@tuxdriver.com> Cc: "David S. Miller" <davem@davemloft.net>
Diffstat (limited to 'block')
-rw-r--r--block/blk-throttle.c32
-rw-r--r--block/cfq-iosched.c28
2 files changed, 30 insertions, 30 deletions
diff --git a/block/blk-throttle.c b/block/blk-throttle.c
index 033745cd7fba..5e8fd1bace98 100644
--- a/block/blk-throttle.c
+++ b/block/blk-throttle.c
@@ -1346,10 +1346,10 @@ static int tg_print_conf_uint(struct seq_file *sf, void *v)
1346 return 0; 1346 return 0;
1347} 1347}
1348 1348
1349static int tg_set_conf(struct cgroup_subsys_state *css, struct cftype *cft, 1349static ssize_t tg_set_conf(struct kernfs_open_file *of,
1350 const char *buf, bool is_u64) 1350 char *buf, size_t nbytes, loff_t off, bool is_u64)
1351{ 1351{
1352 struct blkcg *blkcg = css_to_blkcg(css); 1352 struct blkcg *blkcg = css_to_blkcg(of_css(of));
1353 struct blkg_conf_ctx ctx; 1353 struct blkg_conf_ctx ctx;
1354 struct throtl_grp *tg; 1354 struct throtl_grp *tg;
1355 struct throtl_service_queue *sq; 1355 struct throtl_service_queue *sq;
@@ -1368,9 +1368,9 @@ static int tg_set_conf(struct cgroup_subsys_state *css, struct cftype *cft,
1368 ctx.v = -1; 1368 ctx.v = -1;
1369 1369
1370 if (is_u64) 1370 if (is_u64)
1371 *(u64 *)((void *)tg + cft->private) = ctx.v; 1371 *(u64 *)((void *)tg + of_cft(of)->private) = ctx.v;
1372 else 1372 else
1373 *(unsigned int *)((void *)tg + cft->private) = ctx.v; 1373 *(unsigned int *)((void *)tg + of_cft(of)->private) = ctx.v;
1374 1374
1375 throtl_log(&tg->service_queue, 1375 throtl_log(&tg->service_queue,
1376 "limit change rbps=%llu wbps=%llu riops=%u wiops=%u", 1376 "limit change rbps=%llu wbps=%llu riops=%u wiops=%u",
@@ -1404,19 +1404,19 @@ static int tg_set_conf(struct cgroup_subsys_state *css, struct cftype *cft,
1404 } 1404 }
1405 1405
1406 blkg_conf_finish(&ctx); 1406 blkg_conf_finish(&ctx);
1407 return 0; 1407 return nbytes;
1408} 1408}
1409 1409
1410static int tg_set_conf_u64(struct cgroup_subsys_state *css, struct cftype *cft, 1410static ssize_t tg_set_conf_u64(struct kernfs_open_file *of,
1411 char *buf) 1411 char *buf, size_t nbytes, loff_t off)
1412{ 1412{
1413 return tg_set_conf(css, cft, buf, true); 1413 return tg_set_conf(of, buf, nbytes, off, true);
1414} 1414}
1415 1415
1416static int tg_set_conf_uint(struct cgroup_subsys_state *css, struct cftype *cft, 1416static ssize_t tg_set_conf_uint(struct kernfs_open_file *of,
1417 char *buf) 1417 char *buf, size_t nbytes, loff_t off)
1418{ 1418{
1419 return tg_set_conf(css, cft, buf, false); 1419 return tg_set_conf(of, buf, nbytes, off, false);
1420} 1420}
1421 1421
1422static struct cftype throtl_files[] = { 1422static struct cftype throtl_files[] = {
@@ -1424,25 +1424,25 @@ static struct cftype throtl_files[] = {
1424 .name = "throttle.read_bps_device", 1424 .name = "throttle.read_bps_device",
1425 .private = offsetof(struct throtl_grp, bps[READ]), 1425 .private = offsetof(struct throtl_grp, bps[READ]),
1426 .seq_show = tg_print_conf_u64, 1426 .seq_show = tg_print_conf_u64,
1427 .write_string = tg_set_conf_u64, 1427 .write = tg_set_conf_u64,
1428 }, 1428 },
1429 { 1429 {
1430 .name = "throttle.write_bps_device", 1430 .name = "throttle.write_bps_device",
1431 .private = offsetof(struct throtl_grp, bps[WRITE]), 1431 .private = offsetof(struct throtl_grp, bps[WRITE]),
1432 .seq_show = tg_print_conf_u64, 1432 .seq_show = tg_print_conf_u64,
1433 .write_string = tg_set_conf_u64, 1433 .write = tg_set_conf_u64,
1434 }, 1434 },
1435 { 1435 {
1436 .name = "throttle.read_iops_device", 1436 .name = "throttle.read_iops_device",
1437 .private = offsetof(struct throtl_grp, iops[READ]), 1437 .private = offsetof(struct throtl_grp, iops[READ]),
1438 .seq_show = tg_print_conf_uint, 1438 .seq_show = tg_print_conf_uint,
1439 .write_string = tg_set_conf_uint, 1439 .write = tg_set_conf_uint,
1440 }, 1440 },
1441 { 1441 {
1442 .name = "throttle.write_iops_device", 1442 .name = "throttle.write_iops_device",
1443 .private = offsetof(struct throtl_grp, iops[WRITE]), 1443 .private = offsetof(struct throtl_grp, iops[WRITE]),
1444 .seq_show = tg_print_conf_uint, 1444 .seq_show = tg_print_conf_uint,
1445 .write_string = tg_set_conf_uint, 1445 .write = tg_set_conf_uint,
1446 }, 1446 },
1447 { 1447 {
1448 .name = "throttle.io_service_bytes", 1448 .name = "throttle.io_service_bytes",
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index e0985f1955e7..a73020b8c9af 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1670,11 +1670,11 @@ static int cfq_print_leaf_weight(struct seq_file *sf, void *v)
1670 return 0; 1670 return 0;
1671} 1671}
1672 1672
1673static int __cfqg_set_weight_device(struct cgroup_subsys_state *css, 1673static ssize_t __cfqg_set_weight_device(struct kernfs_open_file *of,
1674 struct cftype *cft, const char *buf, 1674 char *buf, size_t nbytes, loff_t off,
1675 bool is_leaf_weight) 1675 bool is_leaf_weight)
1676{ 1676{
1677 struct blkcg *blkcg = css_to_blkcg(css); 1677 struct blkcg *blkcg = css_to_blkcg(of_css(of));
1678 struct blkg_conf_ctx ctx; 1678 struct blkg_conf_ctx ctx;
1679 struct cfq_group *cfqg; 1679 struct cfq_group *cfqg;
1680 int ret; 1680 int ret;
@@ -1697,19 +1697,19 @@ static int __cfqg_set_weight_device(struct cgroup_subsys_state *css,
1697 } 1697 }
1698 1698
1699 blkg_conf_finish(&ctx); 1699 blkg_conf_finish(&ctx);
1700 return ret; 1700 return ret ?: nbytes;
1701} 1701}
1702 1702
1703static int cfqg_set_weight_device(struct cgroup_subsys_state *css, 1703static ssize_t cfqg_set_weight_device(struct kernfs_open_file *of,
1704 struct cftype *cft, char *buf) 1704 char *buf, size_t nbytes, loff_t off)
1705{ 1705{
1706 return __cfqg_set_weight_device(css, cft, buf, false); 1706 return __cfqg_set_weight_device(of, buf, nbytes, off, false);
1707} 1707}
1708 1708
1709static int cfqg_set_leaf_weight_device(struct cgroup_subsys_state *css, 1709static ssize_t cfqg_set_leaf_weight_device(struct kernfs_open_file *of,
1710 struct cftype *cft, char *buf) 1710 char *buf, size_t nbytes, loff_t off)
1711{ 1711{
1712 return __cfqg_set_weight_device(css, cft, buf, true); 1712 return __cfqg_set_weight_device(of, buf, nbytes, off, true);
1713} 1713}
1714 1714
1715static int __cfq_set_weight(struct cgroup_subsys_state *css, struct cftype *cft, 1715static int __cfq_set_weight(struct cgroup_subsys_state *css, struct cftype *cft,
@@ -1837,7 +1837,7 @@ static struct cftype cfq_blkcg_files[] = {
1837 .name = "weight_device", 1837 .name = "weight_device",
1838 .flags = CFTYPE_ONLY_ON_ROOT, 1838 .flags = CFTYPE_ONLY_ON_ROOT,
1839 .seq_show = cfqg_print_leaf_weight_device, 1839 .seq_show = cfqg_print_leaf_weight_device,
1840 .write_string = cfqg_set_leaf_weight_device, 1840 .write = cfqg_set_leaf_weight_device,
1841 }, 1841 },
1842 { 1842 {
1843 .name = "weight", 1843 .name = "weight",
@@ -1851,7 +1851,7 @@ static struct cftype cfq_blkcg_files[] = {
1851 .name = "weight_device", 1851 .name = "weight_device",
1852 .flags = CFTYPE_NOT_ON_ROOT, 1852 .flags = CFTYPE_NOT_ON_ROOT,
1853 .seq_show = cfqg_print_weight_device, 1853 .seq_show = cfqg_print_weight_device,
1854 .write_string = cfqg_set_weight_device, 1854 .write = cfqg_set_weight_device,
1855 }, 1855 },
1856 { 1856 {
1857 .name = "weight", 1857 .name = "weight",
@@ -1863,7 +1863,7 @@ static struct cftype cfq_blkcg_files[] = {
1863 { 1863 {
1864 .name = "leaf_weight_device", 1864 .name = "leaf_weight_device",
1865 .seq_show = cfqg_print_leaf_weight_device, 1865 .seq_show = cfqg_print_leaf_weight_device,
1866 .write_string = cfqg_set_leaf_weight_device, 1866 .write = cfqg_set_leaf_weight_device,
1867 }, 1867 },
1868 { 1868 {
1869 .name = "leaf_weight", 1869 .name = "leaf_weight",