mm: convert isolate_page() to mf_isolate_folio()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 8 Nov 2023 18:28:08 +0000 (18:28 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 11 Dec 2023 00:51:38 +0000 (16:51 -0800)
The only caller now has a folio, so pass it in and operate on it.  Saves
many page->folio conversions and introduces only one folio->page
conversion when calling isolate_movable_page().

Link: https://lkml.kernel.org/r/20231108182809.602073-6-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Naoya Horiguchi <naoya.horiguchi@nec.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/memory-failure.c

index 075db5b5ad5e62e8be7f26fdb779f67f961daeab..b601f59ed0620cc5644103609fae8b4cb9d63427 100644 (file)
@@ -2602,37 +2602,37 @@ unlock_mutex:
 }
 EXPORT_SYMBOL(unpoison_memory);
 
-static bool isolate_page(struct page *page, struct list_head *pagelist)
+static bool mf_isolate_folio(struct folio *folio, struct list_head *pagelist)
 {
        bool isolated = false;
 
-       if (PageHuge(page)) {
-               isolated = isolate_hugetlb(page_folio(page), pagelist);
+       if (folio_test_hugetlb(folio)) {
+               isolated = isolate_hugetlb(folio, pagelist);
        } else {
-               bool lru = !__PageMovable(page);
+               bool lru = !__folio_test_movable(folio);
 
                if (lru)
-                       isolated = isolate_lru_page(page);
+                       isolated = folio_isolate_lru(folio);
                else
-                       isolated = isolate_movable_page(page,
+                       isolated = isolate_movable_page(&folio->page,
                                                        ISOLATE_UNEVICTABLE);
 
                if (isolated) {
-                       list_add(&page->lru, pagelist);
+                       list_add(&folio->lru, pagelist);
                        if (lru)
-                               inc_node_page_state(page, NR_ISOLATED_ANON +
-                                                   page_is_file_lru(page));
+                               node_stat_add_folio(folio, NR_ISOLATED_ANON +
+                                                   folio_is_file_lru(folio));
                }
        }
 
        /*
-        * If we succeed to isolate the page, we grabbed another refcount on
-        * the page, so we can safely drop the one we got from get_any_page().
-        * If we failed to isolate the page, it means that we cannot go further
+        * If we succeed to isolate the folio, we grabbed another refcount on
+        * the folio, so we can safely drop the one we got from get_any_page().
+        * If we failed to isolate the folio, it means that we cannot go further
         * and we will return an error, so drop the reference we got from
         * get_any_page() as well.
         */
-       put_page(page);
+       folio_put(folio);
        return isolated;
 }
 
@@ -2686,7 +2686,7 @@ static int soft_offline_in_use_page(struct page *page)
                return 0;
        }
 
-       if (isolate_page(&folio->page, &pagelist)) {
+       if (mf_isolate_folio(folio, &pagelist)) {
                ret = migrate_pages(&pagelist, alloc_migration_target, NULL,
                        (unsigned long)&mtc, MIGRATE_SYNC, MR_MEMORY_FAILURE, NULL);
                if (!ret) {