> @@ -2561,17 +2580,23 @@ static void shrink_zones(struct zonelist *zonelist,
> struct scan_control *sc)
> * highmem pages could be pinning lowmem pages storing buffer_heads
> */
> orig_mask = sc->gfp_mask;
> - if (buffer_heads_over_limit)
> + if (buffer_heads_over_limit) {
> sc->gfp_mask |= __GFP_HIGHMEM;
> + sc->reclaim_idx = classzone_idx = gfp_zone(sc->gfp_mask);
> + }
>
We need to push/pop ->reclaim_idx as ->gfp_mask handled?thanks Hillf

