Re: [PATCH v6 23/29] memcg: destroy memcg caches

Andrew Morton
2012-11-02T00:05:53Z

On Thu, 1 Nov 2012 16:07:39 +0400
Glauber Costa <glommer@parallels.com> wrote:

> This patch implements destruction of memcg caches. Right now,
> only caches where our reference counter is the last remaining are
> deleted. If there are any other reference counters around, we just
> leave the caches lying around until they go away.
>
> When that happen, a destruction function is called from the cache
> code. Caches are only destroyed in process context, so we queue them
> up for later processing in the general case.
>
>
> ...
>
> @@ -5950,6 +6012,7 @@ static int mem_cgroup_pre_destroy(struct cgroup *cont)
> {
> struct mem_cgroup *memcg = mem_cgroup_from_cont(cont);
>
> + mem_cgroup_destroy_all_caches(memcg);
> return mem_cgroup_force_empty(memcg, false);
> }
>

Conflicts with linux-next cgroup changes. Looks pretty simple:

static int mem_cgroup_pre_destroy(struct cgroup *cont)
{
struct mem_cgroup *memcg = mem_cgroup_from_cont(cont);
int ret;

css_get(&memcg->css);
ret = mem_cgroup_reparent_charges(memcg);
mem_cgroup_destroy_all_caches(memcg);
css_put(&memcg->css);

return ret;
}