xref: /linux/fs/pnode.h (revision e3d132d1239ae846e2f7c652fbdc5aa7ebcc4541)
1  /*
2   *  linux/fs/pnode.h
3   *
4   * (C) Copyright IBM Corporation 2005.
5   *	Released under GPL v2.
6   *
7   */
8  #ifndef _LINUX_PNODE_H
9  #define _LINUX_PNODE_H
10  
11  #include <linux/list.h>
12  #include "mount.h"
13  
14  #define IS_MNT_SHARED(m) ((m)->mnt.mnt_flags & MNT_SHARED)
15  #define IS_MNT_SLAVE(m) ((m)->mnt_master)
16  #define IS_MNT_NEW(m)  (!(m)->mnt_ns)
17  #define CLEAR_MNT_SHARED(m) ((m)->mnt.mnt_flags &= ~MNT_SHARED)
18  #define IS_MNT_UNBINDABLE(m) ((m)->mnt.mnt_flags & MNT_UNBINDABLE)
19  #define IS_MNT_MARKED(m) ((m)->mnt.mnt_flags & MNT_MARKED)
20  #define SET_MNT_MARK(m) ((m)->mnt.mnt_flags |= MNT_MARKED)
21  #define CLEAR_MNT_MARK(m) ((m)->mnt.mnt_flags &= ~MNT_MARKED)
22  #define IS_MNT_LOCKED(m) ((m)->mnt.mnt_flags & MNT_LOCKED)
23  
24  #define CL_EXPIRE    		0x01
25  #define CL_SLAVE     		0x02
26  #define CL_COPY_UNBINDABLE	0x04
27  #define CL_MAKE_SHARED 		0x08
28  #define CL_PRIVATE 		0x10
29  #define CL_SHARED_TO_SLAVE	0x20
30  #define CL_UNPRIVILEGED		0x40
31  #define CL_COPY_MNT_NS_FILE	0x80
32  
33  #define CL_COPY_ALL		(CL_COPY_UNBINDABLE | CL_COPY_MNT_NS_FILE)
34  
35  static inline void set_mnt_shared(struct mount *mnt)
36  {
37  	mnt->mnt.mnt_flags &= ~MNT_SHARED_MASK;
38  	mnt->mnt.mnt_flags |= MNT_SHARED;
39  }
40  
41  void change_mnt_propagation(struct mount *, int);
42  int propagate_mnt(struct mount *, struct mountpoint *, struct mount *,
43  		struct hlist_head *);
44  int propagate_umount(struct list_head *);
45  int propagate_mount_busy(struct mount *, int);
46  void propagate_mount_unlock(struct mount *);
47  void mnt_release_group_id(struct mount *);
48  int get_dominating_id(struct mount *mnt, const struct path *root);
49  unsigned int mnt_get_count(struct mount *mnt);
50  void mnt_set_mountpoint(struct mount *, struct mountpoint *,
51  			struct mount *);
52  struct mount *copy_tree(struct mount *, struct dentry *, int);
53  bool is_path_reachable(struct mount *, struct dentry *,
54  			 const struct path *root);
55  #endif /* _LINUX_PNODE_H */
56