aboutsummaryrefslogtreecommitdiffstats
path: root/mm
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
commit6770c64e5c8da4705d1f0973bdeb5c2bf4f3a404 (patch)
tree29e16383df94d4a31f6fec2f49f5ae84c369f911 /mm
parent451af504df0c62f695a69b83c250486e77c66378 (diff)
cgroup: replace cftype->trigger() with cftype->write()
cftype->trigger() is pointless. It's trivial to ignore the input buffer from a regular ->write() operation. Convert all ->trigger() users to ->write() and remove ->trigger(). This patch doesn't introduce any visible behavior changes. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Li Zefan <lizefan@huawei.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.cz>
Diffstat (limited to 'mm')
-rw-r--r--mm/hugetlb_cgroup.c16
-rw-r--r--mm/memcontrol.c34
2 files changed, 26 insertions, 24 deletions
diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c
index 191de26b0148..a380681ab3cf 100644
--- a/mm/hugetlb_cgroup.c
+++ b/mm/hugetlb_cgroup.c
@@ -284,14 +284,14 @@ static ssize_t hugetlb_cgroup_write(struct kernfs_open_file *of,
284 return ret ?: nbytes; 284 return ret ?: nbytes;
285} 285}
286 286
287static int hugetlb_cgroup_reset(struct cgroup_subsys_state *css, 287static ssize_t hugetlb_cgroup_reset(struct kernfs_open_file *of,
288 unsigned int event) 288 char *buf, size_t nbytes, loff_t off)
289{ 289{
290 int idx, name, ret = 0; 290 int idx, name, ret = 0;
291 struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(css); 291 struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(of_css(of));
292 292
293 idx = MEMFILE_IDX(event); 293 idx = MEMFILE_IDX(of_cft(of)->private);
294 name = MEMFILE_ATTR(event); 294 name = MEMFILE_ATTR(of_cft(of)->private);
295 295
296 switch (name) { 296 switch (name) {
297 case RES_MAX_USAGE: 297 case RES_MAX_USAGE:
@@ -304,7 +304,7 @@ static int hugetlb_cgroup_reset(struct cgroup_subsys_state *css,
304 ret = -EINVAL; 304 ret = -EINVAL;
305 break; 305 break;
306 } 306 }
307 return ret; 307 return ret ?: nbytes;
308} 308}
309 309
310static char *mem_fmt(char *buf, int size, unsigned long hsize) 310static char *mem_fmt(char *buf, int size, unsigned long hsize)
@@ -344,14 +344,14 @@ static void __init __hugetlb_cgroup_file_init(int idx)
344 cft = &h->cgroup_files[2]; 344 cft = &h->cgroup_files[2];
345 snprintf(cft->name, MAX_CFTYPE_NAME, "%s.max_usage_in_bytes", buf); 345 snprintf(cft->name, MAX_CFTYPE_NAME, "%s.max_usage_in_bytes", buf);
346 cft->private = MEMFILE_PRIVATE(idx, RES_MAX_USAGE); 346 cft->private = MEMFILE_PRIVATE(idx, RES_MAX_USAGE);
347 cft->trigger = hugetlb_cgroup_reset; 347 cft->write = hugetlb_cgroup_reset;
348 cft->read_u64 = hugetlb_cgroup_read_u64; 348 cft->read_u64 = hugetlb_cgroup_read_u64;
349 349
350 /* Add the failcntfile */ 350 /* Add the failcntfile */
351 cft = &h->cgroup_files[3]; 351 cft = &h->cgroup_files[3];
352 snprintf(cft->name, MAX_CFTYPE_NAME, "%s.failcnt", buf); 352 snprintf(cft->name, MAX_CFTYPE_NAME, "%s.failcnt", buf);
353 cft->private = MEMFILE_PRIVATE(idx, RES_FAILCNT); 353 cft->private = MEMFILE_PRIVATE(idx, RES_FAILCNT);
354 cft->trigger = hugetlb_cgroup_reset; 354 cft->write = hugetlb_cgroup_reset;
355 cft->read_u64 = hugetlb_cgroup_read_u64; 355 cft->read_u64 = hugetlb_cgroup_read_u64;
356 356
357 /* NULL terminate the last cft */ 357 /* NULL terminate the last cft */
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 7098a43f7447..b638a79209ee 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4887,14 +4887,15 @@ static int mem_cgroup_force_empty(struct mem_cgroup *memcg)
4887 return 0; 4887 return 0;
4888} 4888}
4889 4889
4890static int mem_cgroup_force_empty_write(struct cgroup_subsys_state *css, 4890static ssize_t mem_cgroup_force_empty_write(struct kernfs_open_file *of,
4891 unsigned int event) 4891 char *buf, size_t nbytes,
4892 loff_t off)
4892{ 4893{
4893 struct mem_cgroup *memcg = mem_cgroup_from_css(css); 4894 struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
4894 4895
4895 if (mem_cgroup_is_root(memcg)) 4896 if (mem_cgroup_is_root(memcg))
4896 return -EINVAL; 4897 return -EINVAL;
4897 return mem_cgroup_force_empty(memcg); 4898 return mem_cgroup_force_empty(memcg) ?: nbytes;
4898} 4899}
4899 4900
4900static u64 mem_cgroup_hierarchy_read(struct cgroup_subsys_state *css, 4901static u64 mem_cgroup_hierarchy_read(struct cgroup_subsys_state *css,
@@ -5220,14 +5221,15 @@ out:
5220 *memsw_limit = min_memsw_limit; 5221 *memsw_limit = min_memsw_limit;
5221} 5222}
5222 5223
5223static int mem_cgroup_reset(struct cgroup_subsys_state *css, unsigned int event) 5224static ssize_t mem_cgroup_reset(struct kernfs_open_file *of, char *buf,
5225 size_t nbytes, loff_t off)
5224{ 5226{
5225 struct mem_cgroup *memcg = mem_cgroup_from_css(css); 5227 struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
5226 int name; 5228 int name;
5227 enum res_type type; 5229 enum res_type type;
5228 5230
5229 type = MEMFILE_TYPE(event); 5231 type = MEMFILE_TYPE(of_cft(of)->private);
5230 name = MEMFILE_ATTR(event); 5232 name = MEMFILE_ATTR(of_cft(of)->private);
5231 5233
5232 switch (name) { 5234 switch (name) {
5233 case RES_MAX_USAGE: 5235 case RES_MAX_USAGE:
@@ -5252,7 +5254,7 @@ static int mem_cgroup_reset(struct cgroup_subsys_state *css, unsigned int event)
5252 break; 5254 break;
5253 } 5255 }
5254 5256
5255 return 0; 5257 return nbytes;
5256} 5258}
5257 5259
5258static u64 mem_cgroup_move_charge_read(struct cgroup_subsys_state *css, 5260static u64 mem_cgroup_move_charge_read(struct cgroup_subsys_state *css,
@@ -6105,7 +6107,7 @@ static struct cftype mem_cgroup_files[] = {
6105 { 6107 {
6106 .name = "max_usage_in_bytes", 6108 .name = "max_usage_in_bytes",
6107 .private = MEMFILE_PRIVATE(_MEM, RES_MAX_USAGE), 6109 .private = MEMFILE_PRIVATE(_MEM, RES_MAX_USAGE),
6108 .trigger = mem_cgroup_reset, 6110 .write = mem_cgroup_reset,
6109 .read_u64 = mem_cgroup_read_u64, 6111 .read_u64 = mem_cgroup_read_u64,
6110 }, 6112 },
6111 { 6113 {
@@ -6123,7 +6125,7 @@ static struct cftype mem_cgroup_files[] = {
6123 { 6125 {
6124 .name = "failcnt", 6126 .name = "failcnt",
6125 .private = MEMFILE_PRIVATE(_MEM, RES_FAILCNT), 6127 .private = MEMFILE_PRIVATE(_MEM, RES_FAILCNT),
6126 .trigger = mem_cgroup_reset, 6128 .write = mem_cgroup_reset,
6127 .read_u64 = mem_cgroup_read_u64, 6129 .read_u64 = mem_cgroup_read_u64,
6128 }, 6130 },
6129 { 6131 {
@@ -6132,7 +6134,7 @@ static struct cftype mem_cgroup_files[] = {
6132 }, 6134 },
6133 { 6135 {
6134 .name = "force_empty", 6136 .name = "force_empty",
6135 .trigger = mem_cgroup_force_empty_write, 6137 .write = mem_cgroup_force_empty_write,
6136 }, 6138 },
6137 { 6139 {
6138 .name = "use_hierarchy", 6140 .name = "use_hierarchy",
@@ -6186,13 +6188,13 @@ static struct cftype mem_cgroup_files[] = {
6186 { 6188 {
6187 .name = "kmem.failcnt", 6189 .name = "kmem.failcnt",
6188 .private = MEMFILE_PRIVATE(_KMEM, RES_FAILCNT), 6190 .private = MEMFILE_PRIVATE(_KMEM, RES_FAILCNT),
6189 .trigger = mem_cgroup_reset, 6191 .write = mem_cgroup_reset,
6190 .read_u64 = mem_cgroup_read_u64, 6192 .read_u64 = mem_cgroup_read_u64,
6191 }, 6193 },
6192 { 6194 {
6193 .name = "kmem.max_usage_in_bytes", 6195 .name = "kmem.max_usage_in_bytes",
6194 .private = MEMFILE_PRIVATE(_KMEM, RES_MAX_USAGE), 6196 .private = MEMFILE_PRIVATE(_KMEM, RES_MAX_USAGE),
6195 .trigger = mem_cgroup_reset, 6197 .write = mem_cgroup_reset,
6196 .read_u64 = mem_cgroup_read_u64, 6198 .read_u64 = mem_cgroup_read_u64,
6197 }, 6199 },
6198#ifdef CONFIG_SLABINFO 6200#ifdef CONFIG_SLABINFO
@@ -6215,7 +6217,7 @@ static struct cftype memsw_cgroup_files[] = {
6215 { 6217 {
6216 .name = "memsw.max_usage_in_bytes", 6218 .name = "memsw.max_usage_in_bytes",
6217 .private = MEMFILE_PRIVATE(_MEMSWAP, RES_MAX_USAGE), 6219 .private = MEMFILE_PRIVATE(_MEMSWAP, RES_MAX_USAGE),
6218 .trigger = mem_cgroup_reset, 6220 .write = mem_cgroup_reset,
6219 .read_u64 = mem_cgroup_read_u64, 6221 .read_u64 = mem_cgroup_read_u64,
6220 }, 6222 },
6221 { 6223 {
@@ -6227,7 +6229,7 @@ static struct cftype memsw_cgroup_files[] = {
6227 { 6229 {
6228 .name = "memsw.failcnt", 6230 .name = "memsw.failcnt",
6229 .private = MEMFILE_PRIVATE(_MEMSWAP, RES_FAILCNT), 6231 .private = MEMFILE_PRIVATE(_MEMSWAP, RES_FAILCNT),
6230 .trigger = mem_cgroup_reset, 6232 .write = mem_cgroup_reset,
6231 .read_u64 = mem_cgroup_read_u64, 6233 .read_u64 = mem_cgroup_read_u64,
6232 }, 6234 },
6233 { }, /* terminate */ 6235 { }, /* terminate */