diff options
author | David Rientjes <rientjes@google.com> | 2017-04-07 19:05:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-04-08 03:47:49 -0400 |
commit | 460bcec84e11c75122ace5976214abbc596eb91b (patch) | |
tree | d73d64a305d28d8bf9a0389b021aa543f18e223b | |
parent | e11f8b7b6c4ea13bf8af6b8f42b45e15b554a92b (diff) |
mm, swap_cgroup: reschedule when neeed in swap_cgroup_swapoff()
We got need_resched() warnings in swap_cgroup_swapoff() because
swap_cgroup_ctrl[type].length is particularly large.
Reschedule when needed.
Link: http://lkml.kernel.org/r/alpine.DEB.2.10.1704061315270.80559@chino.kir.corp.google.com
Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | mm/swap_cgroup.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/mm/swap_cgroup.c b/mm/swap_cgroup.c index 310ac0b8f974..ac6318a064d3 100644 --- a/mm/swap_cgroup.c +++ b/mm/swap_cgroup.c | |||
@@ -201,6 +201,8 @@ void swap_cgroup_swapoff(int type) | |||
201 | struct page *page = map[i]; | 201 | struct page *page = map[i]; |
202 | if (page) | 202 | if (page) |
203 | __free_page(page); | 203 | __free_page(page); |
204 | if (!(i % SWAP_CLUSTER_MAX)) | ||
205 | cond_resched(); | ||
204 | } | 206 | } |
205 | vfree(map); | 207 | vfree(map); |
206 | } | 208 | } |