]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
mm: memcontrol: remove the kmem states
authorMuchun Song <songmuchun@bytedance.com>
Fri, 5 Nov 2021 20:37:56 +0000 (13:37 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Nov 2021 20:30:35 +0000 (13:30 -0700)
Now the kmem states is only used to indicate whether the kmem is
offline.  However, we can set ->kmemcg_id to -1 to indicate whether the
kmem is offline.  Finally, we can remove the kmem states to simplify the
code.

Link: https://lkml.kernel.org/r/20211025125259.56624-1-songmuchun@bytedance.com
Signed-off-by: Muchun Song <songmuchun@bytedance.com>
Acked-by: Roman Gushchin <guro@fb.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/memcontrol.h
mm/memcontrol.c

index 3096c9a0ee014fc3859d3b6d2fa7b9c9938d4690..f207f98bdb76b67b30a32fce1f35916d417a8d8d 100644 (file)
@@ -180,12 +180,6 @@ struct mem_cgroup_thresholds {
        struct mem_cgroup_threshold_ary *spare;
 };
 
-enum memcg_kmem_state {
-       KMEM_NONE,
-       KMEM_ALLOCATED,
-       KMEM_ONLINE,
-};
-
 #if defined(CONFIG_SMP)
 struct memcg_padding {
        char x[0];
@@ -318,7 +312,6 @@ struct mem_cgroup {
 
 #ifdef CONFIG_MEMCG_KMEM
        int kmemcg_id;
-       enum memcg_kmem_state kmem_state;
        struct obj_cgroup __rcu *objcg;
        struct list_head objcg_list; /* list of inherited objcgs */
 #endif
index 1e2d3f378edd458a91febd5f9be39efa552d9c67..b4a17b7a10d35033a8a211683d11da3fd329dcea 100644 (file)
@@ -3626,7 +3626,6 @@ static int memcg_online_kmem(struct mem_cgroup *memcg)
                return 0;
 
        BUG_ON(memcg->kmemcg_id >= 0);
-       BUG_ON(memcg->kmem_state);
 
        memcg_id = memcg_alloc_cache_id();
        if (memcg_id < 0)
@@ -3643,7 +3642,6 @@ static int memcg_online_kmem(struct mem_cgroup *memcg)
        static_branch_enable(&memcg_kmem_enabled_key);
 
        memcg->kmemcg_id = memcg_id;
-       memcg->kmem_state = KMEM_ONLINE;
 
        return 0;
 }
@@ -3653,11 +3651,9 @@ static void memcg_offline_kmem(struct mem_cgroup *memcg)
        struct mem_cgroup *parent;
        int kmemcg_id;
 
-       if (memcg->kmem_state != KMEM_ONLINE)
+       if (memcg->kmemcg_id == -1)
                return;
 
-       memcg->kmem_state = KMEM_ALLOCATED;
-
        parent = parent_mem_cgroup(memcg);
        if (!parent)
                parent = root_mem_cgroup;
@@ -3676,6 +3672,7 @@ static void memcg_offline_kmem(struct mem_cgroup *memcg)
        memcg_drain_all_list_lrus(kmemcg_id, parent);
 
        memcg_free_cache_id(kmemcg_id);
+       memcg->kmemcg_id = -1;
 }
 #else
 static int memcg_online_kmem(struct mem_cgroup *memcg)