With fuse now using iomap for writeback handling, inode blocksize changes are problematic because iomap relies on the inode blocksize value for its internal bitmap logic. There are a few options for addressing this, as discussed in [1]. a) add "u8 blkbits" to iomap internals (struct iomap_folio_state) and change iomap logic to use this static value instead of using inode->i_blkbits b) remove all folios for the inode from the page cache and synchronize that with modifying inode->i_blkbits (unfortunately this does not work, see [1] for more details) c) disallow the inode blocksize from changing dynamically in fuse In the discussion in [1], we decided to go with c) given that servers don't have a good use case for dynamically modifying the blocksize and it doesn't seem likely that servers use this. If the server wishes to set a constant blocksize for all inodes, then from patch 2, this can be done at mount time through the -oblksize= configuration option. Thanks, Joanne [1] https://lore.kernel.org/linux-fsdevel/CAJnrk1ZREcrd=FNUYLVWwXUeJ3mJz9J+aqyEvoHkyG3RrJ2QkA@xxxxxxxxxxxxxx/T/#m13c375821fb36c491626a59b552ed0cc5061736a Joanne Koong (2): fuse: disallow dynamic inode blksize changes fuse: add blksize configuration at mount for non-fuseblk servers fs/fuse/dir.c | 9 +-------- fs/fuse/inode.c | 18 +++++++++--------- include/uapi/linux/fuse.h | 4 ++-- 3 files changed, 12 insertions(+), 19 deletions(-) -- 2.47.3