blob: 7993d7cf783651f2afab31136a1a6681e7c7fed6 [file] [log] [blame] [edit]
# 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/fs.h>
include <uapi/linux/fsmap.h>
include <fs/ext4/ext4.h>
ioctl$EXT4_IOC_GROUP_EXTEND(fd fd, cmd const[EXT4_IOC_GROUP_EXTEND], arg ptr[in, intptr])
ioctl$EXT4_IOC_GROUP_ADD(fd fd, cmd const[EXT4_IOC_GROUP_ADD], arg ptr[in, ext4_new_group_input])
ioctl$EXT4_IOC_MIGRATE(fd fd, cmd const[EXT4_IOC_MIGRATE])
ioctl$EXT4_IOC_ALLOC_DA_BLKS(fd fd, cmd const[EXT4_IOC_ALLOC_DA_BLKS])
ioctl$EXT4_IOC_MOVE_EXT(fd fd, cmd const[EXT4_IOC_MOVE_EXT], arg ptr[in, move_extent])
ioctl$EXT4_IOC_SWAP_BOOT(fd fd, cmd const[EXT4_IOC_SWAP_BOOT])
ioctl$EXT4_IOC_PRECACHE_EXTENTS(fd fd, cmd const[EXT4_IOC_PRECACHE_EXTENTS])
ioctl$EXT4_IOC_CLEAR_ES_CACHE(fd fd, cmd const[EXT4_IOC_CLEAR_ES_CACHE])
ioctl$EXT4_IOC_GETSTATE(fd fd, cmd const[EXT4_IOC_GETSTATE], arg ptr[out, flags[ext4_state_flags, int32]])
ioctl$EXT4_IOC_GET_ES_CACHE(fd fd, cmd const[EXT4_IOC_GET_ES_CACHE], args ptr[inout, fiemap])
ioctl$EXT4_IOC_CHECKPOINT(fd fd, cmd const[EXT4_IOC_CHECKPOINT], arg ptr[in, flags[ext4_checkpoint_flags, int32]])
ioctl$EXT4_IOC_GETFSUUID(fd fd, cmd const[EXT4_IOC_GETFSUUID], arg ptr[out, fsuuid])
ioctl$EXT4_IOC_SETFSUUID(fd fd, cmd const[EXT4_IOC_SETFSUUID], arg ptr[in, fsuuid])
ext4_state_flags = EXT4_STATE_FLAG_EXT_PRECACHED, EXT4_STATE_FLAG_NEW, EXT4_STATE_FLAG_NEWENTRY, EXT4_STATE_FLAG_DA_ALLOC_CLOSE
ext4_checkpoint_flags = EXT4_IOC_CHECKPOINT_FLAG_DISCARD, EXT4_IOC_CHECKPOINT_FLAG_ZEROOUT, EXT4_IOC_CHECKPOINT_FLAG_DRY_RUN
# EXT4_IOC_SHUTDOWN on root fs effectively brings the machine down in weird ways.
# Fortunately, the value does not conflict with any other ioctl commands for now.
ioctl$EXT4_IOC_SHUTDOWN(fd fd, cmd const[EXT4_IOC_SHUTDOWN]) (disabled)
# EXT4_IOC_RESIZE_FS on root fs can shrink it to 0 (or whatever is the minimum size)
# and then creation of new temp dirs for tests will fail.
# TODO: not necessary for sandbox=namespace as it tests in a tmpfs
# and/or if we mount tmpfs for sandbox=none (#971).
ioctl$EXT4_IOC_RESIZE_FS(fd fd, cmd const[EXT4_IOC_RESIZE_FS]) (disabled)
ext4_new_group_input {
group int32
block_bitmap int64
inode_bitmap int64
inode_table int64
blocks_count int32
reserved_blocks int16
unused const[0, int16]
}
move_extent {
reserved const[0, int32]
donor_fd fd
orig_start int64
donor_start int64
len int64
moved_len int64
}
fsuuid {
fsu_len flags[ext4_uuid_len, int32]
fsu_flags const[0, int32]
fsu_uuid array[int8, UUID_SIZE]
}
ext4_uuid_len = 0, UUID_SIZE