On 8/18/25 01:52, Christoph Hellwig wrote: > On Sun, Aug 17, 2025 at 10:32:00AM -0400, Ethan Ferguson wrote: >> Both e2fsprogs and btrfs-progs now use the FS_IOC_{GET,SET}FSLABEL >> ioctls to change the label on a mounted filesystem. > > Additionally userspace writes to blocks on mounted file systems are > dangerous. They can easily corrupt data when racing with updates > performed by the kernel, and are impossible when the the > CONFIG_BLK_DEV_WRITE_MOUNTED config option is disabled. That's fair. I took a look at how btrfs guards against this, it seems as if they use mnt_want_write_file to guard against bad writes, and only write to the in-memory superblock, and commit the transaction afterwards. However, this (during my testing with CONFIG_BLK_DEV_WRITE_MOUNTED both on and off) still results in an immediate disk flush. My changes from this thread also seem to work with CONFIG_BLK_DEV_WRITE_MOUNTED both disabled and enabled. Maybe an alternative would be to only write to sbi->volume_label (with mutex guarding), and only flush to disk on exfat_put_super? And to use mnt_want_write_file as well. Unfortunately, given that I'm pretty new to kernel development, I wouldn't know that the best way to approach this. Any thoughts, or pointers in the right direction, would be appreciated. Thank you for the feedback!
On Mon, Aug 18, 2025 at 01:49:11PM -0400, Ethan Ferguson wrote: > That's fair. I took a look at how btrfs guards against this, it seems > as if they use mnt_want_write_file to guard against bad writes, and > only write to the in-memory superblock, and commit the transaction > afterwards. However, this (during my testing with > CONFIG_BLK_DEV_WRITE_MOUNTED both on and off) still results in an > immediate disk flush. > > My changes from this thread also seem to work with > CONFIG_BLK_DEV_WRITE_MOUNTED both disabled and enabled. What I meant to say is that we actually need your change to work with CONFIG_BLK_DEV_WRITE_MOUNTED, as the current way in tunefs is broken, even if that's something a few Linux file systems have historically done. > Maybe an alternative would be to only write to sbi->volume_label (with > mutex guarding), and only flush to disk on exfat_put_super? And to use > mnt_want_write_file as well. I think your patch is fine as-is. I've just been trying to give you additional ammunition.
© 2016 - 2025 Red Hat, Inc.