aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/fs_ioctl.txt
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-08-29 12:35:25 -0700
committerDmitry Vyukov <dvyukov@google.com>2018-08-29 15:59:16 -0700
commitedb2f5f1e1078040c6581ca7e343e3ea5a44e0da (patch)
treee1fecaff14e87a23bdf5dfa9c69b2e9309e86e2a /sys/linux/fs_ioctl.txt
parent14b78b9701cd103c1946aec8b6b1c9da0186a0b1 (diff)
sys/linux: add ext4 ioctls and overlayfs
Update #533
Diffstat (limited to 'sys/linux/fs_ioctl.txt')
-rw-r--r--sys/linux/fs_ioctl.txt143
1 files changed, 143 insertions, 0 deletions
diff --git a/sys/linux/fs_ioctl.txt b/sys/linux/fs_ioctl.txt
new file mode 100644
index 000000000..977bfdbac
--- /dev/null
+++ b/sys/linux/fs_ioctl.txt
@@ -0,0 +1,143 @@
+# Copyright 2018 syzkaller project authors. All rights reserved.
+# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+include <uapi/linux/fiemap.h>
+include <uapi/linux/fs.h>
+include <uapi/linux/fsmap.h>
+include <linux/falloc.h>
+
+ioctl$FIBMAP(fd fd, cmd const[FIBMAP], arg ptr[in, int32])
+ioctl$FIGETBSZ(fd fd, cmd const[FIGETBSZ], arg ptr[out, intptr])
+ioctl$FITRIM(fd fd, cmd const[FITRIM], arg ptr[in, fstrim_range])
+ioctl$FICLONE(fd fd, cmd const[FICLONE], arg fd)
+ioctl$FICLONERANGE(fd fd, cmd const[FICLONERANGE], arg ptr[in, file_clone_range])
+ioctl$FIDEDUPERANGE(fd fd, cmd const[FIDEDUPERANGE], arg ptr[in, file_dedupe_range])
+
+ioctl$FS_IOC_GETFLAGS(fd fd, cmd const[FS_IOC_GETFLAGS], arg ptr[out, intptr])
+ioctl$FS_IOC_SETFLAGS(fd fd, cmd const[FS_IOC_SETFLAGS], arg ptr[in, intptr])
+ioctl$FS_IOC_GETVERSION(fd fd, cmd const[FS_IOC_GETVERSION], arg ptr[out, intptr])
+ioctl$FS_IOC_SETVERSION(fd fd, cmd const[FS_IOC_SETVERSION], arg ptr[in, intptr])
+ioctl$FS_IOC_FIEMAP(fd fd, cmd const[FS_IOC_FIEMAP], v ptr[in, fiemap])
+ioctl$FS_IOC_RESVSP(fd fd, cmd const[FS_IOC_RESVSP], arg ptr[in, space_resv])
+ioctl$FS_IOC_FSGETXATTR(fd fd, cmd const[FS_IOC_FSGETXATTR], arg ptr[in, fsxattr])
+ioctl$FS_IOC_FSSETXATTR(fd fd, cmd const[FS_IOC_FSSETXATTR], arg ptr[in, fsxattr])
+ioctl$FS_IOC_GETFSLABEL(fd fd, cmd const[FS_IOC_GETFSLABEL], arg ptr[out, array[const[0, int8], FSLABEL_MAX]])
+ioctl$FS_IOC_SETFSLABEL(fd fd, cmd const[FS_IOC_SETFSLABEL], arg ptr[in, array[int8, FSLABEL_MAX]])
+ioctl$FS_IOC_SET_ENCRYPTION_POLICY(fd fd, cmd const[FS_IOC_SET_ENCRYPTION_POLICY], arg ptr[in, fscrypt_policy])
+ioctl$FS_IOC_GET_ENCRYPTION_POLICY(fd fd, cmd const[FS_IOC_GET_ENCRYPTION_POLICY], arg ptr[out, array[int8, 16]])
+ioctl$FS_IOC_GET_ENCRYPTION_PWSALT(fd fd, cmd const[FS_IOC_GET_ENCRYPTION_PWSALT], arg ptr[out, fscrypt_policy])
+ioctl$FS_IOC_GETFSMAP(fd fd, cmd const[FS_IOC_GETFSMAP], arg ptr[in, fsmap_head])
+
+fscrypt_policy {
+ version const[0, int8]
+ mode fscrypt_policy_mode
+ flags flags[fs_policy_flags, int8]
+ master_key_descriptor array[int8, FS_KEY_DESCRIPTOR_SIZE]
+}
+
+fscrypt_policy_mode [
+ aes128 fscrypt_policy_mode_t[FS_ENCRYPTION_MODE_AES_128_CBC, FS_ENCRYPTION_MODE_AES_128_CTS]
+ aes256 fscrypt_policy_mode_t[FS_ENCRYPTION_MODE_AES_256_XTS, FS_ENCRYPTION_MODE_AES_256_CTS]
+ speck128 fscrypt_policy_mode_t[FS_ENCRYPTION_MODE_SPECK128_256_XTS, FS_ENCRYPTION_MODE_SPECK128_256_CTS]
+]
+
+type fscrypt_policy_mode_t[CONTENTS, FILENAMES] {
+ contents_encryption_mode const[CONTENTS, int8]
+ filenames_encryption_mode const[FILENAMES, int8]
+}
+
+fs_policy_flags = FS_POLICY_FLAGS_PAD_4, FS_POLICY_FLAGS_PAD_8, FS_POLICY_FLAGS_PAD_16
+
+space_resv {
+ l_type const[0, int16]
+ l_whence flags[seek_whence, int16]
+ l_start int64
+ l_len int64
+ l_sysid const[0, int32]
+ l_pid const[0, int32]
+ l_pad array[const[0, int32], 4]
+}
+
+fstrim_range {
+ start int64
+ len int64
+ minlen int64
+}
+
+file_clone_range {
+ src_fd fd
+ pad const[0, int32]
+ src_offset int64
+ src_length int64
+ dest_offset int64
+}
+
+file_dedupe_range {
+ src_offset int64
+ src_length int64
+ dest_count len[info, int16]
+ reserved1 const[0, int16]
+ reserved2 const[0, int32]
+ info array[file_dedupe_range_info]
+}
+
+file_dedupe_range_info {
+ dest_fd fd
+ pad const[0, int32]
+ dest_offset int64
+ bytes_deduped const[0, int64]
+ status const[0, int32]
+ reserved const[0, int32]
+}
+
+fsxattr {
+ fsx_xflags int32
+ fsx_extsize int32
+ fsx_nextents int32
+ fsx_projid int32
+ fsx_cowextsize int32
+ fsx_pad const[0, int64]
+}
+
+fiemap {
+ start int64
+ len int64
+ flags flags[fiemap_flags, int32]
+ mapped int32
+ count len[extent, int32]
+ extent array[fiemap_extent]
+}
+
+fiemap_extent {
+ logical int64
+ phys int64
+ len int64
+ pad1 const[0, int64]
+ pad2 const[0, int64]
+ flags flags[fiemap_extent_flags, int32]
+ pad3 const[0, int32]
+ pad4 const[0, int32]
+ pad5 const[0, int32]
+}
+
+fsmap_head {
+ fmh_iflags const[0, int32]
+ fmh_oflags const[0, int32]
+ fmh_count len[fmh_recs, int32]
+ fmh_entries const[0, int32]
+ fmh_reserved array[const[0, int64], 6]
+ fmh_keys array[fsmap, 2]
+ fmh_recs array[array[const[0, int8], FSMAP_SIZE]]
+}
+
+fsmap {
+ fmr_device int32
+ fmr_flags int32
+ fmr_physical int64
+ fmr_owner int64
+ fmr_offset int64
+ fmr_length int64
+ fmr_reserved array[const[0, int64], 3]
+}
+
+define FSMAP_SIZE sizeof(struct fsmap)