Commit dbc0e4cefd003834440fe7ac5464616c5235cb94
Committed by
Linus Torvalds
1 parent
3ad33b2436
Exists in
master
and in
20 other branches
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>
Showing 2 changed files with 5 additions and 5 deletions Side-by-side Diff
mm/memory_hotplug.c
... | ... | @@ -574,8 +574,8 @@ |
574 | 574 | /* Ok, all of our target is islaoted. |
575 | 575 | We cannot do rollback at this point. */ |
576 | 576 | offline_isolated_pages(start_pfn, end_pfn); |
577 | - /* reset pagetype flags */ | |
578 | - start_isolate_page_range(start_pfn, end_pfn); | |
577 | + /* reset pagetype flags and makes migrate type to be MOVABLE */ | |
578 | + undo_isolate_page_range(start_pfn, end_pfn); | |
579 | 579 | /* removal success */ |
580 | 580 | zone->present_pages -= offlined_pages; |
581 | 581 | zone->zone_pgdat->node_present_pages -= offlined_pages; |
mm/page_isolation.c
... | ... | @@ -55,7 +55,7 @@ |
55 | 55 | return 0; |
56 | 56 | undo: |
57 | 57 | for (pfn = start_pfn; |
58 | - pfn <= undo_pfn; | |
58 | + pfn < undo_pfn; | |
59 | 59 | pfn += pageblock_nr_pages) |
60 | 60 | unset_migratetype_isolate(pfn_to_page(pfn)); |
61 | 61 | |
... | ... | @@ -76,7 +76,7 @@ |
76 | 76 | pfn < end_pfn; |
77 | 77 | pfn += pageblock_nr_pages) { |
78 | 78 | page = __first_valid_page(pfn, pageblock_nr_pages); |
79 | - if (!page || get_pageblock_flags(page) != MIGRATE_ISOLATE) | |
79 | + if (!page || get_pageblock_migratetype(page) != MIGRATE_ISOLATE) | |
80 | 80 | continue; |
81 | 81 | unset_migratetype_isolate(page); |
82 | 82 | } |
... | ... | @@ -126,7 +126,7 @@ |
126 | 126 | */ |
127 | 127 | for (pfn = start_pfn; pfn < end_pfn; pfn += pageblock_nr_pages) { |
128 | 128 | page = __first_valid_page(pfn, pageblock_nr_pages); |
129 | - if (page && get_pageblock_flags(page) != MIGRATE_ISOLATE) | |
129 | + if (page && get_pageblock_migratetype(page) != MIGRATE_ISOLATE) | |
130 | 130 | break; |
131 | 131 | } |
132 | 132 | if (pfn < end_pfn) |