diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 7c3f8d7e2d8e..f7cc08dad26a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -6008,6 +6008,17 @@ bool has_unmovable_pages(struct zone *zone, struct page *page, int count, | |||
6008 | continue; | 6008 | continue; |
6009 | 6009 | ||
6010 | page = pfn_to_page(check); | 6010 | page = pfn_to_page(check); |
6011 | |||
6012 | /* | ||
6013 | * Hugepages are not in LRU lists, but they're movable. | ||
6014 | * We need not scan over tail pages bacause we don't | ||
6015 | * handle each tail page individually in migration. | ||
6016 | */ | ||
6017 | if (PageHuge(page)) { | ||
6018 | iter = round_up(iter + 1, 1<<compound_order(page)) - 1; | ||
6019 | continue; | ||
6020 | } | ||
6021 | |||
6011 | /* | 6022 | /* |
6012 | * We can't use page_count without pin a page | 6023 | * We can't use page_count without pin a page |
6013 | * because another CPU can free compound page. | 6024 | * because another CPU can free compound page. |