From bef3444b5ece978439f310bc2f5605ba54f1aa27 Mon Sep 17 00:00:00 2001 From: Johannes Weiner Date: Tue, 1 Feb 2011 15:52:42 -0800 Subject: [PATCH] --- yaml --- r: 232732 b: refs/heads/master c: 9221edb7120e2dc3ae90f1c58514979f7ba40e46 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/memcontrol.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index c4cc846ea431..dda1a69dab8b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: af241a083404acda7ba3690e5b7697949d729fcc +refs/heads/master: 9221edb7120e2dc3ae90f1c58514979f7ba40e46 diff --git a/trunk/mm/memcontrol.c b/trunk/mm/memcontrol.c index 79abb1fd39d2..50eb50e100fd 100644 --- a/trunk/mm/memcontrol.c +++ b/trunk/mm/memcontrol.c @@ -1837,8 +1837,15 @@ static int __mem_cgroup_do_charge(struct mem_cgroup *mem, gfp_t gfp_mask, flags |= MEM_CGROUP_RECLAIM_NOSWAP; } else mem_over_limit = mem_cgroup_from_res_counter(fail_res, res); - - if (csize > PAGE_SIZE) /* change csize and retry */ + /* + * csize can be either a huge page (HPAGE_SIZE), a batch of + * regular pages (CHARGE_SIZE), or a single regular page + * (PAGE_SIZE). + * + * Never reclaim on behalf of optional batching, retry with a + * single page instead. + */ + if (csize == CHARGE_SIZE) return CHARGE_RETRY; if (!(gfp_mask & __GFP_WAIT))