All of lore.kernel.org
 help / color / mirror / Atom feed
From: menage@google.com
To: kamezawa.hiroyu@jp.fujitsu.com, balbir@linux.vnet.ibm.com,
	containers@lists.linux-foundation.org
Cc: linux-kernel@vger.kernel.org, akpm@linux-foundation.org
Subject: [RFC][PATCH 2/3] CGroups: Use hierarchy_mutex in memory controller
Date: Wed, 10 Dec 2008 15:36:56 -0800	[thread overview]
Message-ID: <20081210234432.236302000@menage.corp.google.com> (raw)
In-Reply-To: 20081210233654.563182000@menage.corp.google.com

[-- Attachment #1: mm-destroy-fix.patch --]
[-- Type: text/plain, Size: 2270 bytes --]

This patch updates the memory controller to use its hierarchy_mutex
rather than calling cgroup_lock() to protected against
cgroup_mkdir()/cgroup_rmdir() from occurring in its hierarchy.

Signed-off-by: Paul Menage <menage@google.com>

---
 mm/memcontrol.c |   14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

Index: hierarchy_lock-mmotm-2008-12-09/mm/memcontrol.c
===================================================================
--- hierarchy_lock-mmotm-2008-12-09.orig/mm/memcontrol.c
+++ hierarchy_lock-mmotm-2008-12-09/mm/memcontrol.c
@@ -154,7 +154,7 @@ struct mem_cgroup {
 
 	/*
 	 * While reclaiming in a hiearchy, we cache the last child we
-	 * reclaimed from. Protected by cgroup_lock()
+	 * reclaimed from. Protected by hierarchy_mutex
 	 */
 	struct mem_cgroup *last_scanned_child;
 	/*
@@ -529,7 +529,7 @@ unsigned long mem_cgroup_isolate_pages(u
 
 /*
  * This routine finds the DFS walk successor. This routine should be
- * called with cgroup_mutex held
+ * called with hierarchy_mutex held
  */
 static struct mem_cgroup *
 mem_cgroup_get_next_node(struct mem_cgroup *curr, struct mem_cgroup *root_mem)
@@ -598,7 +598,7 @@ mem_cgroup_get_first_node(struct mem_cgr
 	/*
 	 * Scan all children under the mem_cgroup mem
 	 */
-	cgroup_lock();
+	mutex_lock(&mem_cgroup_subsys.hierarchy_mutex);
 	if (list_empty(&root_mem->css.cgroup->children)) {
 		ret = root_mem;
 		goto done;
@@ -619,7 +619,7 @@ mem_cgroup_get_first_node(struct mem_cgr
 
 done:
 	root_mem->last_scanned_child = ret;
-	cgroup_unlock();
+	mutex_unlock(&mem_cgroup_subsys.hierarchy_mutex);
 	return ret;
 }
 
@@ -683,18 +683,16 @@ static int mem_cgroup_hierarchical_recla
 	while (next_mem != root_mem) {
 		if (next_mem->obsolete) {
 			mem_cgroup_put(next_mem);
-			cgroup_lock();
 			next_mem = mem_cgroup_get_first_node(root_mem);
-			cgroup_unlock();
 			continue;
 		}
 		ret = try_to_free_mem_cgroup_pages(next_mem, gfp_mask, noswap,
 						   get_swappiness(next_mem));
 		if (mem_cgroup_check_under_limit(root_mem))
 			return 0;
-		cgroup_lock();
+		mutex_lock(&mem_cgroup_subsys.hierarchy_mutex);
 		next_mem = mem_cgroup_get_next_node(next_mem, root_mem);
-		cgroup_unlock();
+		mutex_unlock(&mem_cgroup_subsys.hierarchy_mutex);
 	}
 	return ret;
 }

--

  parent reply	other threads:[~2008-12-10 23:46 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-10 23:36 [RFC][PATCH 0/3] CGroups: CGroups: Hierarchy locking/refcount changes menage
2008-12-10 23:36 ` [RFC][PATCH 1/3] CGroups: Add a per-subsystem hierarchy_mutex menage
2008-12-11  0:37   ` KAMEZAWA Hiroyuki
2008-12-11  0:44     ` Paul Menage
     [not found]     ` <20081211093733.c24deb6e.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2008-12-11  0:44       ` Paul Menage
2008-12-11  6:30       ` Balbir Singh
2008-12-11  6:30         ` Balbir Singh
2008-12-11  3:05   ` Li Zefan
2008-12-11 17:07     ` Paul Menage
     [not found]     ` <4940836A.9010502-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2008-12-11 17:07       ` Paul Menage
2008-12-11  6:29   ` Balbir Singh
2008-12-11 17:09     ` Paul Menage
     [not found]     ` <20081211062940.GJ3008-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
2008-12-11 17:09       ` Paul Menage
     [not found]   ` <20081210234432.065445000-B63HFAS8fGlSzHKm+aFRNNkmqwFzkYv6@public.gmane.org>
2008-12-11  0:37     ` KAMEZAWA Hiroyuki
2008-12-11  3:05     ` Li Zefan
2008-12-11  6:29     ` Balbir Singh
2008-12-10 23:36 ` menage-hpIqsD4AKlfQT0dZR+AlfA
2008-12-10 23:36 ` menage [this message]
     [not found]   ` <20081210234432.236302000-B63HFAS8fGlSzHKm+aFRNNkmqwFzkYv6@public.gmane.org>
2008-12-11  0:49     ` [RFC][PATCH 2/3] CGroups: Use hierarchy_mutex in memory controller KAMEZAWA Hiroyuki
2008-12-11  0:49   ` KAMEZAWA Hiroyuki
2008-12-11  0:52     ` Paul Menage
2008-12-11  1:05       ` KAMEZAWA Hiroyuki
     [not found]         ` <20081211100501.bf538f0c.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2008-12-11  6:33           ` Balbir Singh
2008-12-11  6:33         ` Balbir Singh
2008-12-11  6:47           ` Li Zefan
     [not found]           ` <20081211063307.GL3008-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
2008-12-11  6:47             ` Li Zefan
2008-12-11  6:53             ` KAMEZAWA Hiroyuki
2008-12-11  6:53           ` KAMEZAWA Hiroyuki
     [not found]             ` <20081211155323.957eb73c.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2008-12-11 17:05               ` Paul Menage
2008-12-11 17:05             ` Paul Menage
     [not found]               ` <6599ad830812110905k4e32363fp671bf88e18fbf349-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-12-12  1:12                 ` KAMEZAWA Hiroyuki
2008-12-12  1:12               ` KAMEZAWA Hiroyuki
     [not found]       ` <6599ad830812101652o25bc33f3r2a710e0879f9b196-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-12-11  1:05         ` KAMEZAWA Hiroyuki
     [not found]     ` <20081211094938.85b00cf3.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2008-12-11  0:52       ` Paul Menage
2008-12-10 23:36 ` menage-hpIqsD4AKlfQT0dZR+AlfA
2008-12-10 23:36 ` [RFC][PATCH 3/3] CGroups: Add css_tryget() menage
2008-12-11  0:52   ` KAMEZAWA Hiroyuki
     [not found]     ` <20081211095255.8763905f.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2008-12-11  7:02       ` [RFC][PATCH]example: use css_tryget() in memcg " KAMEZAWA Hiroyuki
2008-12-11  7:02         ` KAMEZAWA Hiroyuki
     [not found]   ` <20081210234432.407064000-B63HFAS8fGlSzHKm+aFRNNkmqwFzkYv6@public.gmane.org>
2008-12-11  0:52     ` KAMEZAWA Hiroyuki
2008-12-11  5:15     ` KAMEZAWA Hiroyuki
2008-12-11  5:15   ` KAMEZAWA Hiroyuki
     [not found]     ` <20081211141507.a087f270.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2008-12-11  7:28       ` Paul Menage
2008-12-11  7:28     ` Paul Menage
2008-12-11  7:29       ` KAMEZAWA Hiroyuki
     [not found]       ` <6599ad830812102328x52657bffm9864a0f9a4b3d5bd-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-12-11  7:29         ` KAMEZAWA Hiroyuki
2008-12-10 23:36 ` menage-hpIqsD4AKlfQT0dZR+AlfA

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20081210234432.236302000@menage.corp.google.com \
    --to=menage@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=balbir@linux.vnet.ibm.com \
    --cc=containers@lists.linux-foundation.org \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.