Hi all, This patchset removes READ_ONLY_THP_FOR_FS Kconfig and enables creating read-only THPs for FSes with large folio support (the supported orders need to include PMD_ORDER) by default.
The changes are: 1. collapse_file() from mm/khugepaged.c, instead of checking CONFIG_READ_ONLY_THP_FOR_FS, makes sure the mapping_max_folio_order() of struct address_space of the file is at least PMD_ORDER. 2. file_thp_enabled() also checks mapping_max_folio_order() instead. 3. truncate_inode_partial_folio() calls folio_split() directly instead of the removed try_folio_split_to_order(), since large folios can only show up on a FS with large folio support. 4. nr_thps is removed from struct address_space, since it is no longer needed to drop all read-only THPs from a FS without large folio support when the fd becomes writable. Its related filemap_nr_thps*() are removed too. 5. folio_check_splittable() no longer checks READ_ONLY_THP_FOR_FS. 6. Updated comments in various places. Changelog === >From RFC[1]: 1. instead of removing READ_ONLY_THP_FOR_FS function entirely, turn it on by default for all FSes with large folio support and the supported orders includes PMD_ORDER. Suggestions and comments are welcome. Link: https://lore.kernel.org/all/[email protected]/ [1] Zi Yan (10): mm: remove READ_ONLY_THP_FOR_FS Kconfig option mm/khugepaged: remove READ_ONLY_THP_FOR_FS check mm: fs: remove filemap_nr_thps*() functions and their users fs: remove nr_thps from struct address_space mm/huge_memory: remove READ_ONLY_THP_FOR_FS from file_thp_enabled() mm/huge_memory: remove folio split check for READ_ONLY_THP_FOR_FS mm/truncate: use folio_split() in truncate_inode_partial_folio() fs/btrfs: remove a comment referring to READ_ONLY_THP_FOR_FS selftests/mm: remove READ_ONLY_THP_FOR_FS in khugepaged selftests/mm: remove READ_ONLY_THP_FOR_FS from comments in guard-regions fs/btrfs/defrag.c | 3 -- fs/inode.c | 3 -- fs/open.c | 27 ---------------- include/linux/fs.h | 5 --- include/linux/huge_mm.h | 25 ++------------- include/linux/pagemap.h | 29 ----------------- mm/Kconfig | 11 ------- mm/filemap.c | 1 - mm/huge_memory.c | 29 ++--------------- mm/khugepaged.c | 36 +++++----------------- mm/truncate.c | 8 ++--- tools/testing/selftests/mm/guard-regions.c | 9 +++--- tools/testing/selftests/mm/khugepaged.c | 4 +-- 13 files changed, 23 insertions(+), 167 deletions(-) -- 2.43.0

