Re: [PATCH v2 1/2] mm/hugetlb: convert dissolve_free_huge_pages() to folios

From: Sidhartha Kumar
Date: Mon Apr 15 2024 - 15:14:38 EST


On 4/15/24 12:06 PM, Sidhartha Kumar wrote:
On 4/15/24 11:28 AM, Vishal Moola wrote:
On Fri, Apr 12, 2024 at 11:21:38AM -0700, Sidhartha Kumar wrote:
Allows us to rename dissolve_free_huge_pages() to
dissolve_free_hugetlb_folio(). Convert one caller to pass in a folio
directly and use page_folio() to convert the caller in mm/memory-failure.

Signed-off-by: Sidhartha Kumar <sidhartha.kumar@xxxxxxxxxx>
Reviewed-by: Oscar Salvador <osalvador@xxxxxxx>
---

v1 -> v2:
    - Change additional comments which reference hugepages to
      hugetlb folios per Miaohe Lin.
    - introduce patch 2

  include/linux/hugetlb.h |  4 ++--
  mm/hugetlb.c            | 17 ++++++++---------
  mm/memory-failure.c     |  8 ++++----
  3 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index 3f3e628802792..f4191b10345d6 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -861,7 +861,7 @@ static inline int hstate_index(struct hstate *h)
      return h - hstates;
  }
-extern int dissolve_free_huge_page(struct page *page);
+extern int dissolve_free_hugetlb_folio(struct folio *folio);

You could drop the extern here as we don't need it anymore. Aside from that
LGTM.

Reviewed-by: Vishal Moola (Oracle) <vishal.moola@xxxxxxxxx>

Hi Andrew,

Could this diff be folded in this patch to remove the extern per Vishal.

Thanks,
Sid

diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index f4191b10345d6..4cd7895590b6c 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -862,7 +862,7 @@ static inline int hstate_index(struct hstate *h)
 }

 extern int dissolve_free_hugetlb_folio(struct folio *folio);
-extern int dissolve_free_huge_pages(unsigned long start_pfn,
+int dissolve_free_huge_pages(unsigned long start_pfn,
                                    unsigned long end_pfn);

 #ifdef CONFIG_MEMORY_FAILURE


Sorry, that diff is wrong, it should be:

diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index f4191b10345d6..8968e8a3a205d 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -861,7 +861,7 @@ static inline int hstate_index(struct hstate *h)
return h - hstates;
}

-extern int dissolve_free_hugetlb_folio(struct folio *folio);
+int dissolve_free_hugetlb_folio(struct folio *folio);
extern int dissolve_free_huge_pages(unsigned long start_pfn,
unsigned long end_pfn);