summaryrefslogtreecommitdiff
path: root/fs/mount.h
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2011-11-23 12:14:10 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2012-01-03 22:56:57 -0500
commit7d6fec45a5131918b51dcd76da52f2ec86a85be6 (patch)
tree82af862264cfa176a37c7d9f915806346c8df0bc /fs/mount.h
parentdabe0dc194d5d56d379a8994fff47392744b6491 (diff)
downloadlwn-7d6fec45a5131918b51dcd76da52f2ec86a85be6.tar.gz
lwn-7d6fec45a5131918b51dcd76da52f2ec86a85be6.zip
vfs: start hiding vfsmount guts series
Almost all fields of struct vfsmount are used only by core VFS (and a fairly small part of it, at that). The plan: embed struct vfsmount into struct mount, making the latter visible only to core parts of VFS. Then move fields from vfsmount to mount, eventually leaving only mnt_root/mnt_sb/mnt_flags in struct vfsmount. Filesystem code still gets pointers to struct vfsmount and remains unchanged; all such pointers go to struct vfsmount embedded into the instances of struct mount allocated by fs/namespace.c. When fs/namespace.c et.al. get a pointer to vfsmount, they turn it into pointer to mount (using container_of) and work with that. This is the first part of series; struct mount is introduced, allocation switched to using it. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/mount.h')
-rw-r--r--fs/mount.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/mount.h b/fs/mount.h
index 7890e49f74ef..47da8163e1f4 100644
--- a/fs/mount.h
+++ b/fs/mount.h
@@ -1,5 +1,14 @@
#include <linux/mount.h>
+struct mount {
+ struct vfsmount mnt;
+};
+
+static inline struct mount *real_mount(struct vfsmount *mnt)
+{
+ return container_of(mnt, struct mount, mnt);
+}
+
static inline int mnt_has_parent(struct vfsmount *mnt)
{
return mnt != mnt->mnt_parent;