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 -
            2025, 
            All Rights Reserved