~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/mount.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*
  3  *
  4  * Definitions for mount interface. This describes the in the kernel build 
  5  * linkedlist with mounted filesystems.
  6  *
  7  * Author:  Marco van Wieringen <mvw@planets.elm.net>
  8  *
  9  */
 10 #ifndef _LINUX_MOUNT_H
 11 #define _LINUX_MOUNT_H
 12 
 13 #include <linux/types.h>
 14 #include <asm/barrier.h>
 15 
 16 struct super_block;
 17 struct dentry;
 18 struct user_namespace;
 19 struct mnt_idmap;
 20 struct file_system_type;
 21 struct fs_context;
 22 struct file;
 23 struct path;
 24 
 25 #define MNT_NOSUID      0x01
 26 #define MNT_NODEV       0x02
 27 #define MNT_NOEXEC      0x04
 28 #define MNT_NOATIME     0x08
 29 #define MNT_NODIRATIME  0x10
 30 #define MNT_RELATIME    0x20
 31 #define MNT_READONLY    0x40    /* does the user want this to be r/o? */
 32 #define MNT_NOSYMFOLLOW 0x80
 33 
 34 #define MNT_SHRINKABLE  0x100
 35 #define MNT_WRITE_HOLD  0x200
 36 
 37 #define MNT_SHARED      0x1000  /* if the vfsmount is a shared mount */
 38 #define MNT_UNBINDABLE  0x2000  /* if the vfsmount is a unbindable mount */
 39 /*
 40  * MNT_SHARED_MASK is the set of flags that should be cleared when a
 41  * mount becomes shared.  Currently, this is only the flag that says a
 42  * mount cannot be bind mounted, since this is how we create a mount
 43  * that shares events with another mount.  If you add a new MNT_*
 44  * flag, consider how it interacts with shared mounts.
 45  */
 46 #define MNT_SHARED_MASK (MNT_UNBINDABLE)
 47 #define MNT_USER_SETTABLE_MASK  (MNT_NOSUID | MNT_NODEV | MNT_NOEXEC \
 48                                  | MNT_NOATIME | MNT_NODIRATIME | MNT_RELATIME \
 49                                  | MNT_READONLY | MNT_NOSYMFOLLOW)
 50 #define MNT_ATIME_MASK (MNT_NOATIME | MNT_NODIRATIME | MNT_RELATIME )
 51 
 52 #define MNT_INTERNAL_FLAGS (MNT_SHARED | MNT_WRITE_HOLD | MNT_INTERNAL | \
 53                             MNT_DOOMED | MNT_SYNC_UMOUNT | MNT_MARKED | MNT_ONRB)
 54 
 55 #define MNT_INTERNAL    0x4000
 56 
 57 #define MNT_LOCK_ATIME          0x040000
 58 #define MNT_LOCK_NOEXEC         0x080000
 59 #define MNT_LOCK_NOSUID         0x100000
 60 #define MNT_LOCK_NODEV          0x200000
 61 #define MNT_LOCK_READONLY       0x400000
 62 #define MNT_LOCKED              0x800000
 63 #define MNT_DOOMED              0x1000000
 64 #define MNT_SYNC_UMOUNT         0x2000000
 65 #define MNT_MARKED              0x4000000
 66 #define MNT_UMOUNT              0x8000000
 67 #define MNT_ONRB                0x10000000
 68 
 69 struct vfsmount {
 70         struct dentry *mnt_root;        /* root of the mounted tree */
 71         struct super_block *mnt_sb;     /* pointer to superblock */
 72         int mnt_flags;
 73         struct mnt_idmap *mnt_idmap;
 74 } __randomize_layout;
 75 
 76 static inline struct mnt_idmap *mnt_idmap(const struct vfsmount *mnt)
 77 {
 78         /* Pairs with smp_store_release() in do_idmap_mount(). */
 79         return smp_load_acquire(&mnt->mnt_idmap);
 80 }
 81 
 82 extern int mnt_want_write(struct vfsmount *mnt);
 83 extern int mnt_want_write_file(struct file *file);
 84 extern void mnt_drop_write(struct vfsmount *mnt);
 85 extern void mnt_drop_write_file(struct file *file);
 86 extern void mntput(struct vfsmount *mnt);
 87 extern struct vfsmount *mntget(struct vfsmount *mnt);
 88 extern void mnt_make_shortterm(struct vfsmount *mnt);
 89 extern struct vfsmount *mnt_clone_internal(const struct path *path);
 90 extern bool __mnt_is_readonly(struct vfsmount *mnt);
 91 extern bool mnt_may_suid(struct vfsmount *mnt);
 92 
 93 extern struct vfsmount *clone_private_mount(const struct path *path);
 94 int mnt_get_write_access(struct vfsmount *mnt);
 95 void mnt_put_write_access(struct vfsmount *mnt);
 96 
 97 extern struct vfsmount *fc_mount(struct fs_context *fc);
 98 extern struct vfsmount *vfs_create_mount(struct fs_context *fc);
 99 extern struct vfsmount *vfs_kern_mount(struct file_system_type *type,
100                                       int flags, const char *name,
101                                       void *data);
102 extern struct vfsmount *vfs_submount(const struct dentry *mountpoint,
103                                      struct file_system_type *type,
104                                      const char *name, void *data);
105 
106 extern void mnt_set_expiry(struct vfsmount *mnt, struct list_head *expiry_list);
107 extern void mark_mounts_for_expiry(struct list_head *mounts);
108 
109 extern bool path_is_mountpoint(const struct path *path);
110 
111 extern bool our_mnt(struct vfsmount *mnt);
112 
113 extern struct vfsmount *kern_mount(struct file_system_type *);
114 extern void kern_unmount(struct vfsmount *mnt);
115 extern int may_umount_tree(struct vfsmount *);
116 extern int may_umount(struct vfsmount *);
117 extern long do_mount(const char *, const char __user *,
118                      const char *, unsigned long, void *);
119 extern struct vfsmount *collect_mounts(const struct path *);
120 extern void drop_collected_mounts(struct vfsmount *);
121 extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *,
122                           struct vfsmount *);
123 extern void kern_unmount_array(struct vfsmount *mnt[], unsigned int num);
124 
125 extern int cifs_root_data(char **dev, char **opts);
126 
127 #endif /* _LINUX_MOUNT_H */
128 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php