On Mon, Nov 24, 2014 at 07:21:01AM -0800, Christoph Hellwig wrote:
On Fri, Nov 21, 2014 at 02:59:21PM -0500, Theodore Ts'o wrote:
quoted
We needed to preserve update_time() because btrfs wants to have a
special btrfs_root_readonly() check; otherwise we could drop the
update_time() inode operation entirely.
Can't btrfs just set the immutable flag on every inode that is read
when the root has the BTRFS_ROOT_SUBVOL_RDONLY flag? That would
cut down the places that need this check to the ioctl path so that
we prevent users from clearling the immutable flag.
Sounds like a good plan to me, although I'm not sure I understand how
BTRFS_ROOT_SUBVOL_RDONLY flag works, since I would have thought there
are all sorts of places in the VFS layer where it is currently
checking MS_RDONLY and MNT_READONLY and _not_ checking
BTRFS_ROOT_SUBVOL_RDONLY isn't causing other problems.
But unless there's something more subtle going on, it would seem to me
that setting the immutable flag on each inode would be a better way to
go in any case.
- Ted