Blame view

include/linux/mount.h 3.09 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
  /*
   *
   * Definitions for mount interface. This describes the in the kernel build 
   * linkedlist with mounted filesystems.
   *
   * Author:  Marco van Wieringen <mvw@planets.elm.net>
   *
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
8
9
10
   */
  #ifndef _LINUX_MOUNT_H
  #define _LINUX_MOUNT_H
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
11

d53d9f16e   Andrew Morton   [PATCH] name_to_d...
12
  #include <linux/types.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
13
  #include <linux/list.h>
3d733633a   Dave Hansen   [PATCH] r/o bind ...
14
  #include <linux/nodemask.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
15
  #include <linux/spinlock.h>
b3e19d924   Nick Piggin   fs: scale mntget/...
16
  #include <linux/seqlock.h>
60063497a   Arun Sharma   atomic: use <linu...
17
  #include <linux/atomic.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
18

726c33422   David Howells   [PATCH] VFS: Perm...
19
20
21
  struct super_block;
  struct vfsmount;
  struct dentry;
6b3286ed1   Kirill Korotaev   [PATCH] rename st...
22
  struct mnt_namespace;
726c33422   David Howells   [PATCH] VFS: Perm...
23

07b20889e   Ram Pai   [PATCH] beginning...
24
25
26
  #define MNT_NOSUID	0x01
  #define MNT_NODEV	0x02
  #define MNT_NOEXEC	0x04
fc33a7bb9   Christoph Hellwig   [PATCH] per-mount...
27
28
  #define MNT_NOATIME	0x08
  #define MNT_NODIRATIME	0x10
47ae32d6a   Valerie Henson   [PATCH] relative ...
29
  #define MNT_RELATIME	0x20
2e4b7fcd9   Dave Hansen   [PATCH] r/o bind ...
30
  #define MNT_READONLY	0x40	/* does the user want this to be r/o? */
bf066c7db   Miklos Szeredi   [PATCH] shared mo...
31

5528f911b   Trond Myklebust   VFS: Add shrink_s...
32
  #define MNT_SHRINKABLE	0x100
d3ef3d735   npiggin@suse.de   fs: mnt_want_writ...
33
  #define MNT_WRITE_HOLD	0x200
5528f911b   Trond Myklebust   VFS: Add shrink_s...
34

fc33a7bb9   Christoph Hellwig   [PATCH] per-mount...
35
36
  #define MNT_SHARED	0x1000	/* if the vfsmount is a shared mount */
  #define MNT_UNBINDABLE	0x2000	/* if the vfsmount is a unbindable mount */
495d6c9c6   Valerie Aurora   VFS: Clean up sha...
37
38
39
40
41
42
43
44
  /*
   * MNT_SHARED_MASK is the set of flags that should be cleared when a
   * mount becomes shared.  Currently, this is only the flag that says a
   * mount cannot be bind mounted, since this is how we create a mount
   * that shares events with another mount.  If you add a new MNT_*
   * flag, consider how it interacts with shared mounts.
   */
  #define MNT_SHARED_MASK	(MNT_UNBINDABLE)
a6138db81   Eric W. Biederman   mnt: Only change ...
45
46
47
  #define MNT_USER_SETTABLE_MASK  (MNT_NOSUID | MNT_NODEV | MNT_NOEXEC \
  				 | MNT_NOATIME | MNT_NODIRATIME | MNT_RELATIME \
  				 | MNT_READONLY)
9566d6742   Eric W. Biederman   mnt: Correct perm...
48
  #define MNT_ATIME_MASK (MNT_NOATIME | MNT_NODIRATIME | MNT_RELATIME )
495d6c9c6   Valerie Aurora   VFS: Clean up sha...
49

f2ebb3a92   Al Viro   smarter propagate...
50
51
  #define MNT_INTERNAL_FLAGS (MNT_SHARED | MNT_WRITE_HOLD | MNT_INTERNAL | \
  			    MNT_DOOMED | MNT_SYNC_UMOUNT | MNT_MARKED)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
