Hi Michal, It helps to explain in changelog/code - in what situation a ZONE_MOVABLE will contain !MIGRATE_MOVABLE pages? And why the MIGRATE_MOVABLE test is still necessary given the ZONE_MOVABLE check? - why do you think free pages are not removeable? Simply to cater for the set_migratetype_isolate() logic, or there are more fundamental reasons? Thanks, Fengguang On Fri, Aug 20, 2010 at 04:14:00PM +0200, Michal Hocko wrote: > Hi, > what do you think about the patch below? > > >From b983695b92b5be58f31c719fada1d3245f7b6768 Mon Sep 17 00:00:00 2001 > From: Michal Hocko <mhocko@xxxxxxx> > Date: Fri, 20 Aug 2010 15:39:16 +0200 > Subject: [PATCH] Make is_mem_section_removable more conformable with offlining code > > Currently is_mem_section_removable checks whether each pageblock from > the given pfn range is of MIGRATE_MOVABLE type or if it is free. If both > are false then the range is considered non removable. > > On the other hand, offlining code (more specifically > set_migratetype_isolate) doesn't care whether a page is free and instead > it just checks the migrate type of the page and whether the page's zone > is movable. > > This can lead into a situation when a node is marked as removable even > though all pages are neither MIGRATE_MOVABLE nor the zone is > ZONE_MOVABLE. > > Also we can mark a node as not removable just because a pageblock is > MIGRATE_RESERVE and not free (and this situation is much more probable). > --- > mm/memory_hotplug.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c > index a4cfcdc..da20568 100644 > --- a/mm/memory_hotplug.c > +++ b/mm/memory_hotplug.c > @@ -611,10 +611,10 @@ int is_mem_section_removable(unsigned long start_pfn, unsigned long nr_pages) > type = get_pageblock_migratetype(page); > > /* > - * A pageblock containing MOVABLE or free pages is considered > - * removable > + * A pageblock containing MOVABLE or page from movable > + * zone are considered removable > */ > - if (type != MIGRATE_MOVABLE && !pageblock_free(page)) > + if (type != MIGRATE_MOVABLE && zone_idx(page) != ZONE_MOVABLE) > return 0; > > /* > -- > 1.7.1 > > > -- > Michal Hocko > L3 team > SUSE LINUX s.r.o. > Lihovarska 1060/12 > 190 00 Praha 9 > Czech Republic > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@xxxxxxxxxx For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>