mirror of https://gitee.com/openkylin/linux.git
mm: compaction: introduce map_pages()
This commit creates a map_pages() function which map pages freed using split_free_pages(). This merely moves some code from isolate_freepages() so that it can be reused in other places. Signed-off-by: Michal Nazarewicz <mina86@mina86.com> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Acked-by: Mel Gorman <mel@csn.ul.ie> Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Tested-by: Robert Nelson <robertcnelson@gmail.com> Tested-by: Barry Song <Baohua.Song@csr.com>
This commit is contained in:
parent
2fe86e0004
commit
03d44192f6
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue