mm/khugepaged: convert is_refcount_suitable() to use folios
[linux-2.6-microblaze.git] / mm / khugepaged.c
index 6c4b5af..9efd8ff 100644 (file)
@@ -524,15 +524,15 @@ static void release_pte_pages(pte_t *pte, pte_t *_pte,
        }
 }
 
-static bool is_refcount_suitable(struct page *page)
+static bool is_refcount_suitable(struct folio *folio)
 {
        int expected_refcount;
 
-       expected_refcount = total_mapcount(page);
-       if (PageSwapCache(page))
-               expected_refcount += compound_nr(page);
+       expected_refcount = folio_mapcount(folio);
+       if (folio_test_swapcache(folio))
+               expected_refcount += folio_nr_pages(folio);
 
-       return page_count(page) == expected_refcount;
+       return folio_ref_count(folio) == expected_refcount;
 }
 
 static int __collapse_huge_page_isolate(struct vm_area_struct *vma,
@@ -625,7 +625,7 @@ static int __collapse_huge_page_isolate(struct vm_area_struct *vma,
                 * but not from this process. The other process cannot write to
                 * the page, only trigger CoW.
                 */
-               if (!is_refcount_suitable(&folio->page)) {
+               if (!is_refcount_suitable(folio)) {
                        folio_unlock(folio);
                        result = SCAN_PAGE_COUNT;
                        goto out;
@@ -1371,7 +1371,7 @@ static int hpage_collapse_scan_pmd(struct mm_struct *mm,
                 * has excessive GUP pins (i.e. 512).  Anyway the same check
                 * will be done again later the risk seems low.
                 */
-               if (!is_refcount_suitable(&folio->page)) {
+               if (!is_refcount_suitable(folio)) {
                        result = SCAN_PAGE_COUNT;
                        goto out_unmap;
                }