1*9190c2a8SAndroid Build Coastguard Worker /**************************************************************************** 2*9190c2a8SAndroid Build Coastguard Worker **************************************************************************** 3*9190c2a8SAndroid Build Coastguard Worker *** 4*9190c2a8SAndroid Build Coastguard Worker *** This header was automatically generated from a Linux kernel header 5*9190c2a8SAndroid Build Coastguard Worker *** of the same name, to make information necessary for userspace to 6*9190c2a8SAndroid Build Coastguard Worker *** call into the kernel available to libc. It contains only constants, 7*9190c2a8SAndroid Build Coastguard Worker *** structures, and macros generated from the original header, and thus, 8*9190c2a8SAndroid Build Coastguard Worker *** contains no copyrightable information. 9*9190c2a8SAndroid Build Coastguard Worker *** 10*9190c2a8SAndroid Build Coastguard Worker *** To edit the content of this header, modify the corresponding 11*9190c2a8SAndroid Build Coastguard Worker *** source file (e.g. under external/kernel-headers/original/) then 12*9190c2a8SAndroid Build Coastguard Worker *** run bionic/libc/kernel/tools/update_all.py 13*9190c2a8SAndroid Build Coastguard Worker *** 14*9190c2a8SAndroid Build Coastguard Worker *** Any manual change here will be lost the next time this script will 15*9190c2a8SAndroid Build Coastguard Worker *** be run. You've been warned! 16*9190c2a8SAndroid Build Coastguard Worker *** 17*9190c2a8SAndroid Build Coastguard Worker **************************************************************************** 18*9190c2a8SAndroid Build Coastguard Worker ****************************************************************************/ 19*9190c2a8SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_INCREMENTALFS_H 20*9190c2a8SAndroid Build Coastguard Worker #define _UAPI_LINUX_INCREMENTALFS_H 21*9190c2a8SAndroid Build Coastguard Worker #include <linux/limits.h> 22*9190c2a8SAndroid Build Coastguard Worker #include <linux/ioctl.h> 23*9190c2a8SAndroid Build Coastguard Worker #include <linux/types.h> 24*9190c2a8SAndroid Build Coastguard Worker #include <linux/xattr.h> 25*9190c2a8SAndroid Build Coastguard Worker #define INCFS_NAME "incremental-fs" 26*9190c2a8SAndroid Build Coastguard Worker #define INCFS_MAGIC_NUMBER (0x5346434e49ul & ULONG_MAX) 27*9190c2a8SAndroid Build Coastguard Worker #define INCFS_DATA_FILE_BLOCK_SIZE 4096 28*9190c2a8SAndroid Build Coastguard Worker #define INCFS_HEADER_VER 1 29*9190c2a8SAndroid Build Coastguard Worker #define INCFS_MAX_HASH_SIZE 32 30*9190c2a8SAndroid Build Coastguard Worker #define INCFS_MAX_FILE_ATTR_SIZE 512 31*9190c2a8SAndroid Build Coastguard Worker #define INCFS_INDEX_NAME ".index" 32*9190c2a8SAndroid Build Coastguard Worker #define INCFS_INCOMPLETE_NAME ".incomplete" 33*9190c2a8SAndroid Build Coastguard Worker #define INCFS_PENDING_READS_FILENAME ".pending_reads" 34*9190c2a8SAndroid Build Coastguard Worker #define INCFS_LOG_FILENAME ".log" 35*9190c2a8SAndroid Build Coastguard Worker #define INCFS_BLOCKS_WRITTEN_FILENAME ".blocks_written" 36*9190c2a8SAndroid Build Coastguard Worker #define INCFS_XATTR_ID_NAME (XATTR_USER_PREFIX "incfs.id") 37*9190c2a8SAndroid Build Coastguard Worker #define INCFS_XATTR_SIZE_NAME (XATTR_USER_PREFIX "incfs.size") 38*9190c2a8SAndroid Build Coastguard Worker #define INCFS_XATTR_METADATA_NAME (XATTR_USER_PREFIX "incfs.metadata") 39*9190c2a8SAndroid Build Coastguard Worker #define INCFS_XATTR_VERITY_NAME (XATTR_USER_PREFIX "incfs.verity") 40*9190c2a8SAndroid Build Coastguard Worker #define INCFS_MAX_SIGNATURE_SIZE 8096 41*9190c2a8SAndroid Build Coastguard Worker #define INCFS_SIGNATURE_VERSION 2 42*9190c2a8SAndroid Build Coastguard Worker #define INCFS_SIGNATURE_SECTIONS 2 43*9190c2a8SAndroid Build Coastguard Worker #define INCFS_IOCTL_BASE_CODE 'g' 44*9190c2a8SAndroid Build Coastguard Worker #define INCFS_IOC_CREATE_FILE _IOWR(INCFS_IOCTL_BASE_CODE, 30, struct incfs_new_file_args) 45*9190c2a8SAndroid Build Coastguard Worker #define INCFS_IOC_READ_FILE_SIGNATURE _IOR(INCFS_IOCTL_BASE_CODE, 31, struct incfs_get_file_sig_args) 46*9190c2a8SAndroid Build Coastguard Worker #define INCFS_IOC_FILL_BLOCKS _IOR(INCFS_IOCTL_BASE_CODE, 32, struct incfs_fill_blocks) 47*9190c2a8SAndroid Build Coastguard Worker #define INCFS_IOC_PERMIT_FILL _IOW(INCFS_IOCTL_BASE_CODE, 33, struct incfs_permit_fill) 48*9190c2a8SAndroid Build Coastguard Worker #define INCFS_IOC_GET_FILLED_BLOCKS _IOR(INCFS_IOCTL_BASE_CODE, 34, struct incfs_get_filled_blocks_args) 49*9190c2a8SAndroid Build Coastguard Worker #define INCFS_IOC_CREATE_MAPPED_FILE _IOWR(INCFS_IOCTL_BASE_CODE, 35, struct incfs_create_mapped_file_args) 50*9190c2a8SAndroid Build Coastguard Worker #define INCFS_IOC_GET_BLOCK_COUNT _IOR(INCFS_IOCTL_BASE_CODE, 36, struct incfs_get_block_count_args) 51*9190c2a8SAndroid Build Coastguard Worker #define INCFS_IOC_GET_READ_TIMEOUTS _IOR(INCFS_IOCTL_BASE_CODE, 37, struct incfs_get_read_timeouts_args) 52*9190c2a8SAndroid Build Coastguard Worker #define INCFS_IOC_SET_READ_TIMEOUTS _IOW(INCFS_IOCTL_BASE_CODE, 38, struct incfs_set_read_timeouts_args) 53*9190c2a8SAndroid Build Coastguard Worker #define INCFS_IOC_GET_LAST_READ_ERROR _IOW(INCFS_IOCTL_BASE_CODE, 39, struct incfs_get_last_read_error_args) 54*9190c2a8SAndroid Build Coastguard Worker #define INCFS_FEATURE_FLAG_COREFS "corefs" 55*9190c2a8SAndroid Build Coastguard Worker #define INCFS_FEATURE_FLAG_ZSTD "zstd" 56*9190c2a8SAndroid Build Coastguard Worker #define INCFS_FEATURE_FLAG_V2 "v2" 57*9190c2a8SAndroid Build Coastguard Worker enum incfs_compression_alg { 58*9190c2a8SAndroid Build Coastguard Worker COMPRESSION_NONE = 0, 59*9190c2a8SAndroid Build Coastguard Worker COMPRESSION_LZ4 = 1, 60*9190c2a8SAndroid Build Coastguard Worker COMPRESSION_ZSTD = 2, 61*9190c2a8SAndroid Build Coastguard Worker }; 62*9190c2a8SAndroid Build Coastguard Worker enum incfs_block_flags { 63*9190c2a8SAndroid Build Coastguard Worker INCFS_BLOCK_FLAGS_NONE = 0, 64*9190c2a8SAndroid Build Coastguard Worker INCFS_BLOCK_FLAGS_HASH = 1, 65*9190c2a8SAndroid Build Coastguard Worker }; 66*9190c2a8SAndroid Build Coastguard Worker typedef struct { 67*9190c2a8SAndroid Build Coastguard Worker __u8 bytes[16]; 68*9190c2a8SAndroid Build Coastguard Worker } incfs_uuid_t __attribute__((aligned(8))); 69*9190c2a8SAndroid Build Coastguard Worker struct incfs_pending_read_info { 70*9190c2a8SAndroid Build Coastguard Worker incfs_uuid_t file_id; 71*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 timestamp_us; 72*9190c2a8SAndroid Build Coastguard Worker __u32 block_index; 73*9190c2a8SAndroid Build Coastguard Worker __u32 serial_number; 74*9190c2a8SAndroid Build Coastguard Worker }; 75*9190c2a8SAndroid Build Coastguard Worker struct incfs_pending_read_info2 { 76*9190c2a8SAndroid Build Coastguard Worker incfs_uuid_t file_id; 77*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 timestamp_us; 78*9190c2a8SAndroid Build Coastguard Worker __u32 block_index; 79*9190c2a8SAndroid Build Coastguard Worker __u32 serial_number; 80*9190c2a8SAndroid Build Coastguard Worker __u32 uid; 81*9190c2a8SAndroid Build Coastguard Worker __u32 reserved; 82*9190c2a8SAndroid Build Coastguard Worker }; 83*9190c2a8SAndroid Build Coastguard Worker struct incfs_fill_block { 84*9190c2a8SAndroid Build Coastguard Worker __u32 block_index; 85*9190c2a8SAndroid Build Coastguard Worker __u32 data_len; 86*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 data; 87*9190c2a8SAndroid Build Coastguard Worker __u8 compression; 88*9190c2a8SAndroid Build Coastguard Worker __u8 flags; 89*9190c2a8SAndroid Build Coastguard Worker __u16 reserved1; 90*9190c2a8SAndroid Build Coastguard Worker __u32 reserved2; 91*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 reserved3; 92*9190c2a8SAndroid Build Coastguard Worker }; 93*9190c2a8SAndroid Build Coastguard Worker struct incfs_fill_blocks { 94*9190c2a8SAndroid Build Coastguard Worker __u64 count; 95*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 fill_blocks; 96*9190c2a8SAndroid Build Coastguard Worker }; 97*9190c2a8SAndroid Build Coastguard Worker struct incfs_permit_fill { 98*9190c2a8SAndroid Build Coastguard Worker __u32 file_descriptor; 99*9190c2a8SAndroid Build Coastguard Worker }; 100*9190c2a8SAndroid Build Coastguard Worker enum incfs_hash_tree_algorithm { 101*9190c2a8SAndroid Build Coastguard Worker INCFS_HASH_TREE_NONE = 0, 102*9190c2a8SAndroid Build Coastguard Worker INCFS_HASH_TREE_SHA256 = 1 103*9190c2a8SAndroid Build Coastguard Worker }; 104*9190c2a8SAndroid Build Coastguard Worker struct incfs_new_file_args { 105*9190c2a8SAndroid Build Coastguard Worker incfs_uuid_t file_id; 106*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 size; 107*9190c2a8SAndroid Build Coastguard Worker __u16 mode; 108*9190c2a8SAndroid Build Coastguard Worker __u16 reserved1; 109*9190c2a8SAndroid Build Coastguard Worker __u32 reserved2; 110*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 directory_path; 111*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 file_name; 112*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 file_attr; 113*9190c2a8SAndroid Build Coastguard Worker __u32 file_attr_len; 114*9190c2a8SAndroid Build Coastguard Worker __u32 reserved4; 115*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 signature_info; 116*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 signature_size; 117*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 reserved6; 118*9190c2a8SAndroid Build Coastguard Worker }; 119*9190c2a8SAndroid Build Coastguard Worker struct incfs_get_file_sig_args { 120*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 file_signature; 121*9190c2a8SAndroid Build Coastguard Worker __u32 file_signature_buf_size; 122*9190c2a8SAndroid Build Coastguard Worker __u32 file_signature_len_out; 123*9190c2a8SAndroid Build Coastguard Worker }; 124*9190c2a8SAndroid Build Coastguard Worker struct incfs_filled_range { 125*9190c2a8SAndroid Build Coastguard Worker __u32 begin; 126*9190c2a8SAndroid Build Coastguard Worker __u32 end; 127*9190c2a8SAndroid Build Coastguard Worker }; 128*9190c2a8SAndroid Build Coastguard Worker struct incfs_get_filled_blocks_args { 129*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 range_buffer; 130*9190c2a8SAndroid Build Coastguard Worker __u32 range_buffer_size; 131*9190c2a8SAndroid Build Coastguard Worker __u32 start_index; 132*9190c2a8SAndroid Build Coastguard Worker __u32 end_index; 133*9190c2a8SAndroid Build Coastguard Worker __u32 total_blocks_out; 134*9190c2a8SAndroid Build Coastguard Worker __u32 data_blocks_out; 135*9190c2a8SAndroid Build Coastguard Worker __u32 range_buffer_size_out; 136*9190c2a8SAndroid Build Coastguard Worker __u32 index_out; 137*9190c2a8SAndroid Build Coastguard Worker }; 138*9190c2a8SAndroid Build Coastguard Worker struct incfs_create_mapped_file_args { 139*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 size; 140*9190c2a8SAndroid Build Coastguard Worker __u16 mode; 141*9190c2a8SAndroid Build Coastguard Worker __u16 reserved1; 142*9190c2a8SAndroid Build Coastguard Worker __u32 reserved2; 143*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 directory_path; 144*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 file_name; 145*9190c2a8SAndroid Build Coastguard Worker incfs_uuid_t source_file_id; 146*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 source_offset; 147*9190c2a8SAndroid Build Coastguard Worker }; 148*9190c2a8SAndroid Build Coastguard Worker struct incfs_get_block_count_args { 149*9190c2a8SAndroid Build Coastguard Worker __u32 total_data_blocks_out; 150*9190c2a8SAndroid Build Coastguard Worker __u32 filled_data_blocks_out; 151*9190c2a8SAndroid Build Coastguard Worker __u32 total_hash_blocks_out; 152*9190c2a8SAndroid Build Coastguard Worker __u32 filled_hash_blocks_out; 153*9190c2a8SAndroid Build Coastguard Worker }; 154*9190c2a8SAndroid Build Coastguard Worker struct incfs_per_uid_read_timeouts { 155*9190c2a8SAndroid Build Coastguard Worker __u32 uid; 156*9190c2a8SAndroid Build Coastguard Worker __u32 min_time_us; 157*9190c2a8SAndroid Build Coastguard Worker __u32 min_pending_time_us; 158*9190c2a8SAndroid Build Coastguard Worker __u32 max_pending_time_us; 159*9190c2a8SAndroid Build Coastguard Worker }; 160*9190c2a8SAndroid Build Coastguard Worker struct incfs_get_read_timeouts_args { 161*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 timeouts_array; 162*9190c2a8SAndroid Build Coastguard Worker __u32 timeouts_array_size; 163*9190c2a8SAndroid Build Coastguard Worker __u32 timeouts_array_size_out; 164*9190c2a8SAndroid Build Coastguard Worker }; 165*9190c2a8SAndroid Build Coastguard Worker struct incfs_set_read_timeouts_args { 166*9190c2a8SAndroid Build Coastguard Worker __aligned_u64 timeouts_array; 167*9190c2a8SAndroid Build Coastguard Worker __u32 timeouts_array_size; 168*9190c2a8SAndroid Build Coastguard Worker }; 169*9190c2a8SAndroid Build Coastguard Worker struct incfs_get_last_read_error_args { 170*9190c2a8SAndroid Build Coastguard Worker incfs_uuid_t file_id_out; 171*9190c2a8SAndroid Build Coastguard Worker __u64 time_us_out; 172*9190c2a8SAndroid Build Coastguard Worker __u32 page_out; 173*9190c2a8SAndroid Build Coastguard Worker __u32 errno_out; 174*9190c2a8SAndroid Build Coastguard Worker __u32 uid_out; 175*9190c2a8SAndroid Build Coastguard Worker __u32 reserved1; 176*9190c2a8SAndroid Build Coastguard Worker __u64 reserved2; 177*9190c2a8SAndroid Build Coastguard Worker }; 178*9190c2a8SAndroid Build Coastguard Worker #endif 179