truncate: Convert invalidate_inode_pages2_range to folios
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 20 May 2021 12:17:44 +0000 (08:17 -0400)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Sat, 8 Jan 2022 05:28:41 +0000 (00:28 -0500)
If we're going to unmap a folio, we have to be sure to unmap the entire
folio, not just the part of it which lies after the search index.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: William Kucharski <william.kucharski@oracle.com>
mm/truncate.c

index a1113b0abb30980b5384ac59fd9c08d490614377..2d1dae085acb803a7be99accd1c2c67562073f2e 100644 (file)
@@ -599,13 +599,13 @@ failed:
        return 0;
 }
 
-static int do_launder_page(struct address_space *mapping, struct page *page)
+static int do_launder_folio(struct address_space *mapping, struct folio *folio)
 {
-       if (!PageDirty(page))
+       if (!folio_test_dirty(folio))
                return 0;
-       if (page->mapping != mapping || mapping->a_ops->launder_page == NULL)
+       if (folio->mapping != mapping || mapping->a_ops->launder_page == NULL)
                return 0;
-       return mapping->a_ops->launder_page(page);
+       return mapping->a_ops->launder_page(&folio->page);
 }
 
 /**
@@ -671,7 +671,7 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
                                unmap_mapping_folio(folio);
                        BUG_ON(folio_mapped(folio));
 
-                       ret2 = do_launder_page(mapping, &folio->page);
+                       ret2 = do_launder_folio(mapping, folio);
                        if (ret2 == 0) {
                                if (!invalidate_complete_folio2(mapping, folio))
                                        ret2 = -EBUSY;