[<prev] [next>] [day] [month] [year] [list]
Message-Id: <20121115172535.45e27b63355827f9451c4b4b@canb.auug.org.au>
Date: Thu, 15 Nov 2012 17:25:35 +1100
From: Stephen Rothwell <sfr@...b.auug.org.au>
To: Andrew Morton <akpm@...ux-foundation.org>
Cc: linux-next@...r.kernel.org, linux-kernel@...r.kernel.org,
Hugh Dickins <hughd@...gle.com>, Michal Hocko <mhocko@...e.cz>,
Tejun Heo <tj@...nel.org>
Subject: linux-next: manual merge of the akpm-current tree with the tree
Hi Andrew,
Today's linux-next merge of the akpm-current tree got a conflict in
mm/memcontrol.c between commit 2ef37d3fe474 ("memcg: Simplify
mem_cgroup_force_empty_list error handling") from the cgroup tree and
commit 4bfe8322f427 ("memcg: fix hotplugged memory zone oops") from the
akpm-current tree.
I fixed it up (as suggested by Andrew - see below) and can carry the fix
as necessary (no action is required).
--
Cheers,
Stephen Rothwell sfr@...b.auug.org.au
diff --cc mm/memcontrol.c
index 08adaaa,dd39ba0..0000000
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@@ -3673,32 -3712,30 +3706,32 @@@ unsigned long mem_cgroup_soft_limit_rec
return nr_reclaimed;
}
-/*
+/**
+ * mem_cgroup_force_empty_list - clears LRU of a group
+ * @memcg: group to clear
+ * @node: NUMA node
+ * @zid: zone id
+ * @lru: lru to to clear
+ *
* Traverse a specified page_cgroup list and try to drop them all. This doesn't
- * reclaim the pages page themselves - it just removes the page_cgroups.
- * Returns true if some page_cgroups were not freed, indicating that the caller
- * must retry this operation.
+ * reclaim the pages page themselves - pages are moved to the parent (or root)
+ * group.
*/
-static bool mem_cgroup_force_empty_list(struct mem_cgroup *memcg,
+static void mem_cgroup_force_empty_list(struct mem_cgroup *memcg,
int node, int zid, enum lru_list lru)
{
- struct mem_cgroup_per_zone *mz;
+ struct lruvec *lruvec;
- unsigned long flags, loop;
+ unsigned long flags;
struct list_head *list;
struct page *busy;
struct zone *zone;
zone = &NODE_DATA(node)->node_zones[zid];
- mz = mem_cgroup_zoneinfo(memcg, node, zid);
- list = &mz->lruvec.lists[lru];
+ lruvec = mem_cgroup_zone_lruvec(zone, memcg);
+ list = &lruvec->lists[lru];
- loop = mem_cgroup_get_lru_size(lruvec, lru);
- /* give some margin against EBUSY etc...*/
- loop += 256;
busy = NULL;
- while (loop--) {
+ do {
struct page_cgroup *pc;
struct page *page;
Content of type "application/pgp-signature" skipped
Powered by blists - more mailing lists