]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/vmscan: don't try to reclaim freed folios
authorMiaohe Lin <linmiaohe@huawei.com>
Wed, 8 Jun 2022 14:14:32 +0000 (22:14 +0800)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Wed, 20 Jul 2022 00:15:06 +0000 (20:15 -0400)
If folios were freed from under us, there's no need to reclaim them.  Skip
these folios to save lots of cpu cycles and avoid possible unnecessary
disk I/O.

Link: https://lkml.kernel.org/r/20220608141432.23258-1-linmiaohe@huawei.com
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Cc: Matthew Wilcox <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/vmscan.c

index 97ac6c6c026dcd9d28650dcad424719cd83a2f5d..cd2201ba6d7c822f2c8cd67373803479769615a9 100644 (file)
@@ -1610,13 +1610,19 @@ retry:
                folio = lru_to_folio(page_list);
                list_del(&folio->lru);
 
+               nr_pages = folio_nr_pages(folio);
+
+               if (folio_ref_count(folio) == 1 &&
+                   folio_ref_freeze(folio, 1)) {
+                       /* folio was freed from under us. So we are done. */
+                       goto free_it;
+               }
+
                if (!folio_trylock(folio))
                        goto keep;
 
                VM_BUG_ON_FOLIO(folio_test_active(folio), folio);
 
-               nr_pages = folio_nr_pages(folio);
-
                /* Account the number of base pages */
                sc->nr_scanned += nr_pages;