diff options
author | Ram Pai <linuxram@us.ibm.com> | 2005-11-07 17:19:33 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 21:18:10 -0500 |
commit | 03e06e68ff76294e53ffa898cb844d2a997b043e (patch) | |
tree | df17444b2c9b89e1eed75e09d46ea36c40ebd1df /fs/pnode.c | |
parent | 07b20889e3052c7e77d6a6a54e7e83446eb1ba84 (diff) |
[PATCH] introduce shared mounts
This creates shared mounts. A shared mount when bind-mounted to some
mountpoint, propagates mount/umount events to each other. All the
shared mounts that propagate events to each other belong to the same
peer-group.
Signed-off-by: Ram Pai <linuxram@us.ibm.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/pnode.c')
-rw-r--r-- | fs/pnode.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/fs/pnode.c b/fs/pnode.c index aaa0dffda12a..1e22165ea41f 100644 --- a/fs/pnode.c +++ b/fs/pnode.c | |||
@@ -11,7 +11,18 @@ | |||
11 | #include <linux/fs.h> | 11 | #include <linux/fs.h> |
12 | #include "pnode.h" | 12 | #include "pnode.h" |
13 | 13 | ||
14 | /* return the next shared peer mount of @p */ | ||
15 | static inline struct vfsmount *next_peer(struct vfsmount *p) | ||
16 | { | ||
17 | return list_entry(p->mnt_share.next, struct vfsmount, mnt_share); | ||
18 | } | ||
19 | |||
14 | void change_mnt_propagation(struct vfsmount *mnt, int type) | 20 | void change_mnt_propagation(struct vfsmount *mnt, int type) |
15 | { | 21 | { |
16 | mnt->mnt_flags &= ~MNT_PNODE_MASK; | 22 | if (type == MS_SHARED) { |
23 | mnt->mnt_flags |= MNT_SHARED; | ||
24 | } else { | ||
25 | list_del_init(&mnt->mnt_share); | ||
26 | mnt->mnt_flags &= ~MNT_PNODE_MASK; | ||
27 | } | ||
17 | } | 28 | } |