From: menage@google.com
To: akpm@linux-foundation.org, kamezawa.hiroyu@jp.fujitsu.com,
lizf@cn.fujitsu.com
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: [PATCH 2/3] CGroups: Use hierarchy_mutex in memory controller
Date: Tue, 16 Dec 2008 03:30:57 -0800 [thread overview]
Message-ID: <20081216113653.090278000@menage.corp.google.com> (raw)
In-Reply-To: 20081216113055.713856000@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;
}
--
WARNING: multiple messages have this Message-ID (diff)
From: menage@google.com
To: akpm@linux-foundation.org, kamezawa.hiroyu@jp.fujitsu.com,
lizf@cn.fujitsu.com
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: [PATCH 2/3] CGroups: Use hierarchy_mutex in memory controller
Date: Tue, 16 Dec 2008 03:30:57 -0800 [thread overview]
Message-ID: <20081216113653.090278000@menage.corp.google.com> (raw)
In-Reply-To: 20081216113055.713856000@menage.corp.google.com
[-- Attachment #1: mm-destroy-fix.patch --]
[-- Type: text/plain, Size: 2495 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;
}
--
--
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: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2008-12-16 11:37 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-16 11:30 [PATCH 0/3] CGroups: Hierarchy locking/refcount changes menage
2008-12-16 11:30 ` menage
2008-12-16 11:30 ` [PATCH 1/3] CGroups: Add a per-subsystem hierarchy_mutex menage
2008-12-16 11:30 ` menage
2008-12-17 5:16 ` KAMEZAWA Hiroyuki
2008-12-17 5:16 ` KAMEZAWA Hiroyuki
2008-12-16 11:30 ` menage [this message]
2008-12-16 11:30 ` [PATCH 2/3] CGroups: Use hierarchy_mutex in memory controller menage
2008-12-17 5:17 ` KAMEZAWA Hiroyuki
2008-12-17 5:17 ` KAMEZAWA Hiroyuki
2008-12-16 11:30 ` [PATCH 3/3] CGroups: Add css_tryget() menage
2008-12-16 11:30 ` menage
2008-12-17 5:19 ` KAMEZAWA Hiroyuki
2008-12-17 5:19 ` KAMEZAWA Hiroyuki
2008-12-17 22:07 ` Andrew Morton
2008-12-17 22:07 ` Andrew Morton
2008-12-17 22:48 ` Paul Menage
2008-12-17 22:48 ` Paul Menage
2008-12-17 22:03 ` [PATCH 0/3] CGroups: Hierarchy locking/refcount changes Andrew Morton
2008-12-17 22:03 ` Andrew Morton
2008-12-19 2:06 ` Paul Menage
2008-12-19 2:06 ` Paul Menage
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=20081216113653.090278000@menage.corp.google.com \
--to=menage@google.com \
--cc=akpm@linux-foundation.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lizf@cn.fujitsu.com \
/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.