|
@@ -127,6 +127,16 @@ static bool suitable_migration_target(struct page *page)
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+static void map_pages(struct list_head *list)
|
|
|
+{
|
|
|
+ struct page *page;
|
|
|
+
|
|
|
+ list_for_each_entry(page, list, lru) {
|
|
|
+ arch_alloc_page(page, 0);
|
|
|
+ kernel_map_pages(page, 1, 1);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Based on information in the current compact_control, find blocks
|
|
|
* suitable for isolating free pages from and then isolate them.
|
|
@@ -206,10 +216,7 @@ static void isolate_freepages(struct zone *zone,
|
|
|
}
|
|
|
|
|
|
/* split_free_page does not map the pages */
|
|
|
- list_for_each_entry(page, freelist, lru) {
|
|
|
- arch_alloc_page(page, 0);
|
|
|
- kernel_map_pages(page, 1, 1);
|
|
|
- }
|
|
|
+ map_pages(freelist);
|
|
|
|
|
|
cc->free_pfn = high_pfn;
|
|
|
cc->nr_freepages = nr_freepages;
|