fs: Remove aops->migratepage()
[linux-2.6-microblaze.git] / mm / compaction.c
index 1f89b96..a2c53fc 100644 (file)
@@ -110,28 +110,27 @@ static void split_map_pages(struct list_head *list)
 }
 
 #ifdef CONFIG_COMPACTION
-
-int PageMovable(struct page *page)
+bool PageMovable(struct page *page)
 {
-       struct address_space *mapping;
+       const struct movable_operations *mops;
 
        VM_BUG_ON_PAGE(!PageLocked(page), page);
        if (!__PageMovable(page))
-               return 0;
+               return false;
 
-       mapping = page_mapping(page);
-       if (mapping && mapping->a_ops && mapping->a_ops->isolate_page)
-               return 1;
+       mops = page_movable_ops(page);
+       if (mops)
+               return true;
 
-       return 0;
+       return false;
 }
 EXPORT_SYMBOL(PageMovable);
 
-void __SetPageMovable(struct page *page, struct address_space *mapping)
+void __SetPageMovable(struct page *page, const struct movable_operations *mops)
 {
        VM_BUG_ON_PAGE(!PageLocked(page), page);
-       VM_BUG_ON_PAGE((unsigned long)mapping & PAGE_MAPPING_MOVABLE, page);
-       page->mapping = (void *)((unsigned long)mapping | PAGE_MAPPING_MOVABLE);
+       VM_BUG_ON_PAGE((unsigned long)mops & PAGE_MAPPING_MOVABLE, page);
+       page->mapping = (void *)((unsigned long)mops | PAGE_MAPPING_MOVABLE);
 }
 EXPORT_SYMBOL(__SetPageMovable);
 
@@ -139,12 +138,10 @@ void __ClearPageMovable(struct page *page)
 {
        VM_BUG_ON_PAGE(!PageMovable(page), page);
        /*
-        * Clear registered address_space val with keeping PAGE_MAPPING_MOVABLE
-        * flag so that VM can catch up released page by driver after isolation.
-        * With it, VM migration doesn't try to put it back.
+        * This page still has the type of a movable page, but it's
+        * actually not movable any more.
         */
-       page->mapping = (void *)((unsigned long)page->mapping &
-                               PAGE_MAPPING_MOVABLE);
+       page->mapping = (void *)PAGE_MAPPING_MOVABLE;
 }
 EXPORT_SYMBOL(__ClearPageMovable);
 
@@ -1034,7 +1031,7 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn,
 
                        /*
                         * Only pages without mappings or that have a
-                        * ->migratepage callback are possible to migrate
+                        * ->migrate_folio callback are possible to migrate
                         * without blocking. However, we can be racing with
                         * truncation so it's necessary to lock the page
                         * to stabilise the mapping as truncation holds
@@ -1045,7 +1042,8 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn,
                                goto isolate_fail_put;
 
                        mapping = page_mapping(page);
-                       migrate_dirty = !mapping || mapping->a_ops->migratepage;
+                       migrate_dirty = !mapping ||
+                                       mapping->a_ops->migrate_folio;
                        unlock_page(page);
                        if (!migrate_dirty)
                                goto isolate_fail_put;