memcgroup: implement failcounter reset

This is a very common requirement from people using the resource accounting
facilities (not only memcgroup but also OpenVZ beancounters).  They want to
put the cgroup in an initial state without re-creating it.

For example after re-configuring a group people want to observe how this new
configuration fits the group needs without saving the previous failcnt value.

Merge two resets into one mem_cgroup_reset() function to demonstrate how
multiplexing work.

Besides, I have plans to move the files, that correspond to res_counter to the
res_counter.c file and somehow "import" them into controller.  I don't know
how to make it gracefully yet, but merging resets of max_usage and failcnt in
one function will be there for sure.

[[email protected]: coding-style fixes]
Signed-off-by: Pavel Emelyanov <[email protected]>
Acked-by: KAMEZAWA Hiroyuki <[email protected]>
Cc: Balbir Singh <[email protected]>
Cc: Paul Menage <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
Pavel Emelyanov 2008-04-29 01:00:21 -07:00 • committed by Linus Torvalds
commit 29f2a4dac8
2 changed files with 19 additions and 3 deletions

View file

@ -857,12 +857,19 @@ static ssize_t mem_cgroup_write(struct cgroup *cont, struct cftype *cft,
mem_cgroup_write_strategy);
}
static int mem_cgroup_max_reset(struct cgroup *cont, unsigned int event)
static int mem_cgroup_reset(struct cgroup *cont, unsigned int event)
{
struct mem_cgroup *mem;
mem = mem_cgroup_from_cont(cont);
res_counter_reset_max(&mem->res);
switch (event) {
case RES_MAX_USAGE:
res_counter_reset_max(&mem->res);
break;
case RES_FAILCNT:
res_counter_reset_failcnt(&mem->res);
break;
}
return 0;
}
@ -916,7 +923,7 @@ static struct cftype mem_cgroup_files[] = {
{
.name = "max_usage_in_bytes",
.private = RES_MAX_USAGE,
.trigger = mem_cgroup_max_reset,
.trigger = mem_cgroup_reset,
.read_u64 = mem_cgroup_read,
},
{
@ -928,6 +935,7 @@ static struct cftype mem_cgroup_files[] = {
{
.name = "failcnt",
.private = RES_FAILCNT,
.trigger = mem_cgroup_reset,
.read_u64 = mem_cgroup_read,
},
{