Hi, Recently I'm working on migrating btrfs_buffered_write() to utilize write_begin() and write_end() callbacks. Currently only the following filesystems really utilizing that pointer: - bcachefs Which is a structure of 24 bytes without any extra pointer. - f2fs (for compression) Which is holding a pointer to an array of pages. - ext4 Only utilize that pointer as a flag for ext4_da_write_begin() - ocfs2 This a large structure holding a lot of things - (Future) btrfs Only holds a pointer and a bool. (Also needs a way to pass ki_flags to support IOCB_NOWAIT though) Thus I'm wondering should we make perform_generic_write() to accept a *fsdata pointer, other than making write_begin() to allocate one. So that we only need to allocate the memory (or use the on-stack one) once per write, other than once per folio. This will cause no change to f2fs/ext4, but should benefit ocfs2/bcachefs and of-course btrfs. Or is there some special corner case that relies on the current behavior? Thanks, Qu