github.com/google/syzkaller@v0.0.0-20240517125934-c0f1611a36d6/sys/linux/fs_incfs.txt (about) 1 # Copyright 2020 syzkaller project authors. All rights reserved. 2 # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 3 4 # incremental-fs is ChromeOS/Android-specific: 5 # https://chromium.googlesource.com/chromiumos/third_party/kernel/+/2db8add7871ad%5E%21/ 6 7 # This was generated on: 8 # https://chromium.googlesource.com/chromiumos/third_party/kernel 3a36438201f3 9 meta noextract 10 meta arches["386", "amd64", "arm", "arm64"] 11 12 include <asm/ioctls.h> 13 include <linux/stat.h> 14 include <uapi/linux/fcntl.h> 15 include <uapi/linux/incrementalfs.h> 16 17 mount$incfs(src ptr[in, filename], dst ptr[in, filename], type ptr[in, string["incremental-fs"]], flags flags[mount_flags], opts ptr[in, fs_options[incfs_options]]) 18 19 incfs_options [ 20 read_timeout_ms fs_opt_dec["read_timeout_ms", int32] 21 readahead fs_opt_dec["readahead", int32] 22 no_bf_cache fs_opt_dec["no_bf_cache", bool32] 23 no_bf_readahead fs_opt_dec["no_bf_readahead", bool32] 24 rlog_pages fs_opt_dec["rlog_pages", int32] 25 rlog_wakeup_cnt fs_opt_dec["rlog_wakeup_cnt", int32] 26 ] [varlen] 27 28 ioctl$INCFS_IOC_CREATE_FILE(fd fd, cmd const[INCFS_IOC_CREATE_FILE], arg ptr[in, incfs_new_file_args]) 29 ioctl$INCFS_IOC_FILL_BLOCKS(fd fd, cmd const[INCFS_IOC_FILL_BLOCKS], arg ptr[in, incfs_fill_blocks]) 30 ioctl$INCFS_IOC_PERMIT_FILL(fd fd, cmd const[INCFS_IOC_PERMIT_FILL], arg ptr[in, incfs_permit_fill]) 31 ioctl$INCFS_IOC_READ_FILE_SIGNATURE(fd fd, cmd const[INCFS_IOC_READ_FILE_SIGNATURE], arg ptr[in, incfs_get_file_sig_args]) 32 ioctl$INCFS_IOC_GET_FILLED_BLOCKS(fd fd, cmd const[INCFS_IOC_GET_FILLED_BLOCKS], arg ptr[in, incfs_get_filled_blocks_args]) 33 34 openat$incfs(fd fd_dir, file ptr[in, string[incfs_filename]], flags flags[open_flags], mode flags[open_mode]) fd 35 36 incfs_filename = ".pending_reads", ".log" 37 38 setxattr$incfs_id(path ptr[in, filename], name ptr[in, string["user.incfs.id"]], val ptr[in, incfs_uuid_str], size bytesize[val], flags flags[setxattr_flags]) 39 setxattr$incfs_size(path ptr[in, filename], name ptr[in, string["user.incfs.size"]], val ptr[in, int64], size bytesize[val], flags flags[setxattr_flags]) 40 setxattr$incfs_metadata(path ptr[in, filename], name ptr[in, string["user.incfs.metadata"]], val ptr[in, array[int8]], size bytesize[val], flags flags[setxattr_flags]) 41 42 incfs_uuid_t { 43 zeros array[const[0, int8], 15] 44 id int8[0:3] 45 } [align[8]] 46 47 incfs_uuid_str { 48 zeros array[const['0', int8], 31] 49 id int8['0':'3'] 50 } 51 52 incfs_new_file_args { 53 file_id incfs_uuid_t 54 size align64[int64] 55 mode flags[open_mode, int16] 56 reserved1 const[0, int16] 57 reserved2 const[0, int32] 58 directory_path ptr[in, filename] 59 file_name ptr[in, filename] 60 file_attr ptr64[in, array[int8, 0:INCFS_MAX_FILE_ATTR_SIZE]] 61 file_attr_len bytesize[file_attr, int32] 62 reserved4 const[0, int32] 63 signature_info ptr64[in, incfs_signature_info] 64 signature_size bytesize[signature_info, int64] 65 reserved6 const[0, int16] 66 } 67 68 incfs_signature_info { 69 version const[INCFS_SIGNATURE_VERSION, int32] 70 hash_info_size bytesize[hash_info, int32] 71 hash_info incfs_hash_info_section 72 signing_info_size bytesize[signing_info, int32] 73 signing_info array[int8] 74 } [packed] 75 76 incfs_hash_info_section { 77 hash_algorithm flags[incfs_hash_tree_algorithm, int32] 78 log2_blocksize const[12, int8] 79 salt_size bytesize[salt, int32] 80 salt array[int8] 81 hash_size bytesize[root_hash, int32] 82 root_hash array[int8] 83 } [packed] 84 85 incfs_hash_tree_algorithm = INCFS_HASH_TREE_NONE, INCFS_HASH_TREE_SHA256 86 87 incfs_fill_blocks { 88 count len[fill_blocks, int64] 89 fill_blocks ptr64[in, array[incfs_fill_block]] 90 } 91 92 incfs_fill_block { 93 block_index int32 94 data_len bytesize[data, int32] 95 data ptr64[in, array[int8]] 96 compression flags[incfs_compression_alg, int8] 97 flags flags[incfs_block_flags, int8] 98 reserved1 const[0, int16] 99 reserved2 const[0, int32] 100 reserved3 const[0, int64] 101 } 102 103 incfs_compression_alg = COMPRESSION_NONE, COMPRESSION_LZ4 104 incfs_block_flags = INCFS_BLOCK_FLAGS_NONE, INCFS_BLOCK_FLAGS_HASH 105 106 incfs_permit_fill { 107 incfs_permit_fill fd 108 } 109 110 incfs_get_file_sig_args { 111 file_signature ptr64[out, array[int8]] 112 file_signature_buf_size bytesize[file_signature, int32] 113 file_signature_len_out const[0, int32] 114 } 115 116 incfs_get_filled_blocks_args { 117 range_buffer ptr64[out, array[int8]] 118 range_buffer_size bytesize[range_buffer, int32] 119 start_index int32 120 end_index int32 121 total_blocks_out const[0, int32] 122 data_blocks_out const[0, int32] 123 range_buffer_size_out const[0, int32] 124 index_out const[0, int32] 125 }