File: /Users/paulross/dev/linux/linux-3.13/include/uapi/linux/fs.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: #ifndef _UAPI_LINUX_FS_H
       2: #define _UAPI_LINUX_FS_H
       3: 
       4: /*
       5:  * This file has definitions for some important file table
       6:  * structures etc.
       7:  */
       8: 
       9: #include <linux/limits.h>
      10: #include <linux/ioctl.h>
      11: #include <linux/types.h>
      12: 
      13: /*
      14:  * It's silly to have NR_OPEN bigger than NR_FILE, but you can change
      15:  * the file limit at runtime and only root can increase the per-process
      16:  * nr_file rlimit, so it's safe to set up a ridiculously high absolute
      17:  * upper limit on files-per-process.
      18:  *
      19:  * Some programs (notably those using select()) may have to be 
      20:  * recompiled to take full advantage of the new limits..  
      21:  */
      22: 
      23: /* Fixed constants first: */
      24: #undef NR_OPEN
      25: #define INR_OPEN_CUR 1024    /* Initial setting for nfile rlimits */
      26: #define INR_OPEN_MAX 4096    /* Hard limit for nfile rlimits */
      27: 
      28: #define BLOCK_SIZE_BITS 10
      29: #define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
      30: 
      31: #define SEEK_SET    0    /* seek relative to beginning of file */
      32: #define SEEK_CUR    1    /* seek relative to current file position */
      33: #define SEEK_END    2    /* seek relative to end of file */
      34: #define SEEK_DATA    3    /* seek to the next data */
      35: #define SEEK_HOLE    4    /* seek to the next hole */
      36: #define SEEK_MAX    SEEK_HOLE
      37: 
      38: struct fstrim_range {
      39:     __u64 start;
      40:     __u64 len;
      41:     __u64 minlen;
      42: };
      43: 
      44: /* And dynamically-tunable limits and defaults: */
      45: struct files_stat_struct {
      46:     unsigned long nr_files;        /* read only */
      47:     unsigned long nr_free_files;    /* read only */
      48:     unsigned long max_files;        /* tunable */
      49: };
      50: 
      51: struct inodes_stat_t {
      52:     long nr_inodes;
      53:     long nr_unused;
      54:     long dummy[5];        /* padding for sysctl ABI compatibility */
      55: };
      56: 
      57: 
      58: #define NR_FILE  8192    /* this can well be larger on a larger system */
      59: 
      60: 
      61: /*
      62:  * These are the fs-independent mount-flags: up to 32 flags are supported
      63:  */
      64: #define MS_RDONLY     1    /* Mount read-only */
      65: #define MS_NOSUID     2    /* Ignore suid and sgid bits */
      66: #define MS_NODEV     4    /* Disallow access to device special files */
      67: #define MS_NOEXEC     8    /* Disallow program execution */
      68: #define MS_SYNCHRONOUS    16    /* Writes are synced at once */
      69: #define MS_REMOUNT    32    /* Alter flags of a mounted FS */
      70: #define MS_MANDLOCK    64    /* Allow mandatory locks on an FS */
      71: #define MS_DIRSYNC    128    /* Directory modifications are synchronous */
      72: #define MS_NOATIME    1024    /* Do not update access times. */
      73: #define MS_NODIRATIME    2048    /* Do not update directory access times */
      74: #define MS_BIND        4096
      75: #define MS_MOVE        8192
      76: #define MS_REC        16384
      77: #define MS_VERBOSE    32768    /* War is peace. Verbosity is silence.
      78:                    MS_VERBOSE is deprecated. */
      79: #define MS_SILENT    32768
      80: #define MS_POSIXACL    (1<<16)    /* VFS does not apply the umask */
      81: #define MS_UNBINDABLE    (1<<17)    /* change to unbindable */
      82: #define MS_PRIVATE    (1<<18)    /* change to private */
      83: #define MS_SLAVE    (1<<19)    /* change to slave */
      84: #define MS_SHARED    (1<<20)    /* change to shared */
      85: #define MS_RELATIME    (1<<21)    /* Update atime relative to mtime/ctime. */
      86: #define MS_KERNMOUNT    (1<<22) /* this is a kern_mount call */
      87: #define MS_I_VERSION    (1<<23) /* Update inode I_version field */
      88: #define MS_STRICTATIME    (1<<24) /* Always perform atime updates */
      89: 
      90: /* These sb flags are internal to the kernel */
      91: #define MS_NOSEC    (1<<28)
      92: #define MS_BORN        (1<<29)
      93: #define MS_ACTIVE    (1<<30)
      94: #define MS_NOUSER    (1<<31)
      95: 
      96: /*
      97:  * Superblock flags that can be altered by MS_REMOUNT
      98:  */
      99: #define MS_RMT_MASK    (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION)
     100: 
     101: /*
     102:  * Old magic mount flag and mask
     103:  */
     104: #define MS_MGC_VAL 0xC0ED0000
     105: #define MS_MGC_MSK 0xffff0000
     106: 
     107: /* the read-only stuff doesn't really belong here, but any other place is
     108:    probably as bad and I don't want to create yet another include file. */
     109: 
     110: #define BLKROSET   _IO(0x12,93)    /* set device read-only (0 = read-write) */
     111: #define BLKROGET   _IO(0x12,94)    /* get read-only status (0 = read_write) */
     112: #define BLKRRPART  _IO(0x12,95)    /* re-read partition table */
     113: #define BLKGETSIZE _IO(0x12,96)    /* return device size /512 (long *arg) */
     114: #define BLKFLSBUF  _IO(0x12,97)    /* flush buffer cache */
     115: #define BLKRASET   _IO(0x12,98)    /* set read ahead for block device */
     116: #define BLKRAGET   _IO(0x12,99)    /* get current read ahead setting */
     117: #define BLKFRASET  _IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */
     118: #define BLKFRAGET  _IO(0x12,101)/* get filesystem (mm/filemap.c) read-ahead */
     119: #define BLKSECTSET _IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */
     120: #define BLKSECTGET _IO(0x12,103)/* get max sectors per request (ll_rw_blk.c) */
     121: #define BLKSSZGET  _IO(0x12,104)/* get block device sector size */
     122: #if 0
     123: #define BLKPG      _IO(0x12,105)/* See blkpg.h */
     124: 
     125: /* Some people are morons.  Do not use sizeof! */
     126: 
     127: #define BLKELVGET  _IOR(0x12,106,size_t)/* elevator get */
     128: #define BLKELVSET  _IOW(0x12,107,size_t)/* elevator set */
     129: /* This was here just to show that the number is taken -
     130:    probably all these _IO(0x12,*) ioctls should be moved to blkpg.h. */
     131: #endif
     132: /* A jump here: 108-111 have been used for various private purposes. */
     133: #define BLKBSZGET  _IOR(0x12,112,size_t)
     134: #define BLKBSZSET  _IOW(0x12,113,size_t)
     135: #define BLKGETSIZE64 _IOR(0x12,114,size_t)    /* return device size in bytes (u64 *arg) */
     136: #define BLKTRACESETUP _IOWR(0x12,115,struct blk_user_trace_setup)
     137: #define BLKTRACESTART _IO(0x12,116)
     138: #define BLKTRACESTOP _IO(0x12,117)
     139: #define BLKTRACETEARDOWN _IO(0x12,118)
     140: #define BLKDISCARD _IO(0x12,119)
     141: #define BLKIOMIN _IO(0x12,120)
     142: #define BLKIOOPT _IO(0x12,121)
     143: #define BLKALIGNOFF _IO(0x12,122)
     144: #define BLKPBSZGET _IO(0x12,123)
     145: #define BLKDISCARDZEROES _IO(0x12,124)
     146: #define BLKSECDISCARD _IO(0x12,125)
     147: #define BLKROTATIONAL _IO(0x12,126)
     148: #define BLKZEROOUT _IO(0x12,127)
     149: 
     150: #define BMAP_IOCTL 1        /* obsolete - kept for compatibility */
     151: #define FIBMAP       _IO(0x00,1)    /* bmap access */
     152: #define FIGETBSZ   _IO(0x00,2)    /* get the block size used for bmap */
     153: #define FIFREEZE    _IOWR('X', 119, int)    /* Freeze */
     154: #define FITHAW        _IOWR('X', 120, int)    /* Thaw */
     155: #define FITRIM        _IOWR('X', 121, struct fstrim_range)    /* Trim */
     156: 
     157: #define    FS_IOC_GETFLAGS            _IOR('f', 1, long)
     158: #define    FS_IOC_SETFLAGS            _IOW('f', 2, long)
     159: #define    FS_IOC_GETVERSION        _IOR('v', 1, long)
     160: #define    FS_IOC_SETVERSION        _IOW('v', 2, long)
     161: #define FS_IOC_FIEMAP            _IOWR('f', 11, struct fiemap)
     162: #define FS_IOC32_GETFLAGS        _IOR('f', 1, int)
     163: #define FS_IOC32_SETFLAGS        _IOW('f', 2, int)
     164: #define FS_IOC32_GETVERSION        _IOR('v', 1, int)
     165: #define FS_IOC32_SETVERSION        _IOW('v', 2, int)
     166: 
     167: /*
     168:  * Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS)
     169:  */
     170: #define    FS_SECRM_FL            0x00000001 /* Secure deletion */
     171: #define    FS_UNRM_FL            0x00000002 /* Undelete */
     172: #define    FS_COMPR_FL            0x00000004 /* Compress file */
     173: #define FS_SYNC_FL            0x00000008 /* Synchronous updates */
     174: #define FS_IMMUTABLE_FL            0x00000010 /* Immutable file */
     175: #define FS_APPEND_FL            0x00000020 /* writes to file may only append */
     176: #define FS_NODUMP_FL            0x00000040 /* do not dump file */
     177: #define FS_NOATIME_FL            0x00000080 /* do not update atime */
     178: /* Reserved for compression usage... */
     179: #define FS_DIRTY_FL            0x00000100
     180: #define FS_COMPRBLK_FL            0x00000200 /* One or more compressed clusters */
     181: #define FS_NOCOMP_FL            0x00000400 /* Don't compress */
     182: #define FS_ECOMPR_FL            0x00000800 /* Compression error */
     183: /* End compression flags --- maybe not all used */
     184: #define FS_BTREE_FL            0x00001000 /* btree format dir */
     185: #define FS_INDEX_FL            0x00001000 /* hash-indexed directory */
     186: #define FS_IMAGIC_FL            0x00002000 /* AFS directory */
     187: #define FS_JOURNAL_DATA_FL        0x00004000 /* Reserved for ext3 */
     188: #define FS_NOTAIL_FL            0x00008000 /* file tail should not be merged */
     189: #define FS_DIRSYNC_FL            0x00010000 /* dirsync behaviour (directories only) */
     190: #define FS_TOPDIR_FL            0x00020000 /* Top of directory hierarchies*/
     191: #define FS_EXTENT_FL            0x00080000 /* Extents */
     192: #define FS_DIRECTIO_FL            0x00100000 /* Use direct i/o */
     193: #define FS_NOCOW_FL            0x00800000 /* Do not cow file */
     194: #define FS_RESERVED_FL            0x80000000 /* reserved for ext2 lib */
     195: 
     196: #define FS_FL_USER_VISIBLE        0x0003DFFF /* User visible flags */
     197: #define FS_FL_USER_MODIFIABLE        0x000380FF /* User modifiable flags */
     198: 
     199: 
     200: #define SYNC_FILE_RANGE_WAIT_BEFORE    1
     201: #define SYNC_FILE_RANGE_WRITE        2
     202: #define SYNC_FILE_RANGE_WAIT_AFTER    4
     203: 
     204: #endif /* _UAPI_LINUX_FS_H */
     205: