diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2011-11-23 12:14:10 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-01-03 22:56:57 -0500 |
commit | 7d6fec45a5131918b51dcd76da52f2ec86a85be6 (patch) | |
tree | 82af862264cfa176a37c7d9f915806346c8df0bc /fs/mount.h | |
parent | dabe0dc194d5d56d379a8994fff47392744b6491 (diff) | |
download | lwn-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.h | 9 |
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; |