On 2026/3/27 09:42, Zi Yan wrote:
After READ_ONLY_THP_FOR_FS is removed, FS either supports large folio or
not. folio_split() can be used on a FS with large folio support without
worrying about getting a THP on a FS without large folio support.

Signed-off-by: Zi Yan <[email protected]>
---
  include/linux/huge_mm.h | 25 ++-----------------------
  mm/truncate.c           |  8 ++++----
  2 files changed, 6 insertions(+), 27 deletions(-)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index 1258fa37e85b..171de8138e98 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -389,27 +389,6 @@ static inline int split_huge_page_to_order(struct page 
*page, unsigned int new_o
        return split_huge_page_to_list_to_order(page, NULL, new_order);
  }
-/**
- * try_folio_split_to_order() - try to split a @folio at @page to @new_order
- * using non uniform split.
- * @folio: folio to be split
- * @page: split to @new_order at the given page
- * @new_order: the target split order
- *
- * Try to split a @folio at @page using non uniform split to @new_order, if
- * non uniform split is not supported, fall back to uniform split. After-split
- * folios are put back to LRU list. Use min_order_for_split() to get the lower
- * bound of @new_order.
- *
- * Return: 0 - split is successful, otherwise split failed.
- */
-static inline int try_folio_split_to_order(struct folio *folio,
-               struct page *page, unsigned int new_order)
-{
-       if (folio_check_splittable(folio, new_order, SPLIT_TYPE_NON_UNIFORM))
-               return split_huge_page_to_order(&folio->page, new_order);
-       return folio_split(folio, new_order, page, NULL);
-}
  static inline int split_huge_page(struct page *page)
  {
        return split_huge_page_to_list_to_order(page, NULL, 0);
@@ -641,8 +620,8 @@ static inline int split_folio_to_list(struct folio *folio, 
struct list_head *lis
        return -EINVAL;
  }
-static inline int try_folio_split_to_order(struct folio *folio,
-               struct page *page, unsigned int new_order)
+static inline int folio_split(struct folio *folio, unsigned int new_order,
+               struct page *page, struct list_head *list);

Ouch, that ';' wasn't supposed to be there, right?

Reply via email to