summaryrefslogtreecommitdiffstats
path: root/fs/pnode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/pnode.c')
-rw-r--r--fs/pnode.c13
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 @@
#include <linux/fs.h>
#include "pnode.h"
+/* return the next shared peer mount of @p */
+static inline struct vfsmount *next_peer(struct vfsmount *p)
+{
+ return list_entry(p->mnt_share.next, struct vfsmount, mnt_share);
+}
+
void change_mnt_propagation(struct vfsmount *mnt, int type)
{
- mnt->mnt_flags &= ~MNT_PNODE_MASK;
+ if (type == MS_SHARED) {
+ mnt->mnt_flags |= MNT_SHARED;
+ } else {
+ list_del_init(&mnt->mnt_share);
+ mnt->mnt_flags &= ~MNT_PNODE_MASK;
+ }
}