fs.h
001: #ifndef _LINUX_FS_H
002: #define _LINUX_FS_H
003:
004:
005:
006:
007:
008:
009: #include <linux/limits.h>
010: #include <linux/ioctl.h>
011: #include <linux/blk_types.h>
012: #include <linux/types.h>
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025: #undef NR_OPEN
026: #define INR_OPEN_CUR 1024
027: #define INR_OPEN_MAX 4096
028:
029: #define BLOCK_SIZE_BITS 10
030: #define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
031:
032: #define SEEK_SET 0
033: #define SEEK_CUR 1
034: #define SEEK_END 2
035: #define SEEK_DATA 3
036: #define SEEK_HOLE 4
037: #define SEEK_MAX SEEK_HOLE
038:
039: struct fstrim_range {
040: __u64 start;
041: __u64 len;
042: __u64 minlen;
043: };
044:
045:
046: struct files_stat_struct {
047: unsigned long nr_files;
048: unsigned long nr_free_files;
049: unsigned long max_files;
050: };
051:
052: struct inodes_stat_t {
053: int nr_inodes;
054: int nr_unused;
055: int dummy[5];
056: };
057:
058:
059: #define NR_FILE 8192
060:
061: #define MAY_EXEC 0x00000001
062: #define MAY_WRITE 0x00000002
063: #define MAY_READ 0x00000004
064: #define MAY_APPEND 0x00000008
065: #define MAY_ACCESS 0x00000010
066: #define MAY_OPEN 0x00000020
067: #define MAY_CHDIR 0x00000040
068:
069: #define MAY_NOT_BLOCK 0x00000080
070:
071:
072:
073:
074:
075:
076:
077: #define FMODE_READ ((fmode_t)0x1)
078:
079: #define FMODE_WRITE ((fmode_t)0x2)
080:
081: #define FMODE_LSEEK ((fmode_t)0x4)
082:
083: #define FMODE_PREAD ((fmode_t)0x8)
084:
085: #define FMODE_PWRITE ((fmode_t)0x10)
086:
087: #define FMODE_EXEC ((fmode_t)0x20)
088:
089: #define FMODE_NDELAY ((fmode_t)0x40)
090:
091: #define FMODE_EXCL ((fmode_t)0x80)
092:
093:
094: #define FMODE_WRITE_IOCTL ((fmode_t)0x100)
095:
096:
097:
098:
099:
100:
101:
102: #define FMODE_NOCMTIME ((fmode_t)0x800)
103:
104:
105: #define FMODE_RANDOM ((fmode_t)0x1000)
106:
107:
108: #define FMODE_UNSIGNED_OFFSET ((fmode_t)0x2000)
109:
110:
111: #define FMODE_PATH ((fmode_t)0x4000)
112:
113:
114: #define FMODE_NONOTIFY ((fmode_t)0x1000000)
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158: #define RW_MASK REQ_WRITE
159: #define RWA_MASK REQ_RAHEAD
160:
161: #define READ 0
162: #define WRITE RW_MASK
163: #define READA RWA_MASK
164:
165: #define READ_SYNC (READ | REQ_SYNC)
166: #define WRITE_SYNC (WRITE | REQ_SYNC | REQ_NOIDLE)
167: #define WRITE_ODIRECT (WRITE | REQ_SYNC)
168: #define WRITE_FLUSH (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FLUSH)
169: #define WRITE_FUA (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FUA)
170: #define WRITE_FLUSH_FUA (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FLUSH | REQ_FUA)
171:
172: #define SEL_IN 1
173: #define SEL_OUT 2
174: #define SEL_EX 4
175:
176:
177: #define FS_REQUIRES_DEV 1
178: #define FS_BINARY_MOUNTDATA 2
179: #define FS_HAS_SUBTYPE 4
180: #define FS_REVAL_DOT 16384
181: #define FS_RENAME_DOES_D_MOVE 32768
182:
183:
184:
185:
186:
187:
188: #define MS_RDONLY 1
189: #define MS_NOSUID 2
190: #define MS_NODEV 4
191: #define MS_NOEXEC 8
192: #define MS_SYNCHRONOUS 16
193: #define MS_REMOUNT 32
194: #define MS_MANDLOCK 64
195: #define MS_DIRSYNC 128
196: #define MS_NOATIME 1024
197: #define MS_NODIRATIME 2048
198: #define MS_BIND 4096
199: #define MS_MOVE 8192
200: #define MS_REC 16384
201: #define MS_VERBOSE 32768
202:
203: #define MS_SILENT 32768
204: #define MS_POSIXACL (1<<16)
205: #define MS_UNBINDABLE (1<<17)
206: #define MS_PRIVATE (1<<18)
207: #define MS_SLAVE (1<<19)
208: #define MS_SHARED (1<<20)
209: #define MS_RELATIME (1<<21)
210: #define MS_KERNMOUNT (1<<22)
211: #define MS_I_VERSION (1<<23)
212: #define MS_STRICTATIME (1<<24)
213: #define MS_NOSEC (1<<28)
214: #define MS_BORN (1<<29)
215: #define MS_ACTIVE (1<<30)
216: #define MS_NOUSER (1<<31)
217:
218:
219:
220:
221: #define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION)
222:
223:
224:
225:
226: #define MS_MGC_VAL 0xC0ED0000
227: #define MS_MGC_MSK 0xffff0000
228:
229:
230:
231: #define S_SYNC 1
232: #define S_NOATIME 2
233: #define S_APPEND 4
234: #define S_IMMUTABLE 8
235: #define S_DEAD 16
236: #define S_NOQUOTA 32
237: #define S_DIRSYNC 64
238: #define S_NOCMTIME 128
239: #define S_SWAPFILE 256
240: #define S_PRIVATE 512
241: #define S_IMA 1024
242: #define S_AUTOMOUNT 2048
243: #define S_NOSEC 4096
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256: rmk@arm.uk.linux.org
257:
258: #define __IS_FLG(inode,flg) ((inode)->i_sb->s_flags & (flg))
259:
260: #define IS_RDONLY(inode) ((inode)->i_sb->s_flags & MS_RDONLY)
261: #define IS_SYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS) || \
262: ((inode)->i_flags & S_SYNC))
263: #define IS_DIRSYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS|MS_DIRSYNC) || \
264: ((inode)->i_flags & (S_SYNC|S_DIRSYNC)))
265: #define IS_MANDLOCK(inode) __IS_FLG(inode, MS_MANDLOCK)
266: #define IS_NOATIME(inode) __IS_FLG(inode, MS_RDONLY|MS_NOATIME)
267: #define IS_I_VERSION(inode) __IS_FLG(inode, MS_I_VERSION)
268:
269: #define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA)
270: #define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
271: #define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
272: #define IS_POSIXACL(inode) __IS_FLG(inode, MS_POSIXACL)
273:
274: #define IS_DEADDIR(inode) ((inode)->i_flags & S_DEAD)
275: #define IS_NOCMTIME(inode) ((inode)->i_flags & S_NOCMTIME)
276: #define IS_SWAPFILE(inode) ((inode)->i_flags & S_SWAPFILE)
277: #define IS_PRIVATE(inode) ((inode)->i_flags & S_PRIVATE)
278: #define IS_IMA(inode) ((inode)->i_flags & S_IMA)
279: #define IS_AUTOMOUNT(inode) ((inode)->i_flags & S_AUTOMOUNT)
280: #define IS_NOSEC(inode) ((inode)->i_flags & S_NOSEC)
281:
282:
283:
284:
285: #define BLKROSET _IO(0x12,93)
286: #define BLKROGET _IO(0x12,94)
287: #define BLKRRPART _IO(0x12,95)
288: #define BLKGETSIZE _IO(0x12,96)
289: #define BLKFLSBUF _IO(0x12,97)
290: #define BLKRASET _IO(0x12,98)
291: #define BLKRAGET _IO(0x12,99)
292: #define BLKFRASET _IO(0x12,100)
293: #define BLKFRAGET _IO(0x12,101)
294: #define BLKSECTSET _IO(0x12,102)
295: #define BLKSECTGET _IO(0x12,103)
296: #define BLKSSZGET _IO(0x12,104)
297: #if 0
298: #define BLKPG _IO(0x12,105)
299:
300:
301:
302: #define BLKELVGET _IOR(0x12,106,size_t)
303: #define BLKELVSET _IOW(0x12,107,size_t)
304:
305:
306: #endif
307:
308: #define BLKBSZGET _IOR(0x12,112,size_t)
309: #define BLKBSZSET _IOW(0x12,113,size_t)
310: #define BLKGETSIZE64 _IOR(0x12,114,size_t)
311: #define BLKTRACESETUP _IOWR(0x12,115,struct blk_user_trace_setup)
312: #define BLKTRACESTART _IO(0x12,116)
313: #define BLKTRACESTOP _IO(0x12,117)
314: #define BLKTRACETEARDOWN _IO(0x12,118)
315: #define BLKDISCARD _IO(0x12,119)
316: #define BLKIOMIN _IO(0x12,120)
317: #define BLKIOOPT _IO(0x12,121)
318: #define BLKALIGNOFF _IO(0x12,122)
319: #define BLKPBSZGET _IO(0x12,123)
320: #define BLKDISCARDZEROES _IO(0x12,124)
321: #define BLKSECDISCARD _IO(0x12,125)
322:
323: #define BMAP_IOCTL 1
324: #define FIBMAP _IO(0x00,1)
325: #define FIGETBSZ _IO(0x00,2)
326: #define FIFREEZE _IOWR('X', 119, int)
327: #define FITHAW _IOWR('X', 120, int)
328: #define FITRIM _IOWR('X', 121, struct fstrim_range)
329:
330: #define FS_IOC_GETFLAGS _IOR('f', 1, long)
331: #define FS_IOC_SETFLAGS _IOW('f', 2, long)
332: #define FS_IOC_GETVERSION _IOR('v', 1, long)
333: #define FS_IOC_SETVERSION _IOW('v', 2, long)
334: #define FS_IOC_FIEMAP _IOWR('f', 11, struct fiemap)
335: #define FS_IOC32_GETFLAGS _IOR('f', 1, int)
336: #define FS_IOC32_SETFLAGS _IOW('f', 2, int)
337: #define FS_IOC32_GETVERSION _IOR('v', 1, int)
338: #define FS_IOC32_SETVERSION _IOW('v', 2, int)
339:
340:
341:
342:
343: #define FS_SECRM_FL 0x00000001
344: #define FS_UNRM_FL 0x00000002
345: #define FS_COMPR_FL 0x00000004
346: #define FS_SYNC_FL 0x00000008
347: #define FS_IMMUTABLE_FL 0x00000010
348: #define FS_APPEND_FL 0x00000020
349: #define FS_NODUMP_FL 0x00000040
350: #define FS_NOATIME_FL 0x00000080
351:
352: #define FS_DIRTY_FL 0x00000100
353: #define FS_COMPRBLK_FL 0x00000200
354: #define FS_NOCOMP_FL 0x00000400
355: #define FS_ECOMPR_FL 0x00000800
356:
357: #define FS_BTREE_FL 0x00001000
358: #define FS_INDEX_FL 0x00001000
359: #define FS_IMAGIC_FL 0x00002000
360: #define FS_JOURNAL_DATA_FL 0x00004000
361: #define FS_NOTAIL_FL 0x00008000
362: #define FS_DIRSYNC_FL 0x00010000
363: #define FS_TOPDIR_FL 0x00020000
364: #define FS_EXTENT_FL 0x00080000
365: #define FS_DIRECTIO_FL 0x00100000
366: #define FS_NOCOW_FL 0x00800000
367: #define FS_RESERVED_FL 0x80000000
368:
369: #define FS_FL_USER_VISIBLE 0x0003DFFF
370: #define FS_FL_USER_MODIFIABLE 0x000380FF
371:
372:
373: #define SYNC_FILE_RANGE_WAIT_BEFORE 1
374: #define SYNC_FILE_RANGE_WRITE 2
375: #define SYNC_FILE_RANGE_WAIT_AFTER 4
376:
377: #endif
378:
© Andrew Scott 2006 -
2024,
All Rights Reserved