X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=mm%2Fcompaction.c;fp=mm%2Fcompaction.c;h=4d709ee5901370842534224a9f81e7d13943e196;hb=bc6930457460788e14b2c0808ed4632a1592bd61;hp=94cce51b0b3535af75c20f29ecb86a11aba32a71;hpb=1c24de60e50fb19b94d94225458da17c720f0729;p=mv-sheeva.git diff --git a/mm/compaction.c b/mm/compaction.c index 94cce51b0b3..4d709ee5901 100644 --- a/mm/compaction.c +++ b/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; } /*