blob: 3bb418369a6614a2c5c99fb4bc5a56474494aa37 [file] [log] [blame]
Ben Cheng655a7c02013-10-16 16:09:24 -07001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 *** To edit the content of this header, modify the corresponding
11 *** source file (e.g. under external/kernel-headers/original/) then
12 *** run bionic/libc/kernel/tools/update_all.py
13 ***
14 *** Any manual change here will be lost the next time this script will
15 *** be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef _UAPI_LINUX_FS_H
20#define _UAPI_LINUX_FS_H
21#include <linux/limits.h>
22#include <linux/ioctl.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070023#include <linux/types.h>
Christopher Ferris9584fa42019-12-09 15:36:13 -080024#include <linux/fscrypt.h>
Christopher Ferrisd842e432019-03-07 10:21:59 -080025#include <linux/mount.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070026#undef NR_OPEN
27#define INR_OPEN_CUR 1024
28#define INR_OPEN_MAX 4096
Ben Cheng655a7c02013-10-16 16:09:24 -070029#define BLOCK_SIZE_BITS 10
Tao Baod7db5942015-01-28 10:07:51 -080030#define BLOCK_SIZE (1 << BLOCK_SIZE_BITS)
Ben Cheng655a7c02013-10-16 16:09:24 -070031#define SEEK_SET 0
32#define SEEK_CUR 1
Ben Cheng655a7c02013-10-16 16:09:24 -070033#define SEEK_END 2
34#define SEEK_DATA 3
35#define SEEK_HOLE 4
36#define SEEK_MAX SEEK_HOLE
Christopher Ferrisba8d4f42014-09-03 19:56:49 -070037#define RENAME_NOREPLACE (1 << 0)
38#define RENAME_EXCHANGE (1 << 1)
Christopher Ferris82d75042015-01-26 10:57:07 -080039#define RENAME_WHITEOUT (1 << 2)
Christopher Ferris106b3a82016-08-24 12:15:38 -070040struct file_clone_range {
Christopher Ferris106b3a82016-08-24 12:15:38 -070041 __s64 src_fd;
42 __u64 src_offset;
43 __u64 src_length;
44 __u64 dest_offset;
Christopher Ferris106b3a82016-08-24 12:15:38 -070045};
46struct fstrim_range {
Tao Baod7db5942015-01-28 10:07:51 -080047 __u64 start;
48 __u64 len;
49 __u64 minlen;
Ben Cheng655a7c02013-10-16 16:09:24 -070050};
Christopher Ferris106b3a82016-08-24 12:15:38 -070051#define FILE_DEDUPE_RANGE_SAME 0
52#define FILE_DEDUPE_RANGE_DIFFERS 1
Christopher Ferris106b3a82016-08-24 12:15:38 -070053struct file_dedupe_range_info {
54 __s64 dest_fd;
55 __u64 dest_offset;
56 __u64 bytes_deduped;
Christopher Ferris106b3a82016-08-24 12:15:38 -070057 __s32 status;
58 __u32 reserved;
59};
60struct file_dedupe_range {
Christopher Ferris106b3a82016-08-24 12:15:38 -070061 __u64 src_offset;
62 __u64 src_length;
63 __u16 dest_count;
64 __u16 reserved1;
Christopher Ferris106b3a82016-08-24 12:15:38 -070065 __u32 reserved2;
66 struct file_dedupe_range_info info[0];
67};
Christopher Ferris82d75042015-01-26 10:57:07 -080068struct files_stat_struct {
Tao Baod7db5942015-01-28 10:07:51 -080069 unsigned long nr_files;
70 unsigned long nr_free_files;
71 unsigned long max_files;
Christopher Ferris82d75042015-01-26 10:57:07 -080072};
Ben Cheng655a7c02013-10-16 16:09:24 -070073struct inodes_stat_t {
Tao Baod7db5942015-01-28 10:07:51 -080074 long nr_inodes;
75 long nr_unused;
Tao Baod7db5942015-01-28 10:07:51 -080076 long dummy[5];
Ben Cheng655a7c02013-10-16 16:09:24 -070077};
78#define NR_FILE 8192
Christopher Ferris106b3a82016-08-24 12:15:38 -070079struct fsxattr {
Christopher Ferris6a9755d2017-01-13 14:09:31 -080080 __u32 fsx_xflags;
Christopher Ferris106b3a82016-08-24 12:15:38 -070081 __u32 fsx_extsize;
82 __u32 fsx_nextents;
83 __u32 fsx_projid;
Christopher Ferris6a9755d2017-01-13 14:09:31 -080084 __u32 fsx_cowextsize;
85 unsigned char fsx_pad[8];
Christopher Ferris106b3a82016-08-24 12:15:38 -070086};
87#define FS_XFLAG_REALTIME 0x00000001
88#define FS_XFLAG_PREALLOC 0x00000002
89#define FS_XFLAG_IMMUTABLE 0x00000008
Christopher Ferris106b3a82016-08-24 12:15:38 -070090#define FS_XFLAG_APPEND 0x00000010
91#define FS_XFLAG_SYNC 0x00000020
92#define FS_XFLAG_NOATIME 0x00000040
93#define FS_XFLAG_NODUMP 0x00000080
Christopher Ferris106b3a82016-08-24 12:15:38 -070094#define FS_XFLAG_RTINHERIT 0x00000100
95#define FS_XFLAG_PROJINHERIT 0x00000200
96#define FS_XFLAG_NOSYMLINKS 0x00000400
97#define FS_XFLAG_EXTSIZE 0x00000800
Christopher Ferris106b3a82016-08-24 12:15:38 -070098#define FS_XFLAG_EXTSZINHERIT 0x00001000
99#define FS_XFLAG_NODEFRAG 0x00002000
100#define FS_XFLAG_FILESTREAM 0x00004000
101#define FS_XFLAG_DAX 0x00008000
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800102#define FS_XFLAG_COWEXTSIZE 0x00010000
Christopher Ferris106b3a82016-08-24 12:15:38 -0700103#define FS_XFLAG_HASATTR 0x80000000
104#define BLKROSET _IO(0x12, 93)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800105#define BLKROGET _IO(0x12, 94)
Tao Baod7db5942015-01-28 10:07:51 -0800106#define BLKRRPART _IO(0x12, 95)
107#define BLKGETSIZE _IO(0x12, 96)
108#define BLKFLSBUF _IO(0x12, 97)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800109#define BLKRASET _IO(0x12, 98)
Tao Baod7db5942015-01-28 10:07:51 -0800110#define BLKRAGET _IO(0x12, 99)
111#define BLKFRASET _IO(0x12, 100)
112#define BLKFRAGET _IO(0x12, 101)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800113#define BLKSECTSET _IO(0x12, 102)
Tao Baod7db5942015-01-28 10:07:51 -0800114#define BLKSECTGET _IO(0x12, 103)
115#define BLKSSZGET _IO(0x12, 104)
116#define BLKBSZGET _IOR(0x12, 112, size_t)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800117#define BLKBSZSET _IOW(0x12, 113, size_t)
Tao Baod7db5942015-01-28 10:07:51 -0800118#define BLKGETSIZE64 _IOR(0x12, 114, size_t)
119#define BLKTRACESETUP _IOWR(0x12, 115, struct blk_user_trace_setup)
120#define BLKTRACESTART _IO(0x12, 116)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800121#define BLKTRACESTOP _IO(0x12, 117)
Tao Baod7db5942015-01-28 10:07:51 -0800122#define BLKTRACETEARDOWN _IO(0x12, 118)
123#define BLKDISCARD _IO(0x12, 119)
124#define BLKIOMIN _IO(0x12, 120)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800125#define BLKIOOPT _IO(0x12, 121)
Tao Baod7db5942015-01-28 10:07:51 -0800126#define BLKALIGNOFF _IO(0x12, 122)
127#define BLKPBSZGET _IO(0x12, 123)
128#define BLKDISCARDZEROES _IO(0x12, 124)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800129#define BLKSECDISCARD _IO(0x12, 125)
Tao Baod7db5942015-01-28 10:07:51 -0800130#define BLKROTATIONAL _IO(0x12, 126)
131#define BLKZEROOUT _IO(0x12, 127)
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700132#define BLKGETDISKSEQ _IOR(0x12, 128, __u64)
Ben Cheng655a7c02013-10-16 16:09:24 -0700133#define BMAP_IOCTL 1
Christopher Ferris05d08e92016-02-04 13:16:38 -0800134#define FIBMAP _IO(0x00, 1)
Tao Baod7db5942015-01-28 10:07:51 -0800135#define FIGETBSZ _IO(0x00, 2)
Ben Cheng655a7c02013-10-16 16:09:24 -0700136#define FIFREEZE _IOWR('X', 119, int)
137#define FITHAW _IOWR('X', 120, int)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800138#define FITRIM _IOWR('X', 121, struct fstrim_range)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700139#define FICLONE _IOW(0x94, 9, int)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700140#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range)
141#define FIDEDUPERANGE _IOWR(0x94, 54, struct file_dedupe_range)
Christopher Ferris9ce28842018-10-25 12:11:39 -0700142#define FSLABEL_MAX 256
Christopher Ferris82d75042015-01-26 10:57:07 -0800143#define FS_IOC_GETFLAGS _IOR('f', 1, long)
Ben Cheng655a7c02013-10-16 16:09:24 -0700144#define FS_IOC_SETFLAGS _IOW('f', 2, long)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700145#define FS_IOC_GETVERSION _IOR('v', 1, long)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800146#define FS_IOC_SETVERSION _IOW('v', 2, long)
Christopher Ferris82d75042015-01-26 10:57:07 -0800147#define FS_IOC_FIEMAP _IOWR('f', 11, struct fiemap)
Ben Cheng655a7c02013-10-16 16:09:24 -0700148#define FS_IOC32_GETFLAGS _IOR('f', 1, int)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700149#define FS_IOC32_SETFLAGS _IOW('f', 2, int)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800150#define FS_IOC32_GETVERSION _IOR('v', 1, int)
Christopher Ferris82d75042015-01-26 10:57:07 -0800151#define FS_IOC32_SETVERSION _IOW('v', 2, int)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700152#define FS_IOC_FSGETXATTR _IOR('X', 31, struct fsxattr)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700153#define FS_IOC_FSSETXATTR _IOW('X', 32, struct fsxattr)
Christopher Ferris9ce28842018-10-25 12:11:39 -0700154#define FS_IOC_GETFSLABEL _IOR(0x94, 49, char[FSLABEL_MAX])
155#define FS_IOC_SETFSLABEL _IOW(0x94, 50, char[FSLABEL_MAX])
Ben Cheng655a7c02013-10-16 16:09:24 -0700156#define FS_SECRM_FL 0x00000001
157#define FS_UNRM_FL 0x00000002
Christopher Ferris05d08e92016-02-04 13:16:38 -0800158#define FS_COMPR_FL 0x00000004
Christopher Ferris82d75042015-01-26 10:57:07 -0800159#define FS_SYNC_FL 0x00000008
Ben Cheng655a7c02013-10-16 16:09:24 -0700160#define FS_IMMUTABLE_FL 0x00000010
161#define FS_APPEND_FL 0x00000020
Christopher Ferris05d08e92016-02-04 13:16:38 -0800162#define FS_NODUMP_FL 0x00000040
Christopher Ferris82d75042015-01-26 10:57:07 -0800163#define FS_NOATIME_FL 0x00000080
Ben Cheng655a7c02013-10-16 16:09:24 -0700164#define FS_DIRTY_FL 0x00000100
165#define FS_COMPRBLK_FL 0x00000200
Christopher Ferris05d08e92016-02-04 13:16:38 -0800166#define FS_NOCOMP_FL 0x00000400
Christopher Ferris106b3a82016-08-24 12:15:38 -0700167#define FS_ENCRYPT_FL 0x00000800
Ben Cheng655a7c02013-10-16 16:09:24 -0700168#define FS_BTREE_FL 0x00001000
169#define FS_INDEX_FL 0x00001000
Christopher Ferris05d08e92016-02-04 13:16:38 -0800170#define FS_IMAGIC_FL 0x00002000
Christopher Ferris82d75042015-01-26 10:57:07 -0800171#define FS_JOURNAL_DATA_FL 0x00004000
Ben Cheng655a7c02013-10-16 16:09:24 -0700172#define FS_NOTAIL_FL 0x00008000
173#define FS_DIRSYNC_FL 0x00010000
Christopher Ferris05d08e92016-02-04 13:16:38 -0800174#define FS_TOPDIR_FL 0x00020000
Christopher Ferris106b3a82016-08-24 12:15:38 -0700175#define FS_HUGE_FILE_FL 0x00040000
Christopher Ferris82d75042015-01-26 10:57:07 -0800176#define FS_EXTENT_FL 0x00080000
Christopher Ferris9584fa42019-12-09 15:36:13 -0800177#define FS_VERITY_FL 0x00100000
Christopher Ferris106b3a82016-08-24 12:15:38 -0700178#define FS_EA_INODE_FL 0x00200000
179#define FS_EOFBLOCKS_FL 0x00400000
Ben Cheng655a7c02013-10-16 16:09:24 -0700180#define FS_NOCOW_FL 0x00800000
Christopher Ferris8177cdf2020-08-03 11:53:55 -0700181#define FS_DAX_FL 0x02000000
Christopher Ferris106b3a82016-08-24 12:15:38 -0700182#define FS_INLINE_DATA_FL 0x10000000
Christopher Ferris05d08e92016-02-04 13:16:38 -0800183#define FS_PROJINHERIT_FL 0x20000000
Christopher Ferris9584fa42019-12-09 15:36:13 -0800184#define FS_CASEFOLD_FL 0x40000000
Christopher Ferris05d08e92016-02-04 13:16:38 -0800185#define FS_RESERVED_FL 0x80000000
Christopher Ferris82d75042015-01-26 10:57:07 -0800186#define FS_FL_USER_VISIBLE 0x0003DFFF
Christopher Ferris106b3a82016-08-24 12:15:38 -0700187#define FS_FL_USER_MODIFIABLE 0x000380FF
Ben Cheng655a7c02013-10-16 16:09:24 -0700188#define SYNC_FILE_RANGE_WAIT_BEFORE 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700189#define SYNC_FILE_RANGE_WRITE 2
Christopher Ferris82d75042015-01-26 10:57:07 -0800190#define SYNC_FILE_RANGE_WAIT_AFTER 4
Christopher Ferrisaeddbcf2019-07-08 12:45:46 -0700191#define SYNC_FILE_RANGE_WRITE_AND_WAIT (SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WAIT_AFTER)
Christopher Ferris1308ad32017-11-14 17:32:13 -0800192typedef int __bitwise __kernel_rwf_t;
193#define RWF_HIPRI ((__force __kernel_rwf_t) 0x00000001)
194#define RWF_DSYNC ((__force __kernel_rwf_t) 0x00000002)
195#define RWF_SYNC ((__force __kernel_rwf_t) 0x00000004)
196#define RWF_NOWAIT ((__force __kernel_rwf_t) 0x00000008)
Christopher Ferris76a1d452018-06-27 14:12:29 -0700197#define RWF_APPEND ((__force __kernel_rwf_t) 0x00000010)
198#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT | RWF_APPEND)
Ben Cheng655a7c02013-10-16 16:09:24 -0700199#endif