]>
Commit | Line | Data |
---|---|---|
93995795 | 1 | /* Header file for mounting/unmount Linux filesystems. |
581c785b | 2 | Copyright (C) 1996-2022 Free Software Foundation, Inc. |
8a4b65b4 | 3 | This file is part of the GNU C Library. |
93995795 | 4 | |
8a4b65b4 | 5 | The GNU C Library is free software; you can redistribute it and/or |
41bdb6e2 AJ |
6 | modify it under the terms of the GNU Lesser General Public |
7 | License as published by the Free Software Foundation; either | |
8 | version 2.1 of the License, or (at your option) any later version. | |
93995795 | 9 | |
8a4b65b4 UD |
10 | The GNU C Library is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 13 | Lesser General Public License for more details. |
93995795 | 14 | |
41bdb6e2 | 15 | You should have received a copy of the GNU Lesser General Public |
59ba27a6 | 16 | License along with the GNU C Library; if not, see |
5a82c748 | 17 | <https://www.gnu.org/licenses/>. */ |
93995795 | 18 | |
51702635 UD |
19 | /* This is taken from /usr/include/linux/fs.h. */ |
20 | ||
93995795 | 21 | #ifndef _SYS_MOUNT_H |
8a4b65b4 | 22 | #define _SYS_MOUNT_H 1 |
93995795 | 23 | |
867506f3 | 24 | #include <features.h> |
51702635 UD |
25 | #include <sys/ioctl.h> |
26 | ||
51702635 UD |
27 | #define BLOCK_SIZE 1024 |
28 | #define BLOCK_SIZE_BITS 10 | |
29 | ||
30 | ||
31 | /* These are the fs-independent mount-flags: up to 16 flags are | |
32 | supported */ | |
867506f3 UD |
33 | enum |
34 | { | |
35 | MS_RDONLY = 1, /* Mount read-only. */ | |
36 | #define MS_RDONLY MS_RDONLY | |
37 | MS_NOSUID = 2, /* Ignore suid and sgid bits. */ | |
38 | #define MS_NOSUID MS_NOSUID | |
39 | MS_NODEV = 4, /* Disallow access to device special files. */ | |
40 | #define MS_NODEV MS_NODEV | |
41 | MS_NOEXEC = 8, /* Disallow program execution. */ | |
42 | #define MS_NOEXEC MS_NOEXEC | |
43 | MS_SYNCHRONOUS = 16, /* Writes are synced at once. */ | |
44 | #define MS_SYNCHRONOUS MS_SYNCHRONOUS | |
45 | MS_REMOUNT = 32, /* Alter flags of a mounted FS. */ | |
46 | #define MS_REMOUNT MS_REMOUNT | |
47 | MS_MANDLOCK = 64, /* Allow mandatory locks on an FS. */ | |
48 | #define MS_MANDLOCK MS_MANDLOCK | |
17127345 UD |
49 | MS_DIRSYNC = 128, /* Directory modifications are synchronous. */ |
50 | #define MS_DIRSYNC MS_DIRSYNC | |
0ca21427 JM |
51 | MS_NOSYMFOLLOW = 256, /* Do not follow symlinks. */ |
52 | #define MS_NOSYMFOLLOW MS_NOSYMFOLLOW | |
bf7997b6 | 53 | MS_NOATIME = 1024, /* Do not update access times. */ |
867506f3 | 54 | #define MS_NOATIME MS_NOATIME |
4ccacaa1 | 55 | MS_NODIRATIME = 2048, /* Do not update directory access times. */ |
bf7997b6 | 56 | #define MS_NODIRATIME MS_NODIRATIME |
4ccacaa1 AJ |
57 | MS_BIND = 4096, /* Bind directory at different place. */ |
58 | #define MS_BIND MS_BIND | |
17127345 UD |
59 | MS_MOVE = 8192, |
60 | #define MS_MOVE MS_MOVE | |
61 | MS_REC = 16384, | |
62 | #define MS_REC MS_REC | |
63 | MS_SILENT = 32768, | |
64 | #define MS_SILENT MS_SILENT | |
65 | MS_POSIXACL = 1 << 16, /* VFS does not apply the umask. */ | |
66 | #define MS_POSIXACL MS_POSIXACL | |
67 | MS_UNBINDABLE = 1 << 17, /* Change to unbindable. */ | |
68 | #define MS_UNBINDABLE MS_UNBINDABLE | |
69 | MS_PRIVATE = 1 << 18, /* Change to private. */ | |
70 | #define MS_PRIVATE MS_PRIVATE | |
71 | MS_SLAVE = 1 << 19, /* Change to slave. */ | |
72 | #define MS_SLAVE MS_SLAVE | |
73 | MS_SHARED = 1 << 20, /* Change to shared. */ | |
74 | #define MS_SHARED MS_SHARED | |
75 | MS_RELATIME = 1 << 21, /* Update atime relative to mtime/ctime. */ | |
76 | #define MS_RELATIME MS_RELATIME | |
77 | MS_KERNMOUNT = 1 << 22, /* This is a kern_mount call. */ | |
78 | #define MS_KERNMOUNT MS_KERNMOUNT | |
79 | MS_I_VERSION = 1 << 23, /* Update inode I_version field. */ | |
80 | #define MS_I_VERSION MS_I_VERSION | |
81 | MS_STRICTATIME = 1 << 24, /* Always perform atime updates. */ | |
82 | #define MS_STRICTATIME MS_STRICTATIME | |
31545c23 JM |
83 | MS_LAZYTIME = 1 << 25, /* Update the on-disk [acm]times lazily. */ |
84 | #define MS_LAZYTIME MS_LAZYTIME | |
17127345 UD |
85 | MS_ACTIVE = 1 << 30, |
86 | #define MS_ACTIVE MS_ACTIVE | |
87 | MS_NOUSER = 1 << 31 | |
88 | #define MS_NOUSER MS_NOUSER | |
867506f3 | 89 | }; |
51702635 UD |
90 | |
91 | /* Flags that can be altered by MS_REMOUNT */ | |
31545c23 JM |
92 | #define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION \ |
93 | |MS_LAZYTIME) | |
51702635 UD |
94 | |
95 | ||
96 | /* Magic mount flag number. Has to be or-ed to the flag values. */ | |
97 | ||
98 | #define MS_MGC_VAL 0xc0ed0000 /* Magic flag number to indicate "new" flags */ | |
99 | #define MS_MGC_MSK 0xffff0000 /* Magic flag number mask */ | |
100 | ||
101 | ||
51702635 UD |
102 | /* The read-only stuff doesn't really belong here, but any other place |
103 | is probably as bad and I don't want to create yet another include | |
104 | file. */ | |
105 | ||
106 | #define BLKROSET _IO(0x12, 93) /* Set device read-only (0 = read-write). */ | |
107 | #define BLKROGET _IO(0x12, 94) /* Get read-only status (0 = read_write). */ | |
108 | #define BLKRRPART _IO(0x12, 95) /* Re-read partition table. */ | |
109 | #define BLKGETSIZE _IO(0x12, 96) /* Return device size. */ | |
110 | #define BLKFLSBUF _IO(0x12, 97) /* Flush buffer cache. */ | |
111 | #define BLKRASET _IO(0x12, 98) /* Set read ahead for block device. */ | |
112 | #define BLKRAGET _IO(0x12, 99) /* Get current read ahead setting. */ | |
8f1913a9 UD |
113 | #define BLKFRASET _IO(0x12,100) /* Set filesystem read-ahead. */ |
114 | #define BLKFRAGET _IO(0x12,101) /* Get filesystem read-ahead. */ | |
115 | #define BLKSECTSET _IO(0x12,102) /* Set max sectors per request. */ | |
116 | #define BLKSECTGET _IO(0x12,103) /* Get max sectors per request. */ | |
117 | #define BLKSSZGET _IO(0x12,104) /* Get block device sector size. */ | |
118 | #define BLKBSZGET _IOR(0x12,112,size_t) | |
119 | #define BLKBSZSET _IOW(0x12,113,size_t) | |
120 | #define BLKGETSIZE64 _IOR(0x12,114,size_t) /* return device size. */ | |
51702635 UD |
121 | |
122 | ||
7934cc16 | 123 | /* Possible value for FLAGS parameter of `umount2'. */ |
ed1ac6a2 UD |
124 | enum |
125 | { | |
95bf537f | 126 | MNT_FORCE = 1, /* Force unmounting. */ |
ed1ac6a2 | 127 | #define MNT_FORCE MNT_FORCE |
95bf537f UD |
128 | MNT_DETACH = 2, /* Just detach from the tree. */ |
129 | #define MNT_DETACH MNT_DETACH | |
94db8db8 | 130 | MNT_EXPIRE = 4, /* Mark for expiry. */ |
95bf537f | 131 | #define MNT_EXPIRE MNT_EXPIRE |
94db8db8 UD |
132 | UMOUNT_NOFOLLOW = 8 /* Don't follow symlink on umount. */ |
133 | #define UMOUNT_NOFOLLOW UMOUNT_NOFOLLOW | |
ed1ac6a2 | 134 | }; |
7934cc16 UD |
135 | |
136 | ||
6c0eedd9 AZ |
137 | /* fsopen flags. */ |
138 | #define FSOPEN_CLOEXEC 0x00000001 | |
139 | ||
b4deb7be AZ |
140 | /* fsmount flags. */ |
141 | #define FSMOUNT_CLOEXEC 0x00000001 | |
142 | ||
143 | /* mount attributes used on fsmount. */ | |
144 | #define MOUNT_ATTR_RDONLY 0x00000001 /* Mount read-only. */ | |
145 | #define MOUNT_ATTR_NOSUID 0x00000002 /* Ignore suid and sgid bits. */ | |
146 | #define MOUNT_ATTR_NODEV 0x00000004 /* Disallow access to device special files. */ | |
147 | #define MOUNT_ATTR_NOEXEC 0x00000008 /* Disallow program execution. */ | |
148 | #define MOUNT_ATTR__ATIME 0x00000070 /* Setting on how atime should be updated. */ | |
149 | #define MOUNT_ATTR_RELATIME 0x00000000 /* - Update atime relative to mtime/ctime. */ | |
150 | #define MOUNT_ATTR_NOATIME 0x00000010 /* - Do not update access times. */ | |
151 | #define MOUNT_ATTR_STRICTATIME 0x00000020 /* - Always perform atime updates */ | |
152 | #define MOUNT_ATTR_NODIRATIME 0x00000080 /* Do not update directory access times. */ | |
153 | #define MOUNT_ATTR_IDMAP 0x00100000 /* Idmap mount to @userns_fd in struct mount_attr. */ | |
154 | #define MOUNT_ATTR_NOSYMFOLLOW 0x00200000 /* Do not follow symlinks. */ | |
155 | ||
6c0eedd9 | 156 | |
867506f3 UD |
157 | __BEGIN_DECLS |
158 | ||
93995795 | 159 | /* Mount a filesystem. */ |
a784e502 UD |
160 | extern int mount (const char *__special_file, const char *__dir, |
161 | const char *__fstype, unsigned long int __rwflag, | |
162 | const void *__data) __THROW; | |
93995795 RM |
163 | |
164 | /* Unmount a filesystem. */ | |
a784e502 | 165 | extern int umount (const char *__special_file) __THROW; |
93995795 | 166 | |
5148d49f | 167 | /* Unmount a filesystem. Force unmounting if FLAGS is set to MNT_FORCE. */ |
a784e502 | 168 | extern int umount2 (const char *__special_file, int __flags) __THROW; |
7934cc16 | 169 | |
6c0eedd9 AZ |
170 | /* Open the filesystem referenced by FS_NAME so it can be configured for |
171 | mouting. */ | |
172 | extern int fsopen (const char *__fs_name, unsigned int __flags) __THROW; | |
173 | ||
b4deb7be AZ |
174 | /* Create a mount representation for the FD created by fsopen using |
175 | FLAGS with ATTR_FLAGS describing how the mount is to be performed. */ | |
176 | extern int fsmount (int __fd, unsigned int __flags, | |
177 | unsigned int __ms_flags) __THROW; | |
178 | ||
93995795 RM |
179 | __END_DECLS |
180 | ||
181 | #endif /* _SYS_MOUNT_H */ |