diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-04-29 04:00:20 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-29 11:06:10 -0400 |
commit | 85cc59db12724e1248f5e4841e61339cf485d5c7 (patch) | |
tree | 960340cafba30181a1e2f60c93cd54a6fdb637ff /mm/memcontrol.c | |
parent | b6ac57d50a375aa2f267e1b2b56c46564a936d00 (diff) |
memcgroup: use triggers in force_empty and max_usage files
These two files are essentially event callbacks. They do not care about the
contents of the string, but only about the fact of the write itself.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Paul Menage <menage@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r-- | mm/memcontrol.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index f4079692cbf5..dc3472f9f68c 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -857,27 +857,18 @@ static ssize_t mem_cgroup_write(struct cgroup *cont, struct cftype *cft, | |||
857 | mem_cgroup_write_strategy); | 857 | mem_cgroup_write_strategy); |
858 | } | 858 | } |
859 | 859 | ||
860 | static ssize_t mem_cgroup_max_reset(struct cgroup *cont, struct cftype *cft, | 860 | static int mem_cgroup_max_reset(struct cgroup *cont, unsigned int event) |
861 | struct file *file, const char __user *userbuf, | ||
862 | size_t nbytes, loff_t *ppos) | ||
863 | { | 861 | { |
864 | struct mem_cgroup *mem; | 862 | struct mem_cgroup *mem; |
865 | 863 | ||
866 | mem = mem_cgroup_from_cont(cont); | 864 | mem = mem_cgroup_from_cont(cont); |
867 | res_counter_reset_max(&mem->res); | 865 | res_counter_reset_max(&mem->res); |
868 | return nbytes; | 866 | return 0; |
869 | } | 867 | } |
870 | 868 | ||
871 | static ssize_t mem_force_empty_write(struct cgroup *cont, | 869 | static int mem_force_empty_write(struct cgroup *cont, unsigned int event) |
872 | struct cftype *cft, struct file *file, | ||
873 | const char __user *userbuf, | ||
874 | size_t nbytes, loff_t *ppos) | ||
875 | { | 870 | { |
876 | struct mem_cgroup *mem = mem_cgroup_from_cont(cont); | 871 | return mem_cgroup_force_empty(mem_cgroup_from_cont(cont)); |
877 | int ret = mem_cgroup_force_empty(mem); | ||
878 | if (!ret) | ||
879 | ret = nbytes; | ||
880 | return ret; | ||
881 | } | 872 | } |
882 | 873 | ||
883 | static const struct mem_cgroup_stat_desc { | 874 | static const struct mem_cgroup_stat_desc { |
@@ -925,7 +916,7 @@ static struct cftype mem_cgroup_files[] = { | |||
925 | { | 916 | { |
926 | .name = "max_usage_in_bytes", | 917 | .name = "max_usage_in_bytes", |
927 | .private = RES_MAX_USAGE, | 918 | .private = RES_MAX_USAGE, |
928 | .write = mem_cgroup_max_reset, | 919 | .trigger = mem_cgroup_max_reset, |
929 | .read_u64 = mem_cgroup_read, | 920 | .read_u64 = mem_cgroup_read, |
930 | }, | 921 | }, |
931 | { | 922 | { |
@@ -941,7 +932,7 @@ static struct cftype mem_cgroup_files[] = { | |||
941 | }, | 932 | }, |
942 | { | 933 | { |
943 | .name = "force_empty", | 934 | .name = "force_empty", |
944 | .write = mem_force_empty_write, | 935 | .trigger = mem_force_empty_write, |
945 | }, | 936 | }, |
946 | { | 937 | { |
947 | .name = "stat", | 938 | .name = "stat", |