On 5/17/26 15:54, Zi Yan wrote: > collapse_file() is capable of collapsing pagecache folios from writable > files to PMD folios. Now enable clean pagecache folio collapse in > addition to read-only pagecache folio collapse by removing the > inode_is_open_for_write() from file_thp_enabled() and only performing > filemap_flush() if the file is read-only. > > This means userspace needs to explicitly flush the content of pagecache > folios before khugepaged can collapse the folios, or use > madvise(MADV_COLLAPSE), which does the flush in the retry. The reason is > that blindly enabling dirty pagecache folio from writable files collapse > makes khugepaged flush these folios all the time. It is undesirable to > cause system level pagecache flushes. > > To properly support dirty pagecache folio collapse, filemap_flush() needs > to be avoided. Potentially, merging associated buffer instead of dropping > it with filemap_release_folio() might be needed. > > NOTE: this breaks khugepaged selftests for writable file pagecache > collapse, which is set to fail all the time. The next commit fixes it. > > Signed-off-by: Zi Yan <[email protected]> > Reviewed-by: Lance Yang <[email protected]> > Cc: Al Viro <[email protected]> > Cc: Baolin Wang <[email protected]> > Cc: Barry Song <[email protected]> > Cc: Chris Mason <[email protected]> > Cc: Christian Brauner <[email protected]> > Cc: David Hildenbrand (Arm) <[email protected]> > Cc: David Sterba <[email protected]> > Cc: Dev Jain <[email protected]> > Cc: Jan Kara <[email protected]> > Cc: Liam Howlett <[email protected]> > Cc: Lorenzo Stoakes <[email protected]> > Cc: Matthew Wilcox (Oracle) <[email protected]> > Cc: Michal Hocko <[email protected]> > Cc: Mike Rapoport <[email protected]> > Cc: Nico Pache <[email protected]> > Cc: Ryan Roberts <[email protected]> > Cc: Shuah Khan <[email protected]> > Cc: Song Liu <[email protected]> > Cc: Suren Baghdasaryan <[email protected]> > Cc: Vlastimil Babka <[email protected]>
Acked-by: David Hildenbrand (Arm) <[email protected]> -- Cheers, David

