Branch data Line data Source code
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 : :
20 : : #define CL_EXPIRE 0x01
21 : : #define CL_SLAVE 0x02
22 : : #define CL_COPY_UNBINDABLE 0x04
23 : : #define CL_MAKE_SHARED 0x08
24 : : #define CL_PRIVATE 0x10
25 : : #define CL_SHARED_TO_SLAVE 0x20
26 : : #define CL_UNPRIVILEGED 0x40
27 : : #define CL_COPY_MNT_NS_FILE 0x80
28 : :
29 : : #define CL_COPY_ALL (CL_COPY_UNBINDABLE | CL_COPY_MNT_NS_FILE)
30 : :
31 : : static inline void set_mnt_shared(struct mount *mnt)
32 : : {
33 : 974 : mnt->mnt.mnt_flags &= ~MNT_SHARED_MASK;
34 : 627 : mnt->mnt.mnt_flags |= MNT_SHARED;
35 : : }
36 : :
37 : : void change_mnt_propagation(struct mount *, int);
38 : : int propagate_mnt(struct mount *, struct mountpoint *, struct mount *,
39 : : struct list_head *);
40 : : int propagate_umount(struct list_head *);
41 : : int propagate_mount_busy(struct mount *, int);
42 : : void mnt_release_group_id(struct mount *);
43 : : int get_dominating_id(struct mount *mnt, const struct path *root);
44 : : unsigned int mnt_get_count(struct mount *mnt);
45 : : void mnt_set_mountpoint(struct mount *, struct mountpoint *,
46 : : struct mount *);
47 : : void umount_tree(struct mount *, int);
48 : : struct mount *copy_tree(struct mount *, struct dentry *, int);
49 : : bool is_path_reachable(struct mount *, struct dentry *,
50 : : const struct path *root);
51 : : #endif /* _LINUX_PNODE_H */
|