]> git.baikalelectronics.ru Git - kernel.git/commit
VFS: Differentiate mount flags (MS_*) from internal superblock flags
authorDavid Howells <dhowells@redhat.com>
Mon, 17 Jul 2017 07:45:35 +0000 (08:45 +0100)
committerDavid Howells <dhowells@redhat.com>
Mon, 17 Jul 2017 07:45:35 +0000 (08:45 +0100)
commit8219d5b2f7689bc0f26a7a0163a7e15f02699fa1
tree7e56b715ce6b1c4ad13a4c3cfbce9462efe875bc
parentd361759f2647df1f8b3946f632c7d83198d3dee9
VFS: Differentiate mount flags (MS_*) from internal superblock flags

Differentiate the MS_* flags passed to mount(2) from the internal flags set
in the super_block's s_flags.  s_flags are now called SB_*, with the names
and the values for the moment mirroring the MS_* flags that they're
equivalent to.

In this patch, just the headers are altered and some kernel code where
blind automated conversion isn't necessarily correct.

Note that this shows up some interesting issues:

 (1) Some MS_* flags get translated to MNT_* flags (such as MS_NODEV ->
     MNT_NODEV) without passing this on to the filesystem, but some
     filesystems set such flags anyway.

 (2) The ->remount_fs() methods of some filesystems adjust the *flags
     argument by setting MS_* flags in it, such as MS_NOATIME - but these
     flags are then scrubbed by do_remount_sb() (only the occupants of
     MS_RMT_MASK are permitted: MS_RDONLY, MS_SYNCHRONOUS, MS_MANDLOCK,
     MS_I_VERSION and MS_LAZYTIME)

I'm not sure what's the best way to solve all these cases.

Suggested-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: David Howells <dhowells@redhat.com>
Documentation/filesystems/porting
fs/namespace.c
fs/super.c
include/linux/fs.h
init/do_mounts.c