On Mon, Aug 29, 2011 at 12:28:22AM -0700, Ying Han wrote: > On Tue, Jul 19, 2011 at 5:36 PM, Johannes Weiner <hannes@xxxxxxxxxxx> wrote: > > On Tue, Jul 19, 2011 at 03:47:43PM -0700, Ying Han wrote: > >> On Tue, May 31, 2011 at 11:25 PM, Johannes Weiner <hannes@xxxxxxxxxxx>wrote: > >> > >> > Once the per-memcg lru lists are exclusive, the unevictable page > >> > rescue scanner can no longer work on the global zone lru lists. > >> > > >> > This converts it to go through all memcgs and scan their respective > >> > unevictable lists instead. > >> > > >> > Signed-off-by: Johannes Weiner <hannes@xxxxxxxxxxx> > >> > --- > >> > include/linux/memcontrol.h | 2 + > >> > mm/memcontrol.c | 11 +++++++++ > >> > mm/vmscan.c | 53 > >> > +++++++++++++++++++++++++++---------------- > >> > 3 files changed, 46 insertions(+), 20 deletions(-) > >> > > >> > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > >> > index cb02c00..56c1def 100644 > >> > --- a/include/linux/memcontrol.h > >> > +++ b/include/linux/memcontrol.h > >> > @@ -60,6 +60,8 @@ extern void mem_cgroup_cancel_charge_swapin(struct > >> > mem_cgroup *ptr); > >> > > >> > extern int mem_cgroup_cache_charge(struct page *page, struct mm_struct > >> > *mm, > >> > gfp_t gfp_mask); > >> > +struct page *mem_cgroup_lru_to_page(struct zone *, struct mem_cgroup *, > >> > + enum lru_list); > >> > > >> > >> Did we miss a #ifdef case for this function? I got compile error by > >> disabling memcg. > > > > I assume it's because the call to it is not optimized away properly in > > the disabled case. I'll have it fixed in the next round, thanks for > > letting me know. > > > > Hi Johannes: > > This is the change for the hierarchy_walk() sent on the other patch, > also including a fix. Please consider to fold in your patch: > > Fix the hierarchy_walk() in the unevictable page rescue scanner > > the patch including changes > 1. adjust the change in hierarchy_walk() which needs to hold the reference to > the first mem_cgroup. > 2. add stop_hierarchy_walk() at the end which is missed on the original patch. > > Signed-off-by: Ying Han <yinghan@xxxxxxxxxx> > > Change-Id: I72fb5d351faf0f111c8c99edd90b6cfee6281d3f > --- > mm/memcontrol.c | 3 +++ > mm/vmscan.c | 7 ++++--- > 2 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 9bcd429..426092b 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -1514,6 +1514,9 @@ void mem_cgroup_stop_hierarchy_walk(struct > mem_cgroup *target, > >------>------->------->------- struct mem_cgroup *first, > >------>------->------->------- struct mem_cgroup *mem) > { > +>------if (!target) > +>------>-------target = root_mem_cgroup; This is important and I have it already in my tree. After the changes to the iteration process as explained in my previous email, I don't think the rest of this patch is necessary. Can you confirm? Thanks! -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>