memory hotremove: unset migrate type "ISOLATE" after removal
We should unset migrate type "ISOLATE" when we successfully removed memory. But current code has BUG and cannot works well. This patch also includes bugfix? to change get_pageblock_flags to get_pageblock_migratetype(). Thanks to Badari Pulavarty for finding this. Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Acked-by: Badari Pulavarty <pbadari@us.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
3ad33b2436
commit
dbc0e4cefd
@@ -55,7 +55,7 @@ start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn)
|
||||
return 0;
|
||||
undo:
|
||||
for (pfn = start_pfn;
|
||||
pfn <= undo_pfn;
|
||||
pfn < undo_pfn;
|
||||
pfn += pageblock_nr_pages)
|
||||
unset_migratetype_isolate(pfn_to_page(pfn));
|
||||
|
||||
@@ -76,7 +76,7 @@ undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn)
|
||||
pfn < end_pfn;
|
||||
pfn += pageblock_nr_pages) {
|
||||
page = __first_valid_page(pfn, pageblock_nr_pages);
|
||||
if (!page || get_pageblock_flags(page) != MIGRATE_ISOLATE)
|
||||
if (!page || get_pageblock_migratetype(page) != MIGRATE_ISOLATE)
|
||||
continue;
|
||||
unset_migratetype_isolate(page);
|
||||
}
|
||||
@@ -126,7 +126,7 @@ int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn)
|
||||
*/
|
||||
for (pfn = start_pfn; pfn < end_pfn; pfn += pageblock_nr_pages) {
|
||||
page = __first_valid_page(pfn, pageblock_nr_pages);
|
||||
if (page && get_pageblock_flags(page) != MIGRATE_ISOLATE)
|
||||
if (page && get_pageblock_migratetype(page) != MIGRATE_ISOLATE)
|
||||
break;
|
||||
}
|
||||
if (pfn < end_pfn)
|
||||
|
Reference in New Issue
Block a user