>> @@ -45,6 +48,7 @@ struct shrinker { >> >> int seeks; /* seeks to recreate an obj */ >> long batch; /* reclaim batch size, 0 = default */ >> + bool memcg_shrinker; >> > > What is this boolean for ? When is this set ? It is set when a subsystem declares that its shrinker is memcg capable. Therefore, it won't be done until all infrastructure is in place. Take a look at the super.c patches at the end of the series. >> static bool global_reclaim(struct scan_control *sc) >> { >> return true; >> } >> + >> +static bool has_kmem_reclaim(struct scan_control *sc) >> +{ >> + return true; >> +} >> + >> +static unsigned long >> +zone_nr_reclaimable_pages(struct scan_control *sc, struct zone *zone) >> +{ >> + return zone_reclaimable_pages(zone); >> +} >> #endif > > Can't be in a devided patch ? > if you prefer this way, sure, I can separate it. >> static unsigned long get_lru_size(struct lruvec *lruvec, enum lru_list lru) >> @@ -221,6 +252,9 @@ unsigned long shrink_slab(struct shrink_control *sc, >> long batch_size = shrinker->batch ? shrinker->batch >> : SHRINK_BATCH; >> >> + if (!shrinker->memcg_shrinker && sc->target_mem_cgroup) >> + continue; >> + > > What does this mean ? It means that if target_mem_cgroup is set, we should skip all the shrinkers that are not memcg capable. Maybe if I invert the order it will be clearer? -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html