--- a/mm/vmscan.c~mm-vmscan-never-demote-for-memcg-reclaim +++ a/mm/vmscan.c @@ -524,8 +524,13 @@ static long add_nr_deferred(long nr, str static bool can_demote(int nid, struct scan_control *sc) { - if (sc && sc->no_demotion) - return false; + if (sc) { + if (sc->no_demotion) + return false; + /* It is pointless to do demotion in memcg reclaim */ + if (cgroup_reclaim(sc)) + return false; + } if (next_demotion_node(nid) == NUMA_NO_NODE) return false;