On Thu, Jul 11, 2019 at 2:41 AM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > > > From: Yang Shi <yang.shi@xxxxxxxxxxxxxxxxx> > Subject: mm: shrinker: make shrinker not depend on memcg kmem > > Currently shrinker is just allocated and can work when memcg kmem is > enabled. But, THP deferred split shrinker is not slab shrinker, it > doesn't make too much sense to have such shrinker depend on memcg kmem. > It should be able to reclaim THP even though memcg kmem is disabled. > > Introduce a new shrinker flag, SHRINKER_NONSLAB, for non-slab shrinker. > When memcg kmem is disabled, just such shrinkers can be called in > shrinking memcg slab. > Today's linux-next again fails without CONFIG_MEMCG_KMEM: mm/vmscan.c:220:7: error: implicit declaration of function 'memcg_expand_shrinker_maps' [-Werror,-Wimplicit-function-declaration] if (memcg_expand_shrinker_maps(id)) { ^ mm/vmscan.c:608:56: error: no member named 'shrinker_map' in 'struct mem_cgroup_per_node' map = rcu_dereference_protected(memcg->nodeinfo[nid]->shrinker_map, ~~~~~~~~~~~~~~~~~~~~ ^ Arnd