aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 580a5f075ed0..5248fe070aa4 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1816,7 +1816,7 @@ static void zlc_clear_zones_full(struct zonelist *zonelist)
1816 1816
1817static bool zone_local(struct zone *local_zone, struct zone *zone) 1817static bool zone_local(struct zone *local_zone, struct zone *zone)
1818{ 1818{
1819 return node_distance(local_zone->node, zone->node) == LOCAL_DISTANCE; 1819 return local_zone->node == zone->node;
1820} 1820}
1821 1821
1822static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone) 1822static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
@@ -1913,18 +1913,17 @@ zonelist_scan:
1913 * page was allocated in should have no effect on the 1913 * page was allocated in should have no effect on the
1914 * time the page has in memory before being reclaimed. 1914 * time the page has in memory before being reclaimed.
1915 * 1915 *
1916 * When zone_reclaim_mode is enabled, try to stay in 1916 * Try to stay in local zones in the fastpath. If
1917 * local zones in the fastpath. If that fails, the 1917 * that fails, the slowpath is entered, which will do
1918 * slowpath is entered, which will do another pass 1918 * another pass starting with the local zones, but
1919 * starting with the local zones, but ultimately fall 1919 * ultimately fall back to remote zones that do not
1920 * back to remote zones that do not partake in the 1920 * partake in the fairness round-robin cycle of this
1921 * fairness round-robin cycle of this zonelist. 1921 * zonelist.
1922 */ 1922 */
1923 if (alloc_flags & ALLOC_WMARK_LOW) { 1923 if (alloc_flags & ALLOC_WMARK_LOW) {
1924 if (zone_page_state(zone, NR_ALLOC_BATCH) <= 0) 1924 if (zone_page_state(zone, NR_ALLOC_BATCH) <= 0)
1925 continue; 1925 continue;
1926 if (zone_reclaim_mode && 1926 if (!zone_local(preferred_zone, zone))
1927 !zone_local(preferred_zone, zone))
1928 continue; 1927 continue;
1929 } 1928 }
1930 /* 1929 /*
@@ -2390,7 +2389,7 @@ static void prepare_slowpath(gfp_t gfp_mask, unsigned int order,
2390 * thrash fairness information for zones that are not 2389 * thrash fairness information for zones that are not
2391 * actually part of this zonelist's round-robin cycle. 2390 * actually part of this zonelist's round-robin cycle.
2392 */ 2391 */
2393 if (zone_reclaim_mode && !zone_local(preferred_zone, zone)) 2392 if (!zone_local(preferred_zone, zone))
2394 continue; 2393 continue;
2395 mod_zone_page_state(zone, NR_ALLOC_BATCH, 2394 mod_zone_page_state(zone, NR_ALLOC_BATCH,
2396 high_wmark_pages(zone) - 2395 high_wmark_pages(zone) -