Re: [PATCH RFC 3/3] mm, vmscan: correct prepare_kswapd_sleep return value

From: Rik van Riel
Date: Tue Jan 24 2017 - 17:01:27 EST


On Tue, 2017-01-24 at 15:49 +0800, Jia He wrote:
> When there is no reclaimable pages in the zone, even the zone is
> not balanced, we let kswapd go sleeping. That is prepare_kswapd_sleep
> will return true in this case.
>
> Signed-off-by: Jia He <hejianet@xxxxxxxxx>
> ---
> Âmm/vmscan.c | 3 ++-
> Â1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 7396a0a..54445e2 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -3140,7 +3140,8 @@ static bool prepare_kswapd_sleep(pg_data_t
> *pgdat, int order, int classzone_idx)
> Â if (!managed_zone(zone))
> Â continue;
> Â
> - if (!zone_balanced(zone, order, classzone_idx))
> + if (!zone_balanced(zone, order, classzone_idx)
> + && !zone_reclaimable_pages(zone))
> Â return false;
> Â }

This patch does the opposite of what your changelog
says. The above keeps kswapd running forever if
the zone is not balanced, and there are no reclaimable
pages.