mm: memcg/percpu: per-memcg percpu memory statistics
[linux-2.6-microblaze.git] / mm / percpu.c
index dc1a213..f470962 100644 (file)
@@ -1610,6 +1610,11 @@ static void pcpu_memcg_post_alloc_hook(struct obj_cgroup *objcg,
 
        if (chunk) {
                chunk->obj_cgroups[off >> PCPU_MIN_ALLOC_SHIFT] = objcg;
+
+               rcu_read_lock();
+               mod_memcg_state(obj_cgroup_memcg(objcg), MEMCG_PERCPU_B,
+                               size * num_possible_cpus());
+               rcu_read_unlock();
        } else {
                obj_cgroup_uncharge(objcg, size * num_possible_cpus());
                obj_cgroup_put(objcg);
@@ -1628,6 +1633,11 @@ static void pcpu_memcg_free_hook(struct pcpu_chunk *chunk, int off, size_t size)
 
        obj_cgroup_uncharge(objcg, size * num_possible_cpus());
 
+       rcu_read_lock();
+       mod_memcg_state(obj_cgroup_memcg(objcg), MEMCG_PERCPU_B,
+                       -(size * num_possible_cpus()));
+       rcu_read_unlock();
+
        obj_cgroup_put(objcg);
 }