Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 336113
b: refs/heads/master
c: 60cefed
h: refs/heads/master
i:
  336111: 86fa201
v: v3
  • Loading branch information
Johannes Weiner authored and Linus Torvalds committed Nov 30, 2012
1 parent cfea98a commit 078aedd
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ae64ffcac35de0db628ba9631edf8ff34c5cd7ac
refs/heads/master: 60cefed485a02bd99b6299dad70666fe49245da7
27 changes: 18 additions & 9 deletions trunk/mm/vmscan.c
Original file line number Diff line number Diff line change
Expand Up @@ -2414,6 +2414,19 @@ static void age_active_anon(struct zone *zone, struct scan_control *sc)
} while (memcg);
}

static bool zone_balanced(struct zone *zone, int order,
unsigned long balance_gap, int classzone_idx)
{
if (!zone_watermark_ok_safe(zone, order, high_wmark_pages(zone) +
balance_gap, classzone_idx, 0))
return false;

if (COMPACTION_BUILD && order && !compaction_suitable(zone, order))
return false;

return true;
}

/*
* pgdat_balanced is used when checking if a node is balanced for high-order
* allocations. Only zones that meet watermarks and are in a zone allowed
Expand Down Expand Up @@ -2492,8 +2505,7 @@ static bool prepare_kswapd_sleep(pg_data_t *pgdat, int order, long remaining,
continue;
}

if (!zone_watermark_ok_safe(zone, order, high_wmark_pages(zone),
i, 0))
if (!zone_balanced(zone, order, 0, i))
all_zones_ok = false;
else
balanced += zone->present_pages;
Expand Down Expand Up @@ -2602,8 +2614,7 @@ static unsigned long balance_pgdat(pg_data_t *pgdat, int order,
break;
}

if (!zone_watermark_ok_safe(zone, order,
high_wmark_pages(zone), 0, 0)) {
if (!zone_balanced(zone, order, 0, 0)) {
end_zone = i;
break;
} else {
Expand Down Expand Up @@ -2679,9 +2690,8 @@ static unsigned long balance_pgdat(pg_data_t *pgdat, int order,
testorder = 0;

if ((buffer_heads_over_limit && is_highmem_idx(i)) ||
!zone_watermark_ok_safe(zone, testorder,
high_wmark_pages(zone) + balance_gap,
end_zone, 0)) {
!zone_balanced(zone, testorder,
balance_gap, end_zone)) {
shrink_zone(zone, &sc);

reclaim_state->reclaimed_slab = 0;
Expand All @@ -2708,8 +2718,7 @@ static unsigned long balance_pgdat(pg_data_t *pgdat, int order,
continue;
}

if (!zone_watermark_ok_safe(zone, testorder,
high_wmark_pages(zone), end_zone, 0)) {
if (!zone_balanced(zone, testorder, 0, end_zone)) {
all_zones_ok = 0;
/*
* We are still under min water mark. This
Expand Down

0 comments on commit 078aedd

Please sign in to comment.