52

8089352a1   Al Viro   Mirror MS_KERNMOU...
53
  #define MNT_INTERNAL	0x4000
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
54

9566d6742   Eric W. Biederman   mnt: Correct perm...
55
56
57
58
  #define MNT_LOCK_ATIME		0x040000
  #define MNT_LOCK_NOEXEC		0x080000
  #define MNT_LOCK_NOSUID		0x100000
  #define MNT_LOCK_NODEV		0x200000
90563b198   Eric W. Biederman   vfs: Add a mount ...
59
  #define MNT_LOCK_READONLY	0x400000
5ff9d8a65   Eric W. Biederman   vfs: Lock in plac...
60
  #define MNT_LOCKED		0x800000
48a066e72   Al Viro   RCU'd vfsmounts
61
62
  #define MNT_DOOMED		0x1000000
  #define MNT_SYNC_UMOUNT		0x2000000
f2ebb3a92   Al Viro   smarter propagate...
63
  #define MNT_MARKED		0x4000000
590ce4bcb   Eric W. Biederman   mnt: Add MNT_UMOU...
64
  #define MNT_UMOUNT		0x8000000
90563b198   Eric W. Biederman   vfs: Add a mount ...
65

07b20889e   Ram Pai   [PATCH] beginning...
66
  struct vfsmount {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
67
68
  	struct dentry *mnt_root;	/* root of the mounted tree */
  	struct super_block *mnt_sb;	/* pointer to superblock */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
69
  	int mnt_flags;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
70
  };
96029c4e0   npiggin@suse.de   fs: introduce mnt...
71
  struct file; /* forward dec */
3064c3563   Al Viro   death to mnt_pinned
72
  struct path;
96029c4e0   npiggin@suse.de   fs: introduce mnt...
73

8366025eb   Dave Hansen   [PATCH] r/o bind ...
74
  extern int mnt_want_write(struct vfsmount *mnt);
96029c4e0   npiggin@suse.de   fs: introduce mnt...
75
76
  extern int mnt_want_write_file(struct file *file);
  extern int mnt_clone_write(struct vfsmount *mnt);
8366025eb   Dave Hansen   [PATCH] r/o bind ...
77
  extern void mnt_drop_write(struct vfsmount *mnt);
2a79f17e4   Al Viro   vfs: mnt_drop_wri...
78
  extern void mnt_drop_write_file(struct file *file);
b3e19d924   Nick Piggin   fs: scale mntget/...
79
80
  extern void mntput(struct vfsmount *mnt);
  extern struct vfsmount *mntget(struct vfsmount *mnt);
3064c3563   Al Viro   death to mnt_pinned
81
  extern struct vfsmount *mnt_clone_internal(struct path *path);
8366025eb   Dave Hansen   [PATCH] r/o bind ...
82
  extern int __mnt_is_readonly(struct vfsmount *mnt);
380cf5ba6   Andy Lutomirski   fs: Treat foreign...
83
  extern bool mnt_may_suid(struct vfsmount *mnt);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
84

c771d683a   Miklos Szeredi   vfs: introduce cl...
85
86
  struct path;
  extern struct vfsmount *clone_private_mount(struct path *path);
bb4a58bf4   Trond Myklebust   VFS: Add GPL_EXPO...
87
88
89
90
  struct file_system_type;
  extern struct vfsmount *vfs_kern_mount(struct file_system_type *type,
  				      int flags, const char *name,
  				      void *data);
ea5b778a8   David Howells   Unexport do_add_m...
91
  extern void mnt_set_expiry(struct vfsmount *mnt, struct list_head *expiry_list);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
92
  extern void mark_mounts_for_expiry(struct list_head *mounts);
e6e20a7a5   Dan Ehrenberg   init: export name...
93
  extern dev_t name_to_dev_t(const char *name);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
94

d29216842   Eric W. Biederman   mnt: Add a per mo...
95
  extern unsigned int sysctl_mount_max;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
96
  #endif /* _LINUX_MOUNT_H */