diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-08 15:19:57 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-08 15:19:57 -0500 |
commit | 972b2c719990f91eb3b2310d44ef8a2d38955a14 (patch) | |
tree | b25a250ec5bec4b7b6355d214642d8b57c5cab32 /fs/mount.h | |
parent | 02550d61f49266930e674286379d3601006b2893 (diff) | |
parent | c3aa077648e147783a7a53b409578234647db853 (diff) |
Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
* 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (165 commits)
reiserfs: Properly display mount options in /proc/mounts
vfs: prevent remount read-only if pending removes
vfs: count unlinked inodes
vfs: protect remounting superblock read-only
vfs: keep list of mounts for each superblock
vfs: switch ->show_options() to struct dentry *
vfs: switch ->show_path() to struct dentry *
vfs: switch ->show_devname() to struct dentry *
vfs: switch ->show_stats to struct dentry *
switch security_path_chmod() to struct path *
vfs: prefer ->dentry->d_sb to ->mnt->mnt_sb
vfs: trim includes a bit
switch mnt_namespace ->root to struct mount
vfs: take /proc/*/mounts and friends to fs/proc_namespace.c
vfs: opencode mntget() mnt_set_mountpoint()
vfs: spread struct mount - remaining argument of next_mnt()
vfs: move fsnotify junk to struct mount
vfs: move mnt_devname
vfs: move mnt_list to struct mount
vfs: switch pnode.h macros to struct mount *
...
Diffstat (limited to 'fs/mount.h')
-rw-r--r-- | fs/mount.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/fs/mount.h b/fs/mount.h new file mode 100644 index 000000000000..4ef36d93e5a2 --- /dev/null +++ b/fs/mount.h | |||
@@ -0,0 +1,76 @@ | |||
1 | #include <linux/mount.h> | ||
2 | #include <linux/seq_file.h> | ||
3 | #include <linux/poll.h> | ||
4 | |||
5 | struct mnt_namespace { | ||
6 | atomic_t count; | ||
7 | struct mount * root; | ||
8 | struct list_head list; | ||
9 | wait_queue_head_t poll; | ||
10 | int event; | ||
11 | }; | ||
12 | |||
13 | struct mnt_pcp { | ||
14 | int mnt_count; | ||
15 | int mnt_writers; | ||
16 | }; | ||
17 | |||
18 | struct mount { | ||
19 | struct list_head mnt_hash; | ||
20 | struct mount *mnt_parent; | ||
21 | struct dentry *mnt_mountpoint; | ||
22 | struct vfsmount mnt; | ||
23 | #ifdef CONFIG_SMP | ||
24 | struct mnt_pcp __percpu *mnt_pcp; | ||
25 | atomic_t mnt_longterm; /* how many of the refs are longterm */ | ||
26 | #else | ||
27 | int mnt_count; | ||
28 | int mnt_writers; | ||
29 | #endif | ||
30 | struct list_head mnt_mounts; /* list of children, anchored here */ | ||
31 | struct list_head mnt_child; /* and going through their mnt_child */ | ||
32 | struct list_head mnt_instance; /* mount instance on sb->s_mounts */ | ||
33 | const char *mnt_devname; /* Name of device e.g. /dev/dsk/hda1 */ | ||
34 | struct list_head mnt_list; | ||
35 | struct list_head mnt_expire; /* link in fs-specific expiry list */ | ||
36 | struct list_head mnt_share; /* circular list of shared mounts */ | ||
37 | struct list_head mnt_slave_list;/* list of slave mounts */ | ||
38 | struct list_head mnt_slave; /* slave list entry */ | ||
39 | struct mount *mnt_master; /* slave is on master->mnt_slave_list */ | ||
40 | struct mnt_namespace *mnt_ns; /* containing namespace */ | ||
41 | #ifdef CONFIG_FSNOTIFY | ||
42 | struct hlist_head mnt_fsnotify_marks; | ||
43 | __u32 mnt_fsnotify_mask; | ||
44 | #endif | ||
45 | int mnt_id; /* mount identifier */ | ||
46 | int mnt_group_id; /* peer group identifier */ | ||
47 | int mnt_expiry_mark; /* true if marked for expiry */ | ||
48 | int mnt_pinned; | ||
49 | int mnt_ghosts; | ||
50 | }; | ||
51 | |||
52 | static inline struct mount *real_mount(struct vfsmount *mnt) | ||
53 | { | ||
54 | return container_of(mnt, struct mount, mnt); | ||
55 | } | ||
56 | |||
57 | static inline int mnt_has_parent(struct mount *mnt) | ||
58 | { | ||
59 | return mnt != mnt->mnt_parent; | ||
60 | } | ||
61 | |||
62 | extern struct mount *__lookup_mnt(struct vfsmount *, struct dentry *, int); | ||
63 | |||
64 | static inline void get_mnt_ns(struct mnt_namespace *ns) | ||
65 | { | ||
66 | atomic_inc(&ns->count); | ||
67 | } | ||
68 | |||
69 | struct proc_mounts { | ||
70 | struct seq_file m; /* must be the first element */ | ||
71 | struct mnt_namespace *ns; | ||
72 | struct path root; | ||
73 | int (*show)(struct seq_file *, struct vfsmount *); | ||
74 | }; | ||
75 | |||
76 | extern const struct seq_operations mounts_op; | ||