diff --git a/[refs] b/[refs] index 673550a2241c..35eb73d52f46 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1c24de60e50fb19b94d94225458da17c720f0729 +refs/heads/master: bc6930457460788e14b2c0808ed4632a1592bd61 diff --git a/trunk/mm/compaction.c b/trunk/mm/compaction.c index 94cce51b0b35..4d709ee59013 100644 --- a/trunk/mm/compaction.c +++ b/trunk/mm/compaction.c @@ -214,15 +214,16 @@ static void acct_isolated(struct zone *zone, struct compact_control *cc) /* Similar to reclaim, but different enough that they don't share logic */ static bool too_many_isolated(struct zone *zone) { - - unsigned long inactive, isolated; + unsigned long active, inactive, isolated; inactive = zone_page_state(zone, NR_INACTIVE_FILE) + zone_page_state(zone, NR_INACTIVE_ANON); + active = zone_page_state(zone, NR_ACTIVE_FILE) + + zone_page_state(zone, NR_ACTIVE_ANON); isolated = zone_page_state(zone, NR_ISOLATED_FILE) + zone_page_state(zone, NR_ISOLATED_ANON); - return isolated > inactive; + return isolated > (inactive + active) / 2; } /*