diff options
author | David Rientjes <rientjes@google.com> | 2008-02-07 03:14:06 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 11:42:19 -0500 |
commit | 4c4a22148909e4c003562ea7ffe0a06e26919e3c (patch) | |
tree | fa8b7d00e89f0eb4cdb4394dbc74d898810519aa /mm/memcontrol.c | |
parent | 4c6bc8dd5a0932f2c0b30a5f0a124464b7f614d0 (diff) |
memcontrol: move oom task exclusion to tasklist scan
Creates a helper function to return non-zero if a task is a member of a
memory controller:
int task_in_mem_cgroup(const struct task_struct *task,
const struct mem_cgroup *mem);
When the OOM killer is constrained by the memory controller, the exclusion
of tasks that are not a member of that controller was previously misplaced
and appeared in the badness scoring function. It should be excluded
during the tasklist scan in select_bad_process() instead.
[akpm@linux-foundation.org: build fix]
Cc: Christoph Lameter <clameter@sgi.com>
Cc: Balbir Singh <balbir@linux.vnet.ibm.com>
Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r-- | mm/memcontrol.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index f6cdbf755ed3..2fadd4896a14 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -170,6 +170,16 @@ static void __mem_cgroup_move_lists(struct page_cgroup *pc, bool active) | |||
170 | list_move(&pc->lru, &pc->mem_cgroup->inactive_list); | 170 | list_move(&pc->lru, &pc->mem_cgroup->inactive_list); |
171 | } | 171 | } |
172 | 172 | ||
173 | int task_in_mem_cgroup(struct task_struct *task, const struct mem_cgroup *mem) | ||
174 | { | ||
175 | int ret; | ||
176 | |||
177 | task_lock(task); | ||
178 | ret = task->mm && mm_cgroup(task->mm) == mem; | ||
179 | task_unlock(task); | ||
180 | return ret; | ||
181 | } | ||
182 | |||
173 | /* | 183 | /* |
174 | * This routine assumes that the appropriate zone's lru lock is already held | 184 | * This routine assumes that the appropriate zone's lru lock is already held |
175 | */ | 185 | */ |