Hi Linus, [Apologies for the late request, but I needed to wait for folios and 9p to be pulled into your tree so that I could get rid of the temporary merge I was using and then I had to wait for my branch to be retested before I could send this your way - and then Willy changed his mind about how to handle foliation of page_endio().] Anyway, could you consider pulling this please? It converts netfslib, 9p and afs to use folios. It also partially converts ceph so that it uses folios on the boundaries with netfslib. To help with this, a couple of folio helper functions are added in the first two patches. If you don't want to take the netfs/9p/afs/ceph bits, could you at least consider taking the folio helpers? Then they would be available to others. These patches don't touch fscache and cachefiles as I intend to remove all the code that deals with pages directly from there. Only nfs and cifs are using the old fscache I/O API now. The new API uses iov_iter instead. Thanks to Jeff Layton, Dominique Martinet and AuriStor for testing and retesting the patches. Thanks, David Changes ======= ver #5: - Got rid of the folio_endio bits again as Willy changed his mind and would rather I inlined the code directly instead. ver #4: - Detached and sent the afs symlink split patch separately. - Handed the 9p netfslibisation patch off to Dominique Martinet. - Added a patch to foliate page_endio(). - Fixed a bug in afs_redirty_page() whereby it didn't set the next page index in the loop and returned too early. - Simplified a check in v9fs_vfs_write_folio_locked()[4]. - Undid a change to afs_symlink_readpage()[4]. - Used offset_in_folio() in afs_write_end()[4]. - Rebased on 9p-folio merge upstream[5]. ver #3: - Rebased on upstream as folios have been pulled. - Imported a patch to convert 9p to netfslib from my fscache-remove-old-api branch[3]. - Foliated netfslib. ver #2: - Reorder the patches to put both non-folio afs patches to the front. - Use page_offset() rather than manual calculation[1]. - Fix folio_inode() to directly access the inode[2]. Link: https://lore.kernel.org/r/YST/0e92OdSH0zjg@xxxxxxxxxxxxxxxxxxxx/ [1] Link: https://lore.kernel.org/r/YST8OcVNy02Rivbm@xxxxxxxxxxxxxxxxxxxx/ [2] Link: https://lore.kernel.org/r/163551653404.1877519.12363794970541005441.stgit@xxxxxxxxxxxxxxxxxxxxxx/ [3] Link: https://lore.kernel.org/r/YYKa3bfQZxK5/wDN@xxxxxxxxxxxxxxxxxxxx/ [4] Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f89ce84bc33330607a782e47a8b19406ed109b15 [5] Link: https://lore.kernel.org/r/2408234.1628687271@xxxxxxxxxxxxxxxxxxxxxx/ # v0 Link: https://lore.kernel.org/r/162981147473.1901565.1455657509200944265.stgit@xxxxxxxxxxxxxxxxxxxxxx/ # v1 Link: https://lore.kernel.org/r/163005740700.2472992.12365214290752300378.stgit@xxxxxxxxxxxxxxxxxxxxxx/ # v2 Link: https://lore.kernel.org/r/163584174921.4023316.8927114426959755223.stgit@xxxxxxxxxxxxxxxxxxxxxx>/ # v3 Link: https://lore.kernel.org/r/163649323416.309189.4637503793406396694.stgit@xxxxxxxxxxxxxxxxxxxxxx/ # v4 Link: https://lore.kernel.org/r/163657847613.834781.7923681076643317435.stgit@xxxxxxxxxxxxxxxxxxxxxx/ # v5 --- The following changes since commit f89ce84bc33330607a782e47a8b19406ed109b15: Merge tag '9p-for-5.16-rc1' of git://github.com/martinetd/linux (2021-11-09 10:30:13 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git tags/netfs-folio-20211111 for you to fetch changes up to 255ed63638da190e2485d32c0f696cd04d34fbc0: afs: Use folios in directory handling (2021-11-10 21:17:09 +0000) ---------------------------------------------------------------- netfs, 9p, afs and ceph (partial) foliation ---------------------------------------------------------------- David Howells (4): folio: Add a function to change the private data attached to a folio folio: Add a function to get the host inode for a folio netfs, 9p, afs, ceph: Use folios afs: Use folios in directory handling fs/9p/vfs_addr.c | 83 ++++++----- fs/9p/vfs_file.c | 20 +-- fs/afs/dir.c | 229 +++++++++++++----------------- fs/afs/dir_edit.c | 154 ++++++++++---------- fs/afs/file.c | 70 +++++---- fs/afs/internal.h | 46 +++--- fs/afs/write.c | 347 ++++++++++++++++++++++----------------------- fs/ceph/addr.c | 80 ++++++----- fs/netfs/read_helper.c | 165 ++++++++++----------- include/linux/netfs.h | 12 +- include/linux/pagemap.h | 33 +++++ include/trace/events/afs.h | 21 +-- mm/page-writeback.c | 2 +- 13 files changed, 636 insertions(+), 626 deletions(-)