summaryrefslogtreecommitdiff
path: root/mm
diff options
context:
space:
mode:
authorMichal Nazarewicz <mina86@mina86.com>2012-01-30 13:23:47 +0100
committerHiroshi Doyu <hdoyu@nvidia.com>2012-09-07 11:46:03 +0300
commit232e8866cbc1e663d6bc66f8fe6942e041235d99 (patch)
treeaac5e3b3c204bb5b25e14be32ceda212882baf8f /mm
parenta8b5144d15d71da5c7c78fbe3189d792124fe557 (diff)
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>
Diffstat (limited to 'mm')
-rw-r--r--mm/compaction.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/mm/compaction.c b/mm/compaction.c
index 0304ff6c7bf2..f740488be3a8 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -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;