mm/migrate: convert putback_movable_pages() to use folios
authorVishal Moola (Oracle) <vishal.moola@gmail.com>
Mon, 30 Jan 2023 21:43:52 +0000 (13:43 -0800)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 13 Feb 2023 23:54:32 +0000 (15:54 -0800)
Removes 6 calls to compound_head(), and replaces putback_movable_page()
with putback_movable_folio() as well.

Link: https://lkml.kernel.org/r/20230130214352.40538-5-vishal.moola@gmail.com
Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Cc: Matthew Wilcox <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/migrate.c

index 3cdb76e44ef52a32eb9c33114ffd2c9cffd44385..5b40b9040ba60531b4f8fb72204ea34d2a72783c 100644 (file)
@@ -129,12 +129,12 @@ out:
        return -EBUSY;
 }
 
-static void putback_movable_page(struct page *page)
+static void putback_movable_folio(struct folio *folio)
 {
-       const struct movable_operations *mops = page_movable_ops(page);
+       const struct movable_operations *mops = folio_movable_ops(folio);
 
-       mops->putback_page(page);
-       ClearPageIsolated(page);
+       mops->putback_page(&folio->page);
+       folio_clear_isolated(folio);
 }
 
 /*
@@ -147,33 +147,33 @@ static void putback_movable_page(struct page *page)
  */
 void putback_movable_pages(struct list_head *l)
 {
-       struct page *page;
-       struct page *page2;
+       struct folio *folio;
+       struct folio *folio2;
 
-       list_for_each_entry_safe(page, page2, l, lru) {
-               if (unlikely(PageHuge(page))) {
-                       folio_putback_active_hugetlb(page_folio(page));
+       list_for_each_entry_safe(folio, folio2, l, lru) {
+               if (unlikely(folio_test_hugetlb(folio))) {
+                       folio_putback_active_hugetlb(folio);
                        continue;
                }
-               list_del(&page->lru);
+               list_del(&folio->lru);
                /*
-                * We isolated non-lru movable page so here we can use
-                * __PageMovable because LRU page's mapping cannot have
+                * We isolated non-lru movable folio so here we can use
+                * __PageMovable because LRU folio's mapping cannot have
                 * PAGE_MAPPING_MOVABLE.
                 */
-               if (unlikely(__PageMovable(page))) {
-                       VM_BUG_ON_PAGE(!PageIsolated(page), page);
-                       lock_page(page);
-                       if (PageMovable(page))
-                               putback_movable_page(page);
+               if (unlikely(__folio_test_movable(folio))) {
+                       VM_BUG_ON_FOLIO(!folio_test_isolated(folio), folio);
+                       folio_lock(folio);
+                       if (folio_test_movable(folio))
+                               putback_movable_folio(folio);
                        else
-                               ClearPageIsolated(page);
-                       unlock_page(page);
-                       put_page(page);
+                               folio_clear_isolated(folio);
+                       folio_unlock(folio);
+                       folio_put(folio);
                } else {
-                       mod_node_page_state(page_pgdat(page), NR_ISOLATED_ANON +
-                                       page_is_file_lru(page), -thp_nr_pages(page));
-                       putback_lru_page(page);
+                       node_stat_mod_folio(folio, NR_ISOLATED_ANON +
+                                       folio_is_file_lru(folio), -folio_nr_pages(folio));
+                       folio_putback_lru(folio);
                }
        }
 }