I know David is working to make ceph large-folio-aware from the bottom up. Here's my attempt at making the top (ie the part of ceph that interacts with the page cache) folio-aware. Mostly this is just phasing out use of struct page in favour of struct folio and using the new APIs. The fscrypt interaction still needs a bit of work, but it should be a little easier now. There's still some weirdness in how ceph interacts with the page cache; for example it holds folios locked while doing writeback instead of dropping the folio lock after setting the writeback flag. I'm not sure why it does that, but I don't want to try fixing that as part of this series. I don't have a ceph setup, so these patches are only compile tested. I really want to be rid of some compat code, and cecph is sometimes the last user (or really close to being the last user). Matthew Wilcox (Oracle) (15): ceph: Convert ceph_writepages_start() to use folios a little more ceph: Convert ceph_page_mkwrite() to use a folio mm: Delete page_mkwrite_check_truncate() ceph: Add a migrate_folio method ceph: Remove ceph_writepage() ceph: Convert ceph_find_incompatible() to take a folio ceph: Convert writepage_nounlock() to take a folio ceph: Convert writepages_finish() to use a folio ceph: Use a folio in ceph_filemap_fault() ceph: Convert ceph_read_iter() to use a folio to read inline data ceph: Convert __ceph_do_getattr() to take a folio ceph: Convert ceph_fill_inode() to take a folio ceph: Convert ceph_fill_inline_data() to take a folio ceph: Convert ceph_set_page_fscache() to ceph_folio_start_fscache() netfs: Remove unused functions .../filesystems/caching/netfs-api.rst | 30 +- fs/ceph/addr.c | 351 ++++++++---------- fs/ceph/file.c | 20 +- fs/ceph/inode.c | 14 +- fs/ceph/mds_client.h | 2 +- fs/ceph/super.h | 8 +- include/linux/netfs.h | 15 - include/linux/pagemap.h | 28 -- 8 files changed, 197 insertions(+), 271 deletions(-) -- 2.40.1