secretmem: convert page_is_secretmem() to folio_is_secretmem()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 22 Aug 2023 20:23:35 +0000 (21:23 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 24 Aug 2023 23:20:31 +0000 (16:20 -0700)
The only caller already has a folio, so use it to save calling
compound_head() in PageLRU() and remove a use of page->mapping.

Link: https://lkml.kernel.org/r/20230822202335.179081-1-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/secretmem.h
mm/gup.c

index 988528b..35f3a4a 100644 (file)
@@ -6,24 +6,23 @@
 
 extern const struct address_space_operations secretmem_aops;
 
-static inline bool page_is_secretmem(struct page *page)
+static inline bool folio_is_secretmem(struct folio *folio)
 {
        struct address_space *mapping;
 
        /*
-        * Using page_mapping() is quite slow because of the actual call
-        * instruction and repeated compound_head(page) inside the
-        * page_mapping() function.
+        * Using folio_mapping() is quite slow because of the actual call
+        * instruction.
         * We know that secretmem pages are not compound and LRU so we can
         * save a couple of cycles here.
         */
-       if (PageCompound(page) || !PageLRU(page))
+       if (folio_test_large(folio) || !folio_test_lru(folio))
                return false;
 
        mapping = (struct address_space *)
-               ((unsigned long)page->mapping & ~PAGE_MAPPING_FLAGS);
+               ((unsigned long)folio->mapping & ~PAGE_MAPPING_FLAGS);
 
-       if (!mapping || mapping != page->mapping)
+       if (!mapping || mapping != folio->mapping)
                return false;
 
        return mapping->a_ops == &secretmem_aops;
@@ -39,7 +38,7 @@ static inline bool vma_is_secretmem(struct vm_area_struct *vma)
        return false;
 }
 
-static inline bool page_is_secretmem(struct page *page)
+static inline bool folio_is_secretmem(struct folio *folio)
 {
        return false;
 }
index ee4fc15..948f3b4 100644 (file)
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -2600,7 +2600,7 @@ static int gup_pte_range(pmd_t pmd, pmd_t *pmdp, unsigned long addr,
                if (!folio)
                        goto pte_unmap;
 
-               if (unlikely(page_is_secretmem(page))) {
+               if (unlikely(folio_is_secretmem(folio))) {
                        gup_put_folio(folio, 1, flags);
                        goto pte_unmap;
                }