Re: [PATCH] mm: vmscan: reclaim highmem zone if buffer_heads is over limit

From: Andrew Morton
Date: Tue Apr 05 2016 - 16:37:24 EST


On Mon, 4 Apr 2016 08:46:09 +0900 Minchan Kim <minchan@xxxxxxxxxx> wrote:

> We have been reclaimed highmem zone if buffer_heads is over limit
> but [1] changed the behavior so it doesn't reclaim highmem zone
> although buffer_heads is over the limit.
> This patch restores the logic.
>
> [1] commit 6b4f7799c6a5 ("mm: vmscan: invoke slab shrinkers from shrink_zone()")
>
> ...
>
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -2550,7 +2550,7 @@ static void shrink_zones(struct zonelist *zonelist, struct scan_control *sc)
> sc->gfp_mask |= __GFP_HIGHMEM;
>
> for_each_zone_zonelist_nodemask(zone, z, zonelist,
> - requested_highidx, sc->nodemask) {
> + gfp_zone(sc->gfp_mask), sc->nodemask) {
> enum zone_type classzone_idx;
>
> if (!populated_zone(zone))

Wait wut wot. We broke this over a year ago? Highmem pagecache pages
pinning buffer_head lowmem used to be a huuuge problem. Before most of
you were born ;)