mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
mm: balloon: use general non-lru movable page feature
Now, VM has a feature to migrate non-lru movable pages so balloon
doesn't need custom migration hooks in migrate.c and compaction.c.
Instead, this patch implements the page->mapping->a_ops->
{isolate|migrate|putback} functions.
With that, we could remove hooks for ballooning in general migration
functions and make balloon compaction simple.
[[email protected]: compaction.h requires that the includer first include node.h]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Gioh Kim <[email protected]>
Signed-off-by: Minchan Kim <[email protected]>
Acked-by: Vlastimil Babka <[email protected]>
Cc: Rafael Aquini <[email protected]>
Cc: Konstantin Khlebnikov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
bda807d444
commit
b1123ea6d3
7 changed files with 86 additions and 145 deletions
19
mm/migrate.c
19
mm/migrate.c
|
|
@ -170,14 +170,12 @@ void putback_movable_pages(struct list_head *l)
|
|||
list_del(&page->lru);
|
||||
dec_zone_page_state(page, NR_ISOLATED_ANON +
|
||||
page_is_file_cache(page));
|
||||
if (unlikely(isolated_balloon_page(page))) {
|
||||
balloon_page_putback(page);
|
||||
/*
|
||||
* We isolated non-lru movable page so here we can use
|
||||
* __PageMovable because LRU page's mapping cannot have
|
||||
* PAGE_MAPPING_MOVABLE.
|
||||
*/
|
||||
} else if (unlikely(__PageMovable(page))) {
|
||||
if (unlikely(__PageMovable(page))) {
|
||||
VM_BUG_ON_PAGE(!PageIsolated(page), page);
|
||||
lock_page(page);
|
||||
if (PageMovable(page))
|
||||
|
|
@ -992,18 +990,6 @@ static int __unmap_and_move(struct page *page, struct page *newpage,
|
|||
if (unlikely(!trylock_page(newpage)))
|
||||
goto out_unlock;
|
||||
|
||||
if (unlikely(isolated_balloon_page(page))) {
|
||||
/*
|
||||
* A ballooned page does not need any special attention from
|
||||
* physical to virtual reverse mapping procedures.
|
||||
* Skip any attempt to unmap PTEs or to remap swap cache,
|
||||
* in order to avoid burning cycles at rmap level, and perform
|
||||
* the page migration right away (proteced by page lock).
|
||||
*/
|
||||
rc = balloon_page_migrate(newpage, page, mode);
|
||||
goto out_unlock_both;
|
||||
}
|
||||
|
||||
if (unlikely(!is_lru)) {
|
||||
rc = move_to_new_page(newpage, page, mode);
|
||||
goto out_unlock_both;
|
||||
|
|
@ -1058,8 +1044,7 @@ out:
|
|||
* list in here.
|
||||
*/
|
||||
if (rc == MIGRATEPAGE_SUCCESS) {
|
||||
if (unlikely(__is_movable_balloon_page(newpage) ||
|
||||
__PageMovable(newpage)))
|
||||
if (unlikely(__PageMovable(newpage)))
|
||||
put_page(newpage);
|
||||
else
|
||||
putback_lru_page(newpage);
|
||||
|
|
|
|||
Loading…
Reference in a new issue