From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roman Gushchin Subject: [v9 2/5] mm: implement mem_cgroup_scan_tasks() for the root memory cgroup Date: Wed, 27 Sep 2017 14:09:33 +0100 Message-ID: <20170927130936.8601-3-guro@fb.com> References: <20170927130936.8601-1-guro@fb.com> Mime-Version: 1.0 Return-path: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=OQxXFCLQypnSW9Asr7CUrnNHphPpOFYWcSqA6uz6jno=; b=I7QTZ38TXmq8cv8BdpgFR5g69fG69xDOCNZ1N+Giu90/vT4hi3H0WJxfMoDO6PerhDno TV0JufC2B2VYVugOFSDEsUAoZc7XETo2W+tY8+PuUE64qkliwKrIsH4iNhUf5YXH6aSj bZupOs0P0Ii4n5Baj+lWzbt1sIa+uskwHTQ= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=OQxXFCLQypnSW9Asr7CUrnNHphPpOFYWcSqA6uz6jno=; b=IHuXJGqRH/Vq1mxiPeihFswzGDx5/DidJe8MMBKkU+txDN0gOpH/y5qjR7gq+bd1juFVPsWlUSgUqfUXklEF5G73HrEcC95ghmjee2XPr9Mg7m9TpkY6cl9dKLJi6p+btTK5doA1I3eNHpVAEivja7pJcT0oCst6hppGFt9Q11A= In-Reply-To: <20170927130936.8601-1-guro@fb.com> Sender: owner-linux-mm@kvack.org List-ID: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-mm@kvack.org Cc: Roman Gushchin , Michal Hocko , Vladimir Davydov , Johannes Weiner , Tetsuo Handa , David Rientjes , Andrew Morton , Tejun Heo , kernel-team@fb.com, cgroups@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Implement mem_cgroup_scan_tasks() functionality for the root memory cgroup to use this function for looking for a OOM victim task in the root memory cgroup by the cgroup-ware OOM killer. The root memory cgroup should be treated as a leaf cgroup, so only tasks which are directly belonging to the root cgroup should be iterated over. Signed-off-by: Roman Gushchin Cc: Michal Hocko Cc: Vladimir Davydov Cc: Johannes Weiner Cc: Tetsuo Handa Cc: David Rientjes Cc: Andrew Morton Cc: Tejun Heo Cc: kernel-team@fb.com Cc: cgroups@vger.kernel.org Cc: linux-doc@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org --- mm/memcontrol.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index ae37b5624eb2..fa1a5120ce3f 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -917,7 +917,8 @@ static void invalidate_reclaim_iterators(struct mem_cgroup *dead_memcg) * value, the function breaks the iteration loop and returns the value. * Otherwise, it will iterate over all tasks and return 0. * - * This function must not be called for the root memory cgroup. + * If memcg is the root memory cgroup, this function will iterate only + * over tasks belonging directly to the root memory cgroup. */ int mem_cgroup_scan_tasks(struct mem_cgroup *memcg, int (*fn)(struct task_struct *, void *), void *arg) @@ -925,8 +926,6 @@ int mem_cgroup_scan_tasks(struct mem_cgroup *memcg, struct mem_cgroup *iter; int ret = 0; - BUG_ON(memcg == root_mem_cgroup); - for_each_mem_cgroup_tree(iter, memcg) { struct css_task_iter it; struct task_struct *task; @@ -935,7 +934,7 @@ int mem_cgroup_scan_tasks(struct mem_cgroup *memcg, while (!ret && (task = css_task_iter_next(&it))) ret = fn(task, arg); css_task_iter_end(&it); - if (ret) { + if (ret || memcg == root_mem_cgroup) { mem_cgroup_iter_break(memcg, iter); break; } -- 2.13.5 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org