All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20120719101914.GA13612@kernel>

diff --git a/a/2.txt b/N1/2.txt
index 8b13789..8d1e66d 100644
--- a/a/2.txt
+++ b/N1/2.txt
@@ -1 +1,73 @@
+>From ca3849a5633d578d6a924817fad5602641707285 Mon Sep 17 00:00:00 2001
+From: Wanpeng Li <liwanp@linux.vnet.ibm.com>
+Date: Thu, 19 Jul 2012 18:08:31 +0800
+Subject: [PATCH] memcg: add mem_cgroup_from_css() helper
 
+Add a mem_cgroup_from_css() helper to replace open-coded invokations of
+container_of().  To clarify the code and to add a little more type safety.
+
+Signed-off-by: Wanpeng Li <liwanp@linux.vnet.ibm.com>
+---
+ mm/memcontrol.c |   19 +++++++++++--------
+ 1 files changed, 11 insertions(+), 8 deletions(-)
+
+diff --git a/mm/memcontrol.c b/mm/memcontrol.c
+index f72b5e5..2136560 100644
+--- a/mm/memcontrol.c
++++ b/mm/memcontrol.c
+@@ -412,6 +412,12 @@ static void mem_cgroup_put(struct mem_cgroup *memcg);
+ #include <net/sock.h>
+ #include <net/ip.h>
+ 
++static inline
++struct mem_cgroup *mem_cgroup_from_css(struct cgroup_subsys_state *s)
++{
++	return container_of(s, struct mem_cgroup, css);
++}
++
+ static bool mem_cgroup_is_root(struct mem_cgroup *memcg);
+ void sock_update_memcg(struct sock *sk)
+ {
+@@ -864,9 +870,8 @@ static void memcg_check_events(struct mem_cgroup *memcg, struct page *page)
+ 
+ struct mem_cgroup *mem_cgroup_from_cont(struct cgroup *cont)
+ {
+-	return container_of(cgroup_subsys_state(cont,
+-				mem_cgroup_subsys_id), struct mem_cgroup,
+-				css);
++	return mem_cgroup_from_css(cgroup_subsys_state(cont,
++				mem_cgroup_subsys_id));
+ }
+ 
+ struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)
+@@ -879,8 +884,7 @@ struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)
+ 	if (unlikely(!p))
+ 		return NULL;
+ 
+-	return container_of(task_subsys_state(p, mem_cgroup_subsys_id),
+-				struct mem_cgroup, css);
++	return mem_cgroup_from_css(task_subsys_state(p, mem_cgroup_subsys_id));
+ }
+ 
+ struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm)
+@@ -966,8 +970,7 @@ struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *root,
+ 		css = css_get_next(&mem_cgroup_subsys, id + 1, &root->css, &id);
+ 		if (css) {
+ 			if (css == &root->css || css_tryget(css))
+-				memcg = container_of(css,
+-						     struct mem_cgroup, css);
++				memcg = mem_cgroup_from_css(css);
+ 		} else
+ 			id = 0;
+ 		rcu_read_unlock();
+@@ -2429,7 +2432,7 @@ static struct mem_cgroup *mem_cgroup_lookup(unsigned short id)
+ 	css = css_lookup(&mem_cgroup_subsys, id);
+ 	if (!css)
+ 		return NULL;
+-	return container_of(css, struct mem_cgroup, css);
++	return mem_cgroup_from_css(css);
+ }
+ 
+ struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page)
+-- 
+1.7.7.6
diff --git a/a/content_digest b/N1/content_digest
index 75b6153..b6fe6c2 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -144,5 +144,78 @@
  "\01:2\0"
  "fn\00001-memcg-add-mem_cgroup_from_css-helper.patch\0"
  "b\0"
