mm: memcontrol: retry reclaim for oom-disabled and __GFP_NOFAIL charges
There is no reason why oom-disabled and __GFP_NOFAIL charges should try to reclaim only once when every other charge tries several times before giving up. Make them all retry the same number of times. Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Acked-by: Michal Hocko <mhocko@suse.cz> Cc: Hugh Dickins <hughd@google.com> Cc: Tejun Heo <tj@kernel.org> Cc: Vladimir Davydov <vdavydov@parallels.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
d51d885bbb
commit
9b1306192d
1 changed files with 4 additions and 4 deletions
|
@ -2566,7 +2566,7 @@ static int mem_cgroup_try_charge(struct mem_cgroup *memcg,
|
|||
bool oom)
|
||||
{
|
||||
unsigned int batch = max(CHARGE_BATCH, nr_pages);
|
||||
int nr_oom_retries = MEM_CGROUP_RECLAIM_RETRIES;
|
||||
int nr_retries = MEM_CGROUP_RECLAIM_RETRIES;
|
||||
struct mem_cgroup *mem_over_limit;
|
||||
struct res_counter *fail_res;
|
||||
unsigned long nr_reclaimed;
|
||||
|
@ -2638,6 +2638,9 @@ retry:
|
|||
if (mem_cgroup_wait_acct_move(mem_over_limit))
|
||||
goto retry;
|
||||
|
||||
if (nr_retries--)
|
||||
goto retry;
|
||||
|
||||
if (gfp_mask & __GFP_NOFAIL)
|
||||
goto bypass;
|
||||
|
||||
|
@ -2647,9 +2650,6 @@ retry:
|
|||
if (!oom)
|
||||
goto nomem;
|
||||
|
||||
if (nr_oom_retries--)
|
||||
goto retry;
|
||||
|
||||
mem_cgroup_oom(mem_over_limit, gfp_mask, get_order(batch));
|
||||
nomem:
|
||||
if (!(gfp_mask & __GFP_NOFAIL))
|
||||
|
|
Loading…
Reference in a new issue