Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

fuse: keep inode->i_blkbits constant

With fuse now using iomap for writeback handling, inode blkbits changes
are problematic because iomap relies on inode->i_blkbits for its
internal bitmap logic. Currently we change inode->i_blkbits in fuse to
match the attr->blksize value passed in by the server.

This commit keeps inode->i_blkbits constant in fuse. Any attr->blksize
values passed in by the server will not update inode->i_blkbits. The
client-side behavior for stat is unaffected, stat will still reflect the
blocksize passed in by the server.

Signed-off-by: Joanne Koong <joannelkoong@gmail.com>
Link: https://lore.kernel.org/20250807175015.515192-1-joannelkoong@gmail.com
Fixes: ef7e7cbb32 ("fuse: use iomap for writeback")
Signed-off-by: Christian Brauner <brauner@kernel.org>

authored by

Joanne Koong and committed by
Christian Brauner
542ede09 bef2981b

-5
-5
fs/fuse/inode.c
··· 289 289 } 290 290 } 291 291 292 - if (attr->blksize != 0) 293 - inode->i_blkbits = ilog2(attr->blksize); 294 - else 295 - inode->i_blkbits = inode->i_sb->s_blocksize_bits; 296 - 297 292 /* 298 293 * Don't set the sticky bit in i_mode, unless we want the VFS 299 294 * to check permissions. This prevents failures due to the