+ ">From ca3849a5633d578d6a924817fad5602641707285 Mon Sep 17 00:00:00 2001\n"
+ "From: Wanpeng Li <liwanp@linux.vnet.ibm.com>\n"
+ "Date: Thu, 19 Jul 2012 18:08:31 +0800\n"
+ "Subject: [PATCH] memcg: add mem_cgroup_from_css() helper\n"
+ "\n"
+ "Add a mem_cgroup_from_css() helper to replace open-coded invokations of\n"
+ "container_of().  To clarify the code and to add a little more type safety.\n"
+ "\n"
+ "Signed-off-by: Wanpeng Li <liwanp@linux.vnet.ibm.com>\n"
+ "---\n"
+ " mm/memcontrol.c |   19 +++++++++++--------\n"
+ " 1 files changed, 11 insertions(+), 8 deletions(-)\n"
+ "\n"
+ "diff --git a/mm/memcontrol.c b/mm/memcontrol.c\n"
+ "index f72b5e5..2136560 100644\n"
+ "--- a/mm/memcontrol.c\n"
+ "+++ b/mm/memcontrol.c\n"
+ "@@ -412,6 +412,12 @@ static void mem_cgroup_put(struct mem_cgroup *memcg);\n"
+ " #include <net/sock.h>\n"
+ " #include <net/ip.h>\n"
+ " \n"
+ "+static inline\n"
+ "+struct mem_cgroup *mem_cgroup_from_css(struct cgroup_subsys_state *s)\n"
+ "+{\n"
+ "+\treturn container_of(s, struct mem_cgroup, css);\n"
+ "+}\n"
+ "+\n"
+ " static bool mem_cgroup_is_root(struct mem_cgroup *memcg);\n"
+ " void sock_update_memcg(struct sock *sk)\n"
+ " {\n"
+ "@@ -864,9 +870,8 @@ static void memcg_check_events(struct mem_cgroup *memcg, struct page *page)\n"
+ " \n"
+ " struct mem_cgroup *mem_cgroup_from_cont(struct cgroup *cont)\n"
+ " {\n"
+ "-\treturn container_of(cgroup_subsys_state(cont,\n"
+ "-\t\t\t\tmem_cgroup_subsys_id), struct mem_cgroup,\n"
+ "-\t\t\t\tcss);\n"
+ "+\treturn mem_cgroup_from_css(cgroup_subsys_state(cont,\n"
+ "+\t\t\t\tmem_cgroup_subsys_id));\n"
+ " }\n"
+ " \n"
+ " struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)\n"
+ "@@ -879,8 +884,7 @@ struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)\n"
+ " \tif (unlikely(!p))\n"
+ " \t\treturn NULL;\n"
+ " \n"
+ "-\treturn container_of(task_subsys_state(p, mem_cgroup_subsys_id),\n"
+ "-\t\t\t\tstruct mem_cgroup, css);\n"
+ "+\treturn mem_cgroup_from_css(task_subsys_state(p, mem_cgroup_subsys_id));\n"
+ " }\n"
+ " \n"
+ " struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm)\n"
+ "@@ -966,8 +970,7 @@ struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *root,\n"
+ " \t\tcss = css_get_next(&mem_cgroup_subsys, id + 1, &root->css, &id);\n"
+ " \t\tif (css) {\n"
+ " \t\t\tif (css == &root->css || css_tryget(css))\n"
+ "-\t\t\t\tmemcg = container_of(css,\n"
+ "-\t\t\t\t\t\t     struct mem_cgroup, css);\n"
+ "+\t\t\t\tmemcg = mem_cgroup_from_css(css);\n"
+ " \t\t} else\n"
+ " \t\t\tid = 0;\n"
+ " \t\trcu_read_unlock();\n"
+ "@@ -2429,7 +2432,7 @@ static struct mem_cgroup *mem_cgroup_lookup(unsigned short id)\n"
+ " \tcss = css_lookup(&mem_cgroup_subsys, id);\n"
+ " \tif (!css)\n"
+ " \t\treturn NULL;\n"
+ "-\treturn container_of(css, struct mem_cgroup, css);\n"
+ "+\treturn mem_cgroup_from_css(css);\n"
+ " }\n"
+ " \n"
+ " struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page)\n"
+ "-- \n"
+ 1.7.7.6
 
-c470f6b725f6e0bfebfc248e45b759137b77f98143d6f681c668b86ac2022258
+103a7b506520fc2426fbddc08bbc4ddfb33a52b9de982fe2d0225f88da3ecce7

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.