| @@ -1,285 +1,285 @@ | | | @@ -1,285 +1,285 @@ |
1 | /* $NetBSD: fstypes.h,v 1.33 2015/05/06 15:57:08 hannken Exp $ */ | | 1 | /* $NetBSD: fstypes.h,v 1.34 2016/10/08 17:28:17 ast Exp $ */ |
2 | | | 2 | |
3 | /* | | 3 | /* |
4 | * Copyright (c) 1989, 1991, 1993 | | 4 | * Copyright (c) 1989, 1991, 1993 |
5 | * The Regents of the University of California. All rights reserved. | | 5 | * The Regents of the University of California. All rights reserved. |
6 | * | | 6 | * |
7 | * Redistribution and use in source and binary forms, with or without | | 7 | * Redistribution and use in source and binary forms, with or without |
8 | * modification, are permitted provided that the following conditions | | 8 | * modification, are permitted provided that the following conditions |
9 | * are met: | | 9 | * are met: |
10 | * 1. Redistributions of source code must retain the above copyright | | 10 | * 1. Redistributions of source code must retain the above copyright |
11 | * notice, this list of conditions and the following disclaimer. | | 11 | * notice, this list of conditions and the following disclaimer. |
12 | * 2. Redistributions in binary form must reproduce the above copyright | | 12 | * 2. Redistributions in binary form must reproduce the above copyright |
13 | * notice, this list of conditions and the following disclaimer in the | | 13 | * notice, this list of conditions and the following disclaimer in the |
14 | * documentation and/or other materials provided with the distribution. | | 14 | * documentation and/or other materials provided with the distribution. |
15 | * 3. Neither the name of the University nor the names of its contributors | | 15 | * 3. Neither the name of the University nor the names of its contributors |
16 | * may be used to endorse or promote products derived from this software | | 16 | * may be used to endorse or promote products derived from this software |
17 | * without specific prior written permission. | | 17 | * without specific prior written permission. |
18 | * | | 18 | * |
19 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | | 19 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
20 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | | 20 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
21 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | | 21 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
22 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | | 22 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
23 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | | 23 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
24 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | | 24 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
25 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | | 25 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
26 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | | 26 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
27 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | | 27 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
28 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | | 28 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
29 | * SUCH DAMAGE. | | 29 | * SUCH DAMAGE. |
30 | * | | 30 | * |
31 | * @(#)mount.h 8.21 (Berkeley) 5/20/95 | | 31 | * @(#)mount.h 8.21 (Berkeley) 5/20/95 |
32 | */ | | 32 | */ |
33 | | | 33 | |
34 | #ifndef _SYS_FSTYPES_H_ | | 34 | #ifndef _SYS_FSTYPES_H_ |
35 | #define _SYS_FSTYPES_H_ | | 35 | #define _SYS_FSTYPES_H_ |
36 | | | 36 | |
37 | typedef struct { int32_t __fsid_val[2]; } fsid_t; /* file system id type */ | | 37 | typedef struct { int32_t __fsid_val[2]; } fsid_t; /* file system id type */ |
38 | | | 38 | |
39 | #if defined(_KERNEL) | | 39 | #if defined(_KERNEL) |
40 | /* | | 40 | /* |
41 | * File identifier. | | 41 | * File identifier. |
42 | * These are unique per filesystem on a single machine. | | 42 | * These are unique per filesystem on a single machine. |
43 | */ | | 43 | */ |
44 | struct fid { | | 44 | struct fid { |
45 | unsigned short fid_len; /* length of data in bytes */ | | 45 | unsigned short fid_len; /* length of data in bytes */ |
46 | unsigned short fid_reserved; /* compat: historic align */ | | 46 | unsigned short fid_reserved; /* compat: historic align */ |
47 | char fid_data[0]; /* data (variable length) */ | | 47 | char fid_data[0]; /* data (variable length) */ |
48 | }; | | 48 | }; |
49 | | | 49 | |
50 | /* | | 50 | /* |
51 | * Generic file handle | | 51 | * Generic file handle |
52 | */ | | 52 | */ |
53 | struct fhandle { | | 53 | struct fhandle { |
54 | fsid_t fh_fsid; /* File system id of mount point */ | | 54 | fsid_t fh_fsid; /* File system id of mount point */ |
55 | struct fid fh_fid; /* File sys specific id */ | | 55 | struct fid fh_fid; /* File sys specific id */ |
56 | }; | | 56 | }; |
57 | typedef struct fhandle fhandle_t; | | 57 | typedef struct fhandle fhandle_t; |
58 | | | 58 | |
59 | /* | | 59 | /* |
60 | * FHANDLE_SIZE_MAX: arbitrary value to prevent unreasonable allocation. | | 60 | * FHANDLE_SIZE_MAX: arbitrary value to prevent unreasonable allocation. |
61 | * | | 61 | * |
62 | * FHANDLE_SIZE_MIN: chosen for compatibility. smaller handles are zero-padded. | | 62 | * FHANDLE_SIZE_MIN: chosen for compatibility. smaller handles are zero-padded. |
63 | */ | | 63 | */ |
64 | | | 64 | |
65 | #define FHANDLE_SIZE_COMPAT 28 | | 65 | #define FHANDLE_SIZE_COMPAT 28 |
66 | #define FHANDLE_SIZE_MAX 1024 | | 66 | #define FHANDLE_SIZE_MAX 1024 |
67 | #define FHANDLE_SIZE_MIN FHANDLE_SIZE_COMPAT | | 67 | #define FHANDLE_SIZE_MIN FHANDLE_SIZE_COMPAT |
68 | | | 68 | |
69 | #define FHANDLE_FSID(fh) (&(fh)->fh_fsid) | | 69 | #define FHANDLE_FSID(fh) (&(fh)->fh_fsid) |
70 | #define FHANDLE_FILEID(fh) (&(fh)->fh_fid) | | 70 | #define FHANDLE_FILEID(fh) (&(fh)->fh_fid) |
71 | #define FHANDLE_SIZE_FROM_FILEID_SIZE(fidsize) \ | | 71 | #define FHANDLE_SIZE_FROM_FILEID_SIZE(fidsize) \ |
72 | MAX(FHANDLE_SIZE_MIN, (offsetof(fhandle_t, fh_fid) + (fidsize))) | | 72 | MAX(FHANDLE_SIZE_MIN, (offsetof(fhandle_t, fh_fid) + (fidsize))) |
73 | #define FHANDLE_SIZE(fh) \ | | 73 | #define FHANDLE_SIZE(fh) \ |
74 | FHANDLE_SIZE_FROM_FILEID_SIZE(FHANDLE_FILEID(fh)->fid_len) | | 74 | FHANDLE_SIZE_FROM_FILEID_SIZE(FHANDLE_FILEID(fh)->fid_len) |
75 | #endif /* defined(_KERNEL) */ | | 75 | #endif /* defined(_KERNEL) */ |
76 | | | 76 | |
77 | /* | | 77 | /* |
78 | * Mount flags. XXX BEWARE: these are not in numerical order! | | 78 | * Mount flags. XXX BEWARE: these are not in numerical order! |
79 | * | | 79 | * |
80 | * Unmount uses MNT_FORCE flag. | | 80 | * Unmount uses MNT_FORCE flag. |
81 | * | | 81 | * |
82 | * Note that all mount flags are listed here. if you need to add one, take | | 82 | * Note that all mount flags are listed here. if you need to add one, take |
83 | * one of the __MNT_UNUSED flags. | | 83 | * one of the __MNT_UNUSED flags. |
84 | */ | | 84 | */ |
85 | | | 85 | |
86 | #define __MNT_UNUSED1 0x00200000 | | 86 | #define __MNT_UNUSED1 0x00200000 |
87 | | | 87 | |
88 | #define MNT_RDONLY 0x00000001 /* read only filesystem */ | | 88 | #define MNT_RDONLY 0x00000001 /* read only filesystem */ |
89 | #define MNT_SYNCHRONOUS 0x00000002 /* file system written synchronously */ | | 89 | #define MNT_SYNCHRONOUS 0x00000002 /* file system written synchronously */ |
90 | #define MNT_NOEXEC 0x00000004 /* can't exec from filesystem */ | | 90 | #define MNT_NOEXEC 0x00000004 /* can't exec from filesystem */ |
91 | #define MNT_NOSUID 0x00000008 /* don't honor setuid bits on fs */ | | 91 | #define MNT_NOSUID 0x00000008 /* don't honor setuid bits on fs */ |
92 | #define MNT_NODEV 0x00000010 /* don't interpret special files */ | | 92 | #define MNT_NODEV 0x00000010 /* don't interpret special files */ |
93 | #define MNT_UNION 0x00000020 /* union with underlying filesystem */ | | 93 | #define MNT_UNION 0x00000020 /* union with underlying filesystem */ |
94 | #define MNT_ASYNC 0x00000040 /* file system written asynchronously */ | | 94 | #define MNT_ASYNC 0x00000040 /* file system written asynchronously */ |
95 | #define MNT_NOCOREDUMP 0x00008000 /* don't write core dumps to this FS */ | | 95 | #define MNT_NOCOREDUMP 0x00008000 /* don't write core dumps to this FS */ |
96 | #define MNT_RELATIME 0x00020000 /* only update access time if mod/ch */ | | 96 | #define MNT_RELATIME 0x00020000 /* only update access time if mod/ch */ |
97 | #define MNT_IGNORE 0x00100000 /* don't show entry in df */ | | 97 | #define MNT_IGNORE 0x00100000 /* don't show entry in df */ |
98 | #define MNT_DISCARD 0x00800000 /* use DISCARD/TRIM if supported */ | | 98 | #define MNT_DISCARD 0x00800000 /* use DISCARD/TRIM if supported */ |
99 | #define MNT_EXTATTR 0x01000000 /* enable extended attributes */ | | 99 | #define MNT_EXTATTR 0x01000000 /* enable extended attributes */ |
100 | #define MNT_LOG 0x02000000 /* Use logging */ | | 100 | #define MNT_LOG 0x02000000 /* Use logging */ |
101 | #define MNT_NOATIME 0x04000000 /* Never update access times in fs */ | | 101 | #define MNT_NOATIME 0x04000000 /* Never update access times in fs */ |
102 | #define MNT_SYMPERM 0x20000000 /* recognize symlink permission */ | | 102 | #define MNT_SYMPERM 0x20000000 /* recognize symlink permission */ |
103 | #define MNT_NODEVMTIME 0x40000000 /* Never update mod times for devs */ | | 103 | #define MNT_NODEVMTIME 0x40000000 /* Never update mod times for devs */ |
104 | #define MNT_SOFTDEP 0x80000000 /* Use soft dependencies */ | | 104 | #define MNT_SOFTDEP 0x80000000 /* Use soft dependencies */ |
105 | | | 105 | |
106 | #define __MNT_BASIC_FLAGS \ | | 106 | #define __MNT_BASIC_FLAGS \ |
107 | { MNT_ASYNC, 0, "asynchronous" }, \ | | 107 | { MNT_ASYNC, 0, "asynchronous" }, \ |
108 | { MNT_DISCARD, 0, "discard" }, \ | | 108 | { MNT_DISCARD, 0, "discard" }, \ |
109 | { MNT_EXTATTR, 0, "extattr" }, \ | | 109 | { MNT_EXTATTR, 0, "extattr" }, \ |
110 | { MNT_IGNORE, 0, "hidden" }, \ | | 110 | { MNT_IGNORE, 0, "hidden" }, \ |
111 | { MNT_LOG, 0, "log" }, \ | | 111 | { MNT_LOG, 0, "log" }, \ |
112 | { MNT_NOATIME, 0, "noatime" }, \ | | 112 | { MNT_NOATIME, 0, "noatime" }, \ |
113 | { MNT_NOCOREDUMP, 0, "nocoredump" }, \ | | 113 | { MNT_NOCOREDUMP, 0, "nocoredump" }, \ |
114 | { MNT_NODEV, 0, "nodev" }, \ | | 114 | { MNT_NODEV, 0, "nodev" }, \ |
115 | { MNT_NODEVMTIME, 0, "nodevmtime" }, \ | | 115 | { MNT_NODEVMTIME, 0, "nodevmtime" }, \ |
116 | { MNT_NOEXEC, 0, "noexec" }, \ | | 116 | { MNT_NOEXEC, 0, "noexec" }, \ |
117 | { MNT_NOSUID, 0, "nosuid" }, \ | | 117 | { MNT_NOSUID, 0, "nosuid" }, \ |
118 | { MNT_RDONLY, 0, "read-only" }, \ | | 118 | { MNT_RDONLY, 0, "read-only" }, \ |
119 | { MNT_RELATIME, 0, "relatime" }, \ | | 119 | { MNT_RELATIME, 0, "relatime" }, \ |
120 | { MNT_SOFTDEP, 0, "soft dependencies" }, \ | | 120 | { MNT_SOFTDEP, 0, "soft dependencies" }, \ |
121 | { MNT_SYMPERM, 0, "symperm" }, \ | | 121 | { MNT_SYMPERM, 0, "symperm" }, \ |
122 | { MNT_SYNCHRONOUS, 0, "synchronous" }, \ | | 122 | { MNT_SYNCHRONOUS, 0, "synchronous" }, \ |
123 | { MNT_UNION, 0, "union" }, \ | | 123 | { MNT_UNION, 0, "union" }, \ |
124 | | | 124 | |
125 | #define MNT_BASIC_FLAGS (MNT_ASYNC | MNT_DISCARD | MNT_EXTATTR | MNT_LOG | \ | | 125 | #define MNT_BASIC_FLAGS (MNT_ASYNC | MNT_DISCARD | MNT_EXTATTR | MNT_LOG | \ |
126 | MNT_NOATIME | MNT_NOCOREDUMP | MNT_NODEV | MNT_NODEVMTIME | MNT_NOEXEC | \ | | 126 | MNT_NOATIME | MNT_NOCOREDUMP | MNT_NODEV | MNT_NODEVMTIME | MNT_NOEXEC | \ |
127 | MNT_NOSUID | MNT_RDONLY | MNT_RELATIME | MNT_SOFTDEP | MNT_SYMPERM | \ | | 127 | MNT_NOSUID | MNT_RDONLY | MNT_RELATIME | MNT_SOFTDEP | MNT_SYMPERM | \ |
128 | MNT_SYNCHRONOUS | MNT_UNION) | | 128 | MNT_SYNCHRONOUS | MNT_UNION) |
129 | /* | | 129 | /* |
130 | * exported mount flags. | | 130 | * exported mount flags. |
131 | */ | | 131 | */ |
132 | #define MNT_EXRDONLY 0x00000080 /* exported read only */ | | 132 | #define MNT_EXRDONLY 0x00000080 /* exported read only */ |
133 | #define MNT_EXPORTED 0x00000100 /* file system is exported */ | | 133 | #define MNT_EXPORTED 0x00000100 /* file system is exported */ |
134 | #define MNT_DEFEXPORTED 0x00000200 /* exported to the world */ | | 134 | #define MNT_DEFEXPORTED 0x00000200 /* exported to the world */ |
135 | #define MNT_EXPORTANON 0x00000400 /* use anon uid mapping for everyone */ | | 135 | #define MNT_EXPORTANON 0x00000400 /* use anon uid mapping for everyone */ |
136 | #define MNT_EXKERB 0x00000800 /* exported with Kerberos uid mapping */ | | 136 | #define MNT_EXKERB 0x00000800 /* exported with Kerberos uid mapping */ |
137 | #define MNT_EXNORESPORT 0x08000000 /* don't enforce reserved ports (NFS) */ | | 137 | #define MNT_EXNORESPORT 0x08000000 /* don't enforce reserved ports (NFS) */ |
138 | #define MNT_EXPUBLIC 0x10000000 /* public export (WebNFS) */ | | 138 | #define MNT_EXPUBLIC 0x10000000 /* public export (WebNFS) */ |
139 | | | 139 | |
140 | #define __MNT_EXPORTED_FLAGS \ | | 140 | #define __MNT_EXPORTED_FLAGS \ |
141 | { MNT_EXRDONLY, 1, "exported read-only" }, \ | | 141 | { MNT_EXRDONLY, 1, "exported read-only" }, \ |
142 | { MNT_EXPORTED, 0, "NFS exported" }, \ | | 142 | { MNT_EXPORTED, 0, "NFS exported" }, \ |
143 | { MNT_DEFEXPORTED, 1, "exported to the world" }, \ | | 143 | { MNT_DEFEXPORTED, 1, "exported to the world" }, \ |
144 | { MNT_EXPORTANON, 1, "anon uid mapping" }, \ | | 144 | { MNT_EXPORTANON, 1, "anon uid mapping" }, \ |
145 | { MNT_EXKERB, 1, "kerberos uid mapping" }, \ | | 145 | { MNT_EXKERB, 1, "kerberos uid mapping" }, \ |
146 | { MNT_EXNORESPORT, 0, "non-reserved ports" }, \ | | 146 | { MNT_EXNORESPORT, 0, "non-reserved ports" }, \ |
147 | { MNT_EXPUBLIC, 0, "WebNFS exports" }, | | 147 | { MNT_EXPUBLIC, 0, "WebNFS exports" }, |
148 | | | 148 | |
149 | /* | | 149 | /* |
150 | * Flags set by internal operations. | | 150 | * Flags set by internal operations. |
151 | */ | | 151 | */ |
152 | #define MNT_LOCAL 0x00001000 /* filesystem is stored locally */ | | 152 | #define MNT_LOCAL 0x00001000 /* filesystem is stored locally */ |
153 | #define MNT_QUOTA 0x00002000 /* quotas are enabled on filesystem */ | | 153 | #define MNT_QUOTA 0x00002000 /* quotas are enabled on filesystem */ |
154 | #define MNT_ROOTFS 0x00004000 /* identifies the root filesystem */ | | 154 | #define MNT_ROOTFS 0x00004000 /* identifies the root filesystem */ |
155 | | | 155 | |
156 | #define __MNT_INTERNAL_FLAGS \ | | 156 | #define __MNT_INTERNAL_FLAGS \ |
157 | { MNT_LOCAL, 0, "local" }, \ | | 157 | { MNT_LOCAL, 0, "local" }, \ |
158 | { MNT_QUOTA, 0, "with quotas" }, \ | | 158 | { MNT_QUOTA, 0, "with quotas" }, \ |
159 | { MNT_ROOTFS, 1, "root file system" }, | | 159 | { MNT_ROOTFS, 1, "root file system" }, |
160 | | | 160 | |
161 | /* | | 161 | /* |
162 | * Mask of flags that are visible to statvfs() | | 162 | * Mask of flags that are visible to statvfs() |
163 | */ | | 163 | */ |
164 | #define MNT_VISFLAGMASK ( \ | | 164 | #define MNT_VISFLAGMASK ( \ |
165 | MNT_RDONLY | \ | | 165 | MNT_RDONLY | \ |
166 | MNT_SYNCHRONOUS | \ | | 166 | MNT_SYNCHRONOUS | \ |
167 | MNT_NOEXEC | \ | | 167 | MNT_NOEXEC | \ |
168 | MNT_NOSUID | \ | | 168 | MNT_NOSUID | \ |
169 | MNT_NODEV | \ | | 169 | MNT_NODEV | \ |
170 | MNT_UNION | \ | | 170 | MNT_UNION | \ |
171 | MNT_ASYNC | \ | | 171 | MNT_ASYNC | \ |
172 | MNT_NOCOREDUMP | \ | | 172 | MNT_NOCOREDUMP | \ |
173 | MNT_IGNORE | \ | | 173 | MNT_IGNORE | \ |
174 | MNT_DISCARD | \ | | 174 | MNT_DISCARD | \ |
175 | MNT_NOATIME | \ | | 175 | MNT_NOATIME | \ |
176 | MNT_SYMPERM | \ | | 176 | MNT_SYMPERM | \ |
177 | MNT_NODEVMTIME | \ | | 177 | MNT_NODEVMTIME | \ |
178 | MNT_SOFTDEP | \ | | 178 | MNT_SOFTDEP | \ |
179 | MNT_EXRDONLY | \ | | 179 | MNT_EXRDONLY | \ |
180 | MNT_EXPORTED | \ | | 180 | MNT_EXPORTED | \ |
181 | MNT_DEFEXPORTED | \ | | 181 | MNT_DEFEXPORTED | \ |
182 | MNT_EXPORTANON | \ | | 182 | MNT_EXPORTANON | \ |
183 | MNT_EXKERB | \ | | 183 | MNT_EXKERB | \ |
184 | MNT_EXNORESPORT | \ | | 184 | MNT_EXNORESPORT | \ |
185 | MNT_EXPUBLIC | \ | | 185 | MNT_EXPUBLIC | \ |
186 | MNT_LOCAL | \ | | 186 | MNT_LOCAL | \ |
187 | MNT_QUOTA | \ | | 187 | MNT_QUOTA | \ |
188 | MNT_ROOTFS | \ | | 188 | MNT_ROOTFS | \ |
189 | MNT_LOG | \ | | 189 | MNT_LOG | \ |
190 | MNT_EXTATTR) | | 190 | MNT_EXTATTR) |
191 | | | 191 | |
192 | /* | | 192 | /* |
193 | * External filesystem control flags. | | 193 | * External filesystem control flags. |
194 | */ | | 194 | */ |
195 | #define MNT_UPDATE 0x00010000 /* not a real mount, just an update */ | | 195 | #define MNT_UPDATE 0x00010000 /* not a real mount, just an update */ |
196 | #define MNT_RELOAD 0x00040000 /* reload filesystem data */ | | 196 | #define MNT_RELOAD 0x00040000 /* reload filesystem data */ |
197 | #define MNT_FORCE 0x00080000 /* force unmount or readonly change */ | | 197 | #define MNT_FORCE 0x00080000 /* force unmount or readonly change */ |
198 | #define MNT_GETARGS 0x00400000 /* retrieve file system specific args */ | | 198 | #define MNT_GETARGS 0x00400000 /* retrieve file system specific args */ |
199 | | | 199 | |
200 | #define MNT_OP_FLAGS (MNT_UPDATE|MNT_RELOAD|MNT_FORCE|MNT_GETARGS) | | 200 | #define MNT_OP_FLAGS (MNT_UPDATE|MNT_RELOAD|MNT_FORCE|MNT_GETARGS) |
201 | | | 201 | |
202 | #define __MNT_EXTERNAL_FLAGS \ | | 202 | #define __MNT_EXTERNAL_FLAGS \ |
203 | { MNT_UPDATE, 1, "being updated" }, \ | | 203 | { MNT_UPDATE, 1, "being updated" }, \ |
204 | { MNT_RELOAD, 1, "reload filesystem data" }, \ | | 204 | { MNT_RELOAD, 1, "reload filesystem data" }, \ |
205 | { MNT_FORCE, 1, "force unmount or readonly change" }, \ | | 205 | { MNT_FORCE, 1, "force unmount or readonly change" }, \ |
206 | { MNT_GETARGS, 1, "retrieve mount arguments" }, | | 206 | { MNT_GETARGS, 1, "retrieve mount arguments" }, |
207 | | | 207 | |
208 | /* | | 208 | /* |
209 | * Internal filesystem control flags. | | 209 | * Internal filesystem control flags. |
210 | * These are set in struct mount mnt_iflag. | | 210 | * These are set in struct mount mnt_iflag. |
211 | * | | 211 | * |
212 | * IMNT_UNMOUNT locks the mount entry so that name lookup cannot proceed | | 212 | * IMNT_UNMOUNT locks the mount entry so that name lookup cannot proceed |
213 | * past the mount point. This keeps the subtree stable during mounts | | 213 | * past the mount point. This keeps the subtree stable during mounts |
214 | * and unmounts. | | 214 | * and unmounts. |
215 | */ | | 215 | */ |
216 | #define IMNT_GONE 0x00000001 /* filesystem is gone.. */ | | 216 | #define IMNT_GONE 0x00000001 /* filesystem is gone.. */ |
217 | #define IMNT_UNMOUNT 0x00000002 /* unmount in progress */ | | 217 | #define IMNT_UNMOUNT 0x00000002 /* unmount in progress */ |
218 | #define IMNT_WANTRDWR 0x00000004 /* upgrade to read/write requested */ | | 218 | #define IMNT_WANTRDWR 0x00000004 /* upgrade to read/write requested */ |
219 | #define IMNT_DTYPE 0x00000040 /* returns d_type fields */ | | 219 | #define IMNT_DTYPE 0x00000040 /* returns d_type fields */ |
220 | #define IMNT_HAS_TRANS 0x00000080 /* supports transactions */ | | 220 | #define IMNT_HAS_TRANS 0x00000080 /* supports transactions */ |
221 | #define IMNT_MPSAFE 0x00000100 /* file system code MP safe */ | | 221 | #define IMNT_MPSAFE 0x00000100 /* file system code MP safe */ |
222 | #define IMNT_CAN_RWTORO 0x00000200 /* can downgrade fs to from rw to r/o */ | | 222 | #define IMNT_CAN_RWTORO 0x00000200 /* can downgrade fs to from rw to r/o */ |
223 | #define IMNT_ONWORKLIST 0x00000400 /* on syncer worklist */ | | 223 | #define IMNT_ONWORKLIST 0x00000400 /* on syncer worklist */ |
224 | | | 224 | |
225 | #define __MNT_FLAGS \ | | 225 | #define __MNT_FLAGS \ |
226 | __MNT_BASIC_FLAGS \ | | 226 | __MNT_BASIC_FLAGS \ |
227 | __MNT_EXPORTED_FLAGS \ | | 227 | __MNT_EXPORTED_FLAGS \ |
228 | __MNT_INTERNAL_FLAGS \ | | 228 | __MNT_INTERNAL_FLAGS \ |
229 | __MNT_EXTERNAL_FLAGS | | 229 | __MNT_EXTERNAL_FLAGS |
230 | | | 230 | |
231 | #define __MNT_FLAG_BITS \ | | 231 | #define __MNT_FLAG_BITS \ |
232 | "\20" \ | | 232 | "\20" \ |
233 | "\40MNT_SOFTDEP" \ | | 233 | "\40MNT_SOFTDEP" \ |
234 | "\37MNT_NODEVMTIME" \ | | 234 | "\37MNT_NODEVMTIME" \ |
235 | "\36MNT_SYMPERM" \ | | 235 | "\36MNT_SYMPERM" \ |
236 | "\35MNT_EXPUBLIC" \ | | 236 | "\35MNT_EXPUBLIC" \ |
237 | "\34MNT_EXNORESPORT" \ | | 237 | "\34MNT_EXNORESPORT" \ |
238 | "\33MNT_NOATIME" \ | | 238 | "\33MNT_NOATIME" \ |
239 | "\32MNT_LOG" \ | | 239 | "\32MNT_LOG" \ |
240 | "\31MNT_EXTATTR" \ | | 240 | "\31MNT_EXTATTR" \ |
241 | "\30MNT_DISCARD" \ | | 241 | "\30MNT_DISCARD" \ |
242 | "\27MNT_GETARGS" \ | | 242 | "\27MNT_GETARGS" \ |
243 | "\26MNT_UNUSED" \ | | 243 | "\26MNT_UNUSED" \ |
244 | "\25MNT_IGNORE" \ | | 244 | "\25MNT_IGNORE" \ |
245 | "\24MNT_FORCE" \ | | 245 | "\24MNT_FORCE" \ |
246 | "\23MNT_RELOAD" \ | | 246 | "\23MNT_RELOAD" \ |
247 | "\22MNT_RELATIME" \ | | 247 | "\22MNT_RELATIME" \ |
248 | "\21MNT_UPDATE" \ | | 248 | "\21MNT_UPDATE" \ |
249 | "\20MNT_NOCOREDUMP" \ | | 249 | "\20MNT_NOCOREDUMP" \ |
250 | "\17MNT_ROOTFS" \ | | 250 | "\17MNT_ROOTFS" \ |
251 | "\16MNT_QUOTA" \ | | 251 | "\16MNT_QUOTA" \ |
252 | "\15MNT_LOCAL" \ | | 252 | "\15MNT_LOCAL" \ |
253 | "\14MNT_EXKERB" \ | | 253 | "\14MNT_EXKERB" \ |
254 | "\13MNT_EXPORTANON" \ | | 254 | "\13MNT_EXPORTANON" \ |
255 | "\12MNT_DEFEXPORTED" \ | | 255 | "\12MNT_DEFEXPORTED" \ |
256 | "\11MNT_EXPORTED" \ | | 256 | "\11MNT_EXPORTED" \ |
257 | "\10MNT_EXRDONLY" \ | | 257 | "\10MNT_EXRDONLY" \ |
258 | "\07MNT_ASYNC" \ | | 258 | "\07MNT_ASYNC" \ |
259 | "\06MNT_UNION" \ | | 259 | "\06MNT_UNION" \ |
260 | "\05MNT_NODEV" \ | | 260 | "\05MNT_NODEV" \ |
261 | "\04MNT_NOSUID" \ | | 261 | "\04MNT_NOSUID" \ |
262 | "\03MNT_NOEXEC" \ | | 262 | "\03MNT_NOEXEC" \ |
263 | "\02MNT_SYNCHRONOUS" \ | | 263 | "\02MNT_SYNCHRONOUS" \ |
264 | "\01MNT_RDONLY" | | 264 | "\01MNT_RDONLY" |
265 | | | 265 | |
266 | #define __IMNT_FLAG_BITS \ | | 266 | #define __IMNT_FLAG_BITS \ |
267 | "\20" \ | | 267 | "\20" \ |
268 | "\13IMNT_ONWORKLIST" \ | | 268 | "\13IMNT_ONWORKLIST" \ |
269 | "\12IMNT_CAN_RWTORO" \ | | 269 | "\12IMNT_CAN_RWTORO" \ |
270 | "\11IMNT_MPSAFE" \ | | 270 | "\11IMNT_MPSAFE" \ |
271 | "\10IMNT_HAS_TRANS" \ | | 271 | "\10IMNT_HAS_TRANS" \ |
272 | "\07IMNT_DTYPE" \ | | 272 | "\07IMNT_DTYPE" \ |
273 | "\03IMNT_WANTRDWR" \ | | 273 | "\03IMNT_WANTRDWR" \ |
274 | "\02IMNT_UNMOUNT" \ | | 274 | "\02IMNT_UNMOUNT" \ |
275 | "\01IMNT_GONE" | | 275 | "\01IMNT_GONE" |
276 | | | 276 | |
277 | /* | | 277 | /* |
278 | * Flags for various system call interfaces. | | 278 | * Flags for various system call interfaces. |
279 | * | | 279 | * |
280 | * waitfor flags to vfs_sync() and getvfsstat() | | 280 | * waitfor flags to vfs_sync() and getvfsstat() |
281 | */ | | 281 | */ |
282 | #define MNT_WAIT 1 /* synchronously wait for I/O to complete */ | | 282 | #define MNT_WAIT 1 /* synchronously wait for I/O to complete */ |
283 | #define MNT_NOWAIT 2 /* start all I/O, but do not wait for it */ | | 283 | #define MNT_NOWAIT 2 /* start all I/O, but do not wait for it */ |
284 | #define MNT_LAZY 3 /* push data not written by filesystem syncer */ | | 284 | #define MNT_LAZY 3 /* push data not written by filesystem syncer */ |
285 | #endif /* _SYS_FSTYPES_H_ */ | | 285 | #endif /* _SYS_FSTYPES_H_ */ |