mm: memcg/slab: deprecate slab_root_caches

Currently there are two lists of kmem_caches:
1) slab_caches, which contains all kmem_caches,
2) slab_root_caches, which contains only root kmem_caches.

And there is some preprocessor magic to have a single list if
CONFIG_MEMCG_KMEM isn't enabled.

It was required earlier because the number of non-root kmem_caches was
proportional to the number of memory cgroups and could reach really big
values.  Now, when it cannot exceed the number of root kmem_caches, there
is really no reason to maintain two lists.

We never iterate over the slab_root_caches list on any hot paths, so it's
perfectly fine to iterate over slab_caches and filter out non-root

It allows to remove a lot of config-dependent code and two pointers from
the kmem_cache structure.

Signed-off-by: Roman Gushchin <>
Signed-off-by: Andrew Morton <>
Reviewed-by: Vlastimil Babka <>
Reviewed-by: Shakeel Butt <>
Cc: Christoph Lameter <>
Cc: Johannes Weiner <>
Cc: Michal Hocko <>
Cc: Tejun Heo <>
Signed-off-by: Linus Torvalds <>
4 files changed