vmscan: move initialisation of mapping down
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 13 May 2022 03:23:03 +0000 (20:23 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 13 May 2022 14:20:15 +0000 (07:20 -0700)
Now that we don't interrogate the BDI for congestion, we can delay looking
up the folio's mapping until we've got further through the function,
reducing register pressure and saving a call to folio_mapping for folios
we're adding to the swap cache.

Link: https://lkml.kernel.org/r/20220504182857.4013401-13-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/vmscan.c

index 972557e..725a291 100644 (file)
@@ -1588,12 +1588,11 @@ retry:
                        stat->nr_unqueued_dirty += nr_pages;
 
                /*
-                * Treat this page as congested if the underlying BDI is or if
+                * Treat this page as congested if
                 * pages are cycling through the LRU so quickly that the
                 * pages marked for immediate reclaim are making it to the
                 * end of the LRU a second time.
                 */
-               mapping = page_mapping(page);
                if (writeback && PageReclaim(page))
                        stat->nr_congested += nr_pages;
 
@@ -1744,9 +1743,6 @@ retry:
                                        if (!add_to_swap(folio))
                                                goto activate_locked_split;
                                }
-
-                               /* Adding to swap updated mapping */
-                               mapping = page_mapping(page);
                        }
                } else if (PageSwapBacked(page) && PageTransHuge(page)) {
                        /* Split shmem THP */
@@ -1787,6 +1783,7 @@ retry:
                        }
                }
 
+               mapping = folio_mapping(folio);
                if (folio_test_dirty(folio)) {
                        /*
                         * Only kswapd can writeback filesystem folios