On 10.05.2018 01:55, Andrew Morton wrote: > On Wed, 09 May 2018 14:56:55 +0300 Kirill Tkhai <ktkhai@xxxxxxxxxxxxx> wrote: > >> The patch introduces shrinker::id number, which is used to enumerate >> memcg-aware shrinkers. The number start from 0, and the code tries >> to maintain it as small as possible. >> >> This will be used as to represent a memcg-aware shrinkers in memcg >> shrinkers map. >> >> ... >> >> --- a/fs/super.c >> +++ b/fs/super.c >> @@ -248,6 +248,9 @@ static struct super_block *alloc_super(struct file_system_type *type, int flags, >> s->s_time_gran = 1000000000; >> s->cleancache_poolid = CLEANCACHE_NO_POOL; >> >> +#if defined(CONFIG_MEMCG) && !defined(CONFIG_SLOB) > > It would be more conventional to do this logic in Kconfig - define a > new MEMCG_SHRINKER which equals MEMCG && !SLOB. > > This ifdef occurs a distressing number of times in the patchset :( I > wonder if there's something we can do about that. > > Also, why doesn't it work with slob? Please describe the issue in the > changelogs somewhere. All currently existing memcg-aware shrinkers are based on list_lru, which does not introduce separate memcg lists for SLOB case. So, the optimization made by this patchset is not need there. I'll make MEMCG_SHRINKER in next version like you suggested. Even if we have no such shrinkers at the moment, we may have them in the future, and this will be useful anyway. > It's a pretty big patchset. I *could* merge it up in the hope that > someone is planning do do a review soon. But is there such a person? Thanks, Kirill