On Thu, Mar 26, 2026 at 09:42:50PM -0400, Zi Yan wrote:
> Replace it with a check on the max folio order of the file's address space
> mapping, making sure PMD_ORDER is supported.
>
> Signed-off-by: Zi Yan <[email protected]>
> ---
> mm/huge_memory.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index c7873dbdc470..1da1467328a3 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -89,9 +89,6 @@ static inline bool file_thp_enabled(struct vm_area_struct
> *vma)
> {
> struct inode *inode;
>
> - if (!IS_ENABLED(CONFIG_READ_ONLY_THP_FOR_FS))
> - return false;
> -
> if (!vma->vm_file)
> return false;
>
> @@ -100,6 +97,9 @@ static inline bool file_thp_enabled(struct vm_area_struct
> *vma)
> if (IS_ANON_FILE(inode))
> return false;
>
> + if (mapping_max_folio_order(inode->i_mapping) < PMD_ORDER)
> + return false;
> +
At this point I think this should be a separate function quite honestly and
share it with 2/10's use, and then you can put the comment in here re: anon
shmem etc.
Though that won't apply here of course as shmem_allowable_huge_orders() would
have been invoked :)
But no harm in refactoring it anyway, and the repetitive < PMD_ORDER stuff is
unfortunate.
Buuut having said that is this right actually?
Because we have:
if (((in_pf || smaps)) && vma->vm_ops->huge_fault)
return orders;
Above it, and now you're enabling huge folio file systems to do non-page fault
THP and that's err... isn't that quite a big change?
So yeah probably no to this patch as is :) we should just drop
file_thp_enabled()?
> return !inode_is_open_for_write(inode) && S_ISREG(inode->i_mode);
> }
>
> --
> 2.43.0
>