Christoph wants to remove write_begin/write_end from aops and pass them to filemap as callback functions. Hre's one possible route to do this. I combined it with the folio conversion (because why touch the same code twice?) and tweaked some of the other things (support for ridiculously large folios with size_t lengths, remove the need to initialise fsdata by passing only a pointer to the fsdata pointer). And then I converted ext4, which is probably the worst filesystem to convert because it needs three different bwops. Most fs will only need one. Not written yet: convert all the other fs, remove wrappers. Matthew Wilcox (Oracle) (3): fs: Introduce buffered_write_operations fs: Supply optional buffered_write_operations in buffer.c ext4: Convert to buffered_write_operations fs/buffer.c | 62 +++++++++++++++++++++++-------- fs/ext4/ext4.h | 8 +++- fs/ext4/file.c | 10 ++++- fs/ext4/inline.c | 15 +++----- fs/ext4/inode.c | 73 +++++++++++++++++++------------------ fs/jfs/file.c | 3 +- fs/ramfs/file-mmu.c | 3 +- fs/ufs/file.c | 2 +- include/linux/buffer_head.h | 22 +++++++++-- include/linux/fs.h | 3 -- include/linux/pagemap.h | 22 +++++++++++ mm/filemap.c | 70 +++++++++++++++++++++++------------ 12 files changed, 193 insertions(+), 100 deletions(-) -- 2.43.0