Compaction calls interfaces of driver page migration
instead of calling balloon migration directly.

Signed-off-by: Gioh Kim <gioh....@lge.com>
---
 mm/compaction.c |  9 +++++----
 mm/migrate.c    | 22 +++++++++++++---------
 2 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/mm/compaction.c b/mm/compaction.c
index 8c0d945..ca666e2 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -14,7 +14,7 @@
 #include <linux/backing-dev.h>
 #include <linux/sysctl.h>
 #include <linux/sysfs.h>
-#include <linux/balloon_compaction.h>
+#include <linux/compaction.h>
 #include <linux/page-isolation.h>
 #include <linux/kasan.h>
 #include "internal.h"
@@ -736,12 +736,13 @@ isolate_migratepages_block(struct compact_control *cc, 
unsigned long low_pfn,
 
                /*
                 * Check may be lockless but that's ok as we recheck later.
-                * It's possible to migrate LRU pages and balloon pages
+                * It's possible to migrate LRU pages and migratable-pages
                 * Skip any other type of page
                 */
                if (!PageLRU(page)) {
-                       if (unlikely(balloon_page_movable(page))) {
-                               if (balloon_page_isolate(page)) {
+                       if (unlikely(driver_page_migratable(page))) {
+                               if (page->mapping->a_ops->isolatepage(page,
+                                                               isolate_mode)) {
                                        /* Successfully isolated */
                                        goto isolate_success;
                                }
diff --git a/mm/migrate.c b/mm/migrate.c
index 85e0426..649b1cd 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -35,7 +35,7 @@
 #include <linux/hugetlb.h>
 #include <linux/hugetlb_cgroup.h>
 #include <linux/gfp.h>
-#include <linux/balloon_compaction.h>
+#include <linux/compaction.h>
 #include <linux/mmu_notifier.h>
 
 #include <asm/tlbflush.h>
@@ -76,7 +76,8 @@ int migrate_prep_local(void)
  * from where they were once taken off for compaction/migration.
  *
  * This function shall be used whenever the isolated pageset has been
- * built from lru, balloon, hugetlbfs page. See isolate_migratepages_range()
+ * built from lru, migratable-page, hugetlbfs page.
+ * See isolate_migratepages_range()
  * and isolate_huge_page().
  */
 void putback_movable_pages(struct list_head *l)
@@ -92,8 +93,8 @@ 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);
+               if (unlikely(driver_page_migratable(page)))
+                       page->mapping->a_ops->putbackpage(page);
                else
                        putback_lru_page(page);
        }
@@ -843,15 +844,18 @@ static int __unmap_and_move(struct page *page, struct 
page *newpage,
                }
        }
 
-       if (unlikely(isolated_balloon_page(page))) {
+       if (unlikely(driver_page_migratable(page))) {
                /*
-                * A ballooned page does not need any special attention from
+                * A migratable-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);
+               rc = page->mapping->a_ops->migratepage(page->mapping,
+                                                      newpage,
+                                                      page,
+                                                      mode);
                goto out_unlock;
        }
 
@@ -948,8 +952,8 @@ out:
        if (rc != MIGRATEPAGE_SUCCESS && put_new_page) {
                ClearPageSwapBacked(newpage);
                put_new_page(newpage, private);
-       } else if (unlikely(__is_movable_balloon_page(newpage))) {
-               /* drop our reference, page already in the balloon */
+       } else if (unlikely(driver_page_migratable(newpage))) {
+               /* drop our reference */
                put_page(newpage);
        } else
                putback_lru_page(newpage);
-- 
1.9.1

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to