From: Johannes Weiner <hannes@xxxxxxxxxxx>
Subject: [patch] mm: vmscan: fix endless loop in kswapd balancing
Kswapd does not in all places have the same criteria for when it
considers a zone balanced. This leads to zones being not reclaimed
because they are considered just fine and the compaction checks to
loop over the zonelist again because they are considered unbalanced,
causing kswapd to run forever.
Add a function, zone_balanced(), that checks the watermark and if
compaction has enough free memory to do its job. Then use it
uniformly for when kswapd needs to check if a zone is balanced.
Signed-off-by: Johannes Weiner <hannes@xxxxxxxxxxx>