github.com/google/syzkaller@v0.0.0-20240517125934-c0f1611a36d6/sys/linux/filesystem.txt (about) 1 # Copyright 2018 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 include <uapi/linux/mount.h> 5 include <linux/fs.h> 6 include <linux/fcntl.h> 7 8 mount(src ptr[in, blockdev_filename], dst ptr[in, filename], type ptr[in, string[filesystem]], flags flags[mount_flags], data ptr[in, string, opt]) 9 umount2(path ptr[in, filename], flags flags[umount_flags]) 10 11 mount$bpf(src const[0], dst ptr[in, filename], type ptr[in, string["bpf"]], flags flags[mount_flags], opts ptr[in, fs_options[bpf_options]]) 12 mount$overlay(src const[0], dst ptr[in, filename], type ptr[in, string["overlay"]], flags flags[mount_flags], opts ptr[in, fs_options[overlay_options]]) 13 mount$binder(src const[0], dst ptr[in, filename], type ptr[in, string["binder"]], flags flags[mount_flags], opts ptr[in, fs_options[binder_options]]) 14 mount$tmpfs(src const[0], dst ptr[in, filename], type ptr[in, string["tmpfs"]], flags flags[mount_flags], opts ptr[in, fs_options[tmpfs_options]]) 15 mount$cgroup(src const[0], dst ptr[in, filename], type ptr[in, string["cgroup"]], flags flags[mount_flags], opts ptr[in, fs_options[cgroup_options]]) 16 mount$cgroup2(src const[0], dst ptr[in, filename], type ptr[in, string["cgroup2"]], flags flags[mount_flags], opts ptr[in, fs_options[cgroup2_options]]) 17 mount$afs(src ptr[in, afs_source], dst ptr[in, filename], type ptr[in, string["afs"]], flags flags[mount_flags], opts ptr[in, fs_options[afs_options]]) 18 19 # A bind mount ignores the filesystem type argument, but 20 # pkg/host/syscalls_linux.go:isSupportedFilesystem() requires one in 21 # /proc/filesystems. Use a common and valid filesystem string ("pipefs") to 22 # pass the check. 23 mount$bind(src ptr[in, filename], dst ptr[in, filename], type ptr[in, string["pipefs"]], flags flags[mount_flags], data const[0]) 24 25 # esdfs is ChromeOS-specific: 26 # https://chromium.googlesource.com/chromiumos/third_party/kernel/+/d2c1fb9fcdb53%5E%21/ 27 mount$esdfs(src ptr[in, filename], dst ptr[in, filename], type ptr[in, string["esdfs"]], flags flags[mount_flags], opts ptr[in, fs_options[esdfs_options]]) 28 29 # TODO: pvfs2 requires some device/source, but it looks unused: 30 # https://elixir.bootlin.com/linux/v6.1-rc6/source/fs/orangefs/super.c#L488 31 # Instead it sends requests to some pvfs2-req character device, 32 # and somebody is supposed to answer these requests with ioctls. 33 # But the deivce is not even created in /dev, somebody is supposed to mknod it. 34 # And it's major number is unknown (printed to console in debug mode only): 35 # https://elixir.bootlin.com/linux/v6.1-rc6/source/fs/orangefs/devorangefs-req.c#L803 36 # It does not look usable. 37 mount$pvfs2(src ptr[in, string["unused"]], dst ptr[in, filename], type ptr[in, string["pvfs2"]], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]]) 38 39 # TODO: nfs source is "hostname:export_path", but we also needs to setup port, 40 # protocol and other options, and most importantly we need the server to reply to RPCs. 41 # There is something called nfsd (fs/nfsd) which may help and which we need to test as well. 42 mount$nfs(src ptr[in, string], dst ptr[in, filename], type ptr[in, string["nfs"]], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]]) 43 mount$nfs4(src ptr[in, string], dst ptr[in, filename], type ptr[in, string["nfs4"]], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]]) 44 45 resource fd_fscontext[fd] 46 47 fsopen(type ptr[in, string[filesystem]], flags flags[fsopen_flags]) fd_fscontext 48 fspick(dfd fd_dir[opt], path ptr[in, filename], flags flags[fspick_flags]) fd_fscontext 49 fsconfig$FSCONFIG_SET_FLAG(fd fd_fscontext, cmd const[FSCONFIG_SET_FLAG], key ptr[in, string[fsconfig_flag_params]], value const[0], aux const[0]) 50 fsconfig$FSCONFIG_SET_STRING(fd fd_fscontext, cmd const[FSCONFIG_SET_STRING], key ptr[in, string], value ptr[in, string], aux const[0]) 51 fsconfig$FSCONFIG_SET_BINARY(fd fd_fscontext, cmd const[FSCONFIG_SET_BINARY], key ptr[in, string], value ptr[in, array[int8]], aux bytesize[value]) 52 fsconfig$FSCONFIG_SET_PATH(fd fd_fscontext, cmd const[FSCONFIG_SET_PATH], key ptr[in, string], value ptr[in, filename], aux fd_dir[opt]) 53 fsconfig$FSCONFIG_SET_PATH_EMPTY(fd fd_fscontext, cmd const[FSCONFIG_SET_PATH_EMPTY], key ptr[in, string], value ptr[in, filename], aux fd_dir[opt]) 54 fsconfig$FSCONFIG_SET_FD(fd fd_fscontext, cmd const[FSCONFIG_SET_FD], key ptr[in, string], value const[0], aux fd) 55 fsconfig$FSCONFIG_CMD_CREATE(fd fd_fscontext, cmd const[FSCONFIG_CMD_CREATE], key const[0], value const[0], aux const[0]) 56 fsconfig$FSCONFIG_CMD_RECONFIGURE(fd fd_fscontext, cmd const[FSCONFIG_CMD_RECONFIGURE], key const[0], value const[0], aux const[0]) 57 fsmount(fs_fd fd_fscontext, flags flags[fsmount_flags], attr_flags flags[fsmount_attr_flags]) fd 58 move_mount(from_dfd fd_dir[opt], from_pathname ptr[in, filename], to_dfd fd_dir[opt], to_pathname ptr[in, filename], flags flags[move_mount_flags]) 59 open_tree(dfd fd_dir[opt], filename ptr[in, filename], flags flags[open_tree_flags]) fd 60 mount_setattr(dfd fd_dir[opt], filename ptr[in, filename], flags flags[mount_setattr_flags], args ptr[in, mount_attr], size bytesize[args]) 61 62 open_tree_flags = AT_EMPTY_PATH, AT_NO_AUTOMOUNT, AT_RECURSIVE, AT_SYMLINK_NOFOLLOW, OPEN_TREE_CLONE, OPEN_TREE_CLOEXEC 63 64 mount_setattr_flags = AT_EMPTY_PATH, AT_NO_AUTOMOUNT, AT_RECURSIVE, AT_SYMLINK_NOFOLLOW 65 66 mount_attr { 67 attr_set flags[mount_attr_flags, int64] 68 attr_clr flags[mount_attr_flags, int64] 69 propagation flags[mount_attr_propagation_flags, int64] 70 userns_fd align64[fd_userns] 71 } 72 73 mount_attr_flags = MOUNT_ATTR_IDMAP, fsmount_attr_flags 74 mount_attr_propagation_flags = MS_UNBINDABLE, MS_PRIVATE, MS_SLAVE, MS_SHARED 75 fsmount_flags = FSMOUNT_CLOEXEC 76 fsopen_flags = FSOPEN_CLOEXEC 77 fspick_flags = FSPICK_CLOEXEC 78 fsmount_attr_flags = MOUNT_ATTR_RDONLY, MOUNT_ATTR_NOSUID, MOUNT_ATTR_NODEV, MOUNT_ATTR_NOEXEC, MOUNT_ATTR__ATIME, MOUNT_ATTR_NODIRATIME 79 move_mount_flags = MOVE_MOUNT_F_SYMLINKS, MOVE_MOUNT_F_AUTOMOUNTS, MOVE_MOUNT_F_EMPTY_PATH, MOVE_MOUNT_T_SYMLINKS, MOVE_MOUNT_T_AUTOMOUNTS, MOVE_MOUNT_T_EMPTY_PATH, MOVE_MOUNT_SET_GROUP, MOVE_MOUNT_BENEATH 80 fsconfig_flag_params = "dirsync", "lazytime", "mand", "posixacl", "ro", "sync", "async", "nolazytime", "nomand", "rw", "silent" 81 82 filesystem = "sysfs", "rootfs", "ramfs", "tmpfs", "devtmpfs", "debugfs", "securityfs", "sockfs", "pipefs", "anon_inodefs", "devpts", "hugetlbfs", "vfat", "ecryptfs", "fuseblk", "fuse", "rpc_pipefs", "nfs", "nfs4", "nfsd", "binfmt_misc", "autofs", "xfs", "jfs", "msdos", "ntfs", "ntfs3", "minix", "hfs", "hfsplus", "qnx4", "ufs", "btrfs", "configfs", "ncpfs", "qnx6", "exofs", "befs", "vxfs", "gfs2", "gfs2meta", "fusectl", "bfs", "nsfs", "efs", "cifs", "efivarfs", "affs", "tracefs", "bdev", "ocfs2", "ocfs2_dlmfs", "hpfs", "proc", "afs", "reiserfs", "jffs2", "romfs", "aio", "sysv", "v7", "udf", "ceph", "pstore", "adfs", "9p", "hostfs", "squashfs", "cramfs", "iso9660", "coda", "nilfs2", "logfs", "overlay", "f2fs", "omfs", "ubifs", "openpromfs", "bpf", "cgroup", "cgroup2", "cpuset", "mqueue", "aufs", "selinuxfs", "dax", "erofs", "virtiofs", "exfat", "binder", "zonefs", "pvfs2", "incremental-fs", "esdfs", "smb3", "gadgetfs", ext4_types 83 84 blockdev_filename [ 85 filename filename 86 nbd nbd_filename 87 loop loop_filename 88 nullb string["/dev/nullb0"] 89 md0 string["/dev/md0"] 90 sg0 string["/dev/sg0"] 91 sr0 string["/dev/sr0"] 92 ] [varlen] 93 94 nbd_filename { 95 prefix stringnoz["/dev/nbd"] 96 id proc['0', 1, int8] 97 z const[0, int8] 98 } [packed] 99 100 loop_filename { 101 prefix stringnoz["/dev/loop"] 102 id proc['0', 1, int8] 103 z const[0, int8] 104 } [packed] 105 106 syz_read_part_table(size len[img], img ptr[in, compressed_image]) (timeout[200], no_generate, no_minimize) 107 108 define SYZ_MOUNT_IMAGE_TIMEOUT 4000 109 110 syz_mount_image$vfat(fs ptr[in, string["vfat"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[vfat_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 111 syz_mount_image$msdos(fs ptr[in, string["msdos"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[msdos_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 112 syz_mount_image$bfs(fs ptr[in, string["bfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 113 syz_mount_image$xfs(fs ptr[in, string["xfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[xfs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 114 syz_mount_image$minix(fs ptr[in, string["minix"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 115 syz_mount_image$reiserfs(fs ptr[in, string["reiserfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[reiserfs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 116 syz_mount_image$hfs(fs ptr[in, string["hfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[hfs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 117 syz_mount_image$hfsplus(fs ptr[in, string["hfsplus"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[hfsplus_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 118 syz_mount_image$iso9660(fs ptr[in, string["iso9660"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[iso9660_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 119 syz_mount_image$gfs2(fs ptr[in, string["gfs2"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[gfs2_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 120 syz_mount_image$jfs(fs ptr[in, string["jfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[jfs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 121 syz_mount_image$btrfs(fs ptr[in, string["btrfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[btrfs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 122 syz_mount_image$ntfs(fs ptr[in, string["ntfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[ntfs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 123 syz_mount_image$ntfs3(fs ptr[in, string["ntfs3"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[ntfs3_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 124 syz_mount_image$ext4(fs ptr[in, string[ext4_types]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[ext4_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 125 syz_mount_image$f2fs(fs ptr[in, string["f2fs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[f2fs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 126 syz_mount_image$ocfs2(fs ptr[in, string["ocfs2"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 127 syz_mount_image$erofs(fs ptr[in, string["erofs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[erofs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 128 syz_mount_image$exfat(fs ptr[in, string["exfat"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[exfat_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 129 syz_mount_image$cramfs(fs ptr[in, string["cramfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 130 syz_mount_image$romfs(fs ptr[in, string["romfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 131 syz_mount_image$efs(fs ptr[in, string["efs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 132 syz_mount_image$jffs2(fs ptr[in, string["jffs2"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[jffs2_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 133 syz_mount_image$nilfs2(fs ptr[in, string["nilfs2"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[nilfs2_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 134 syz_mount_image$squashfs(fs ptr[in, string["squashfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 135 syz_mount_image$udf(fs ptr[in, string["udf"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[udf_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 136 syz_mount_image$bcachefs(fs ptr[in, string["bcachefs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[bcachefs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 137 138 # TODO: zonefs needs a zoned block device: 139 # https://elixir.bootlin.com/linux/v6.1-rc6/source/fs/zonefs/super.c#L1768 140 # So currnetly the mount always fails. 141 # These docs say such devices can be emulated with nullb, but need special setup: 142 # https://zonedstorage.io/docs/getting-started/zbd-emulation 143 # https://btrfs.wiki.kernel.org/index.php/Zoned 144 syz_mount_image$zonefs(fs ptr[in, string["zonefs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[zonefs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 145 146 # TODO: ubifs needs a special ubi device: 147 # https://elixir.bootlin.com/linux/v6.1-rc6/source/fs/ubifs/super.c#L2063 148 # So currnetly the mount always fails. 149 syz_mount_image$ubifs(fs ptr[in, string["ubifs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[ubifs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 150 151 # TODO: add mount options for the following file systems. 152 syz_mount_image$adfs(fs ptr[in, string["adfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 153 syz_mount_image$affs(fs ptr[in, string["affs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 154 syz_mount_image$befs(fs ptr[in, string["befs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 155 syz_mount_image$vxfs(fs ptr[in, string["vxfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 156 syz_mount_image$omfs(fs ptr[in, string["omfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 157 syz_mount_image$hpfs(fs ptr[in, string["hpfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 158 syz_mount_image$qnx4(fs ptr[in, string["qnx4"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 159 syz_mount_image$qnx6(fs ptr[in, string["qnx6"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 160 syz_mount_image$sysv(fs ptr[in, string["sysv"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 161 syz_mount_image$ufs(fs ptr[in, string["ufs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 162 syz_mount_image$gfs2meta(fs ptr[in, string["gfs2meta"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 163 syz_mount_image$v7(fs ptr[in, string["v7"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[stringnoz]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 164 165 # Note: tmpfs does not need an image, but we use this in tests. 166 syz_mount_image$tmpfs(fs ptr[in, string["tmpfs"]], dir ptr[in, filename], flags flags[mount_flags], opts ptr[in, fs_options[tmpfs_options]], chdir bool8, size len[img], img ptr[in, compressed_image]) fd_dir (timeout[SYZ_MOUNT_IMAGE_TIMEOUT], no_generate, no_minimize) 167 168 type fs_options[ELEMS] { 169 elems array[fs_opt_elem[ELEMS]] 170 common array[fs_opt_elem[fs_options_common]] 171 null const[0, int8] 172 } [packed] 173 174 type fs_opt_elem[ELEMS] { 175 elem ELEMS 176 comma const[',', int8] 177 } [packed] 178 179 type fs_opt[NAME, TYPE] { 180 name stringnoz[NAME] 181 eq const['=', int8] 182 val TYPE 183 } [packed] 184 185 type fs_opt_nodelim[NAME, TYPE] { 186 name stringnoz[NAME] 187 val TYPE 188 } [packed] 189 190 type fs_opt_str[NAME] fs_opt[NAME, stringnoz] 191 type fs_opt_dec[NAME, VAL] fs_opt[NAME, fmt[dec, VAL]] 192 type fs_opt_hex[NAME, VAL] fs_opt[NAME, fmt[hex, VAL]] 193 type fs_opt_oct[NAME, VAL] fs_opt[NAME, fmt[oct, VAL]] 194 type fs_opt_dec_suffix[NAME] fs_opt[NAME, array[flags[fs_opt_digits_suffix, int8]]] 195 type fs_opt_filename[NAME] fs_opt[NAME, stringnoz[filename]] 196 type fs_opt_codepage[NAME] fs_opt[NAME, stringnoz[codepages_names]] 197 type fs_opt_cp_num[NAME] fs_opt[NAME, stringnoz[codepage_nums]] 198 199 fs_opt_digits_suffix = '-', 'x', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'k', 'm', 'g', 't', 'p', 'e', '%' 200 201 fs_options_common [ 202 flag stringnoz[fsconfig_flag_params] 203 204 # SELinux options: 205 context fs_opt["context", stringnoz[selinux_user_context]] 206 fscontext fs_opt["fscontext", stringnoz[selinux_user_context]] 207 rootcontext fs_opt["rootcontext", stringnoz[selinux_user_context]] 208 defcontext fs_opt["defcontext", stringnoz[selinux_user_context]] 209 seclabel stringnoz["seclabel"] 210 211 # Smack options: 212 smackfsdef fs_opt_str["smackfsdef"] 213 smackfsfloor fs_opt_str["smackfsfloor"] 214 smackfshat fs_opt_str["smackfshat"] 215 smackfsroot fs_opt_str["smackfsroot"] 216 smackfstransmute fs_opt_str["smackfstransmute"] 217 218 # IMA options: 219 measure stringnoz["measure"] 220 dont_measure stringnoz["dont_measure"] 221 appraise stringnoz["appraise"] 222 dont_appraise stringnoz["dont_appraise"] 223 audit stringnoz["audit"] 224 hash stringnoz["hash"] 225 dont_hash stringnoz["dont_hash"] 226 permit_directio stringnoz["permit_directio"] 227 obj_user fs_opt_str["obj_user"] 228 obj_role fs_opt_str["obj_role"] 229 obj_type fs_opt_str["obj_type"] 230 subj_user fs_opt_str["subj_user"] 231 subj_role fs_opt_str["subj_role"] 232 subj_type fs_opt_str["subj_type"] 233 func fs_opt["func", stringnoz[ima_funcs]] 234 mask fs_opt["mask", stringnoz[ima_masks]] 235 fsmagic fs_opt_hex["fsmagic", intptr] 236 fsname fs_opt_str["fsname"] 237 fsuuid fs_opt["fsuuid", uuid_str] 238 uid_eq fs_opt_dec["uid", uid] 239 euid_eq fs_opt_dec["euid", uid] 240 fowner_eq fs_opt_dec["fowner", uid] 241 uid_gt fs_opt_nodelim["uid>", fmt[dec, uid]] 242 euid_gt fs_opt_nodelim["euid>", fmt[dec, uid]] 243 fowner_gt fs_opt_nodelim["fowner>", fmt[dec, uid]] 244 uid_lt fs_opt_nodelim["uid<", fmt[dec, uid]] 245 euid_lt fs_opt_nodelim["euid<", fmt[dec, uid]] 246 fowner_lt fs_opt_nodelim["fowner<", fmt[dec, uid]] 247 appraise_type stringnoz["appraise_type=imasig"] 248 pcr fs_opt_dec["pcr", int64[0:64]] 249 ] [varlen] 250 251 uuid_str { 252 p0 array[flags[hex_chars, int8], 8] 253 d0 const['-', int8] 254 p1 array[flags[hex_chars, int8], 4] 255 d1 const['-', int8] 256 p2 array[flags[hex_chars, int8], 4] 257 d2 const['-', int8] 258 p3 array[flags[hex_chars, int8], 4] 259 d3 const['-', int8] 260 p4 array[flags[hex_chars, int8], 8] 261 } 262 263 hex_chars = '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' 264 265 ima_funcs = "FILE_CHECK", "PATH_CHECK", "MODULE_CHECK", "FIRMWARE_CHECK", "FILE_MMAP", "MMAP_CHECK", "BPRM_CHECK", "CREDS_CHECK", "KEXEC_KERNEL_CHECK", "KEXEC_INITRAMFS_CHECK", "POLICY_CHECK" 266 ima_masks = "MAY_EXEC", "MAY_WRITE", "MAY_READ", "MAY_APPEND", "^MAY_EXEC", "^MAY_WRITE", "^MAY_READ", "^MAY_APPEND" 267 268 msdos_options [ 269 fat fat_options 270 nodots stringnoz["nodots"] 271 dots stringnoz["dots"] 272 ] [varlen] 273 274 vfat_options [ 275 fat fat_options 276 iocharset fs_opt_codepage["iocharset"] 277 rodir stringnoz["rodir"] 278 utf8no stringnoz["utf8=0"] 279 utf8 stringnoz["utf8=1"] 280 uni_xlateno stringnoz["uni_xlate=0"] 281 uni_xlate stringnoz["uni_xlate=1"] 282 numtail stringnoz["nonumtail=0"] 283 nonumtail stringnoz["nnonumtail=1"] 284 shortname_lower stringnoz["shortname=lower"] 285 shortname_win95 stringnoz["shortname=win95"] 286 shortname_winnt stringnoz["shortname=winnt"] 287 shortname_mixed stringnoz["shortname=mixed"] 288 ] [varlen] 289 290 fat_options [ 291 check_relaxed stringnoz["check=relaxed"] 292 check_strict stringnoz["check=strict"] 293 check_normal stringnoz["check=normal"] 294 usefree stringnoz["usefree"] 295 nocase stringnoz["nocase"] 296 quiet stringnoz["quiet"] 297 showexec stringnoz["showexec"] 298 debug stringnoz["debug"] 299 sys_immutable stringnoz["sys_immutable"] 300 flush stringnoz["flush"] 301 tz_utc stringnoz["tz=UTC"] 302 errors_continue stringnoz["errors=continue"] 303 errors_remount stringnoz["errors=remount-ro"] 304 discard stringnoz["discard"] 305 nfs stringnoz["nfs"] 306 nfs_nostale_ro stringnoz["nfs=nostale_ro"] 307 dos1xfloppy stringnoz["dos1xfloppy"] 308 uid fs_opt_hex["uid", uid] 309 gid fs_opt_hex["gid", gid] 310 umask fs_opt_oct["umask", int32] 311 dmask fs_opt_oct["dmask", int32] 312 fmask fs_opt_oct["fmask", int32] 313 allow_utime fs_opt_oct["allow_utime", int32] 314 time_offset fs_opt_hex["time_offset", int32[-1440:1440]] 315 codepage fs_opt_cp_num["codepage"] 316 ] [varlen] 317 318 xfs_options [ 319 wsync stringnoz["wsync"] 320 noalign stringnoz["noalign"] 321 swalloc stringnoz["swalloc"] 322 nouuid stringnoz["nouuid"] 323 mtpt stringnoz["mtpt"] 324 grpid stringnoz["grpid"] 325 nogrpid stringnoz["nogrpid"] 326 bsdgroups stringnoz["bsdgroups"] 327 sysvgroups stringnoz["sysvgroups"] 328 norecovery stringnoz["norecovery"] 329 inode64 stringnoz["inode64"] 330 inode32 stringnoz["inode32"] 331 ikeep stringnoz["ikeep"] 332 noikeep stringnoz["noikeep"] 333 largeio stringnoz["largeio"] 334 nolargeio stringnoz["nolargeio"] 335 attr2 stringnoz["attr2"] 336 noattr2 stringnoz["noattr2"] 337 filestreams stringnoz["filestreams"] 338 quota stringnoz["quota"] 339 noquota stringnoz["noquota"] 340 lazytime stringnoz["lazytime"] 341 nolazytime stringnoz["nolazytime"] 342 usrquota stringnoz["usrquota"] 343 grpquota stringnoz["grpquota"] 344 prjquota stringnoz["prjquota"] 345 uquota stringnoz["uquota"] 346 gquota stringnoz["gquota"] 347 pquota stringnoz["pquota"] 348 uqnoenforce stringnoz["uqnoenforce"] 349 gqnoenforce stringnoz["gqnoenforce"] 350 pqnoenforce stringnoz["pqnoenforce"] 351 qnoenforce stringnoz["qnoenforce"] 352 discard stringnoz["discard"] 353 nodiscard stringnoz["nodiscard"] 354 dax stringnoz["dax"] 355 barrier stringnoz["barrier"] 356 nobarrier stringnoz["nobarrier"] 357 logbufs fs_opt_dec["logbufs", int32[-1:8]] 358 biosize fs_opt_dec["biosize", int32] 359 sunit fs_opt_hex["sunit", int32] 360 swidth fs_opt_hex["swidth", int32] 361 logbsize fs_opt_dec_suffix["logbsize"] 362 allocsize fs_opt_dec_suffix["allocsize"] 363 logdev fs_opt_filename["logdev"] 364 rtdev fs_opt_filename["rtdev"] 365 ] [varlen] 366 367 reiserfs_options [ 368 tails_on stringnoz["tails=on"] 369 tails_off stringnoz["tails=off"] 370 tails_small stringnoz["tails=small"] 371 notail stringnoz["notail"] 372 conv stringnoz["conv"] 373 noattrs stringnoz["noattrs"] 374 expose_privroot stringnoz["expose_privroot"] 375 user_xattr stringnoz["user_xattr"] 376 nouser_xattr stringnoz["nouser_xattr"] 377 acl stringnoz["acl"] 378 noacl stringnoz["noacl"] 379 replayonly stringnoz["replayonly"] 380 nolargeio stringnoz["nolargeio"] 381 usrquota stringnoz["usrquota"] 382 grpquota stringnoz["grpquota"] 383 noquota stringnoz["noquota"] 384 usrjquota stringnoz["usrjquota"] 385 usrjquota_file stringnoz["usrjquota=syz"] 386 grpjquota stringnoz["grpjquota"] 387 commit fs_opt_hex["commit", int32] 388 resize fs_opt_hex["resize", int32] 389 resize_auto stringnoz["resize=auto"] 390 jdev fs_opt_filename["jdev"] 391 jqfmt_vfsold stringnoz["jqfmt=vfsold"] 392 jqfmt_vfsv0 stringnoz["jqfmt=vfsv0"] 393 hash_tea stringnoz["hash=tea"] 394 hash_rupasov stringnoz["hash=rupasov"] 395 hash_r5 stringnoz["hash=r5"] 396 balloc_noborder stringnoz["block-allocator=noborder"] 397 balloc_border stringnoz["block-allocator=border"] 398 balloc_no_unhash_reloc stringnoz["block-allocator=no_unhashed_relocation"] 399 balloc_hashed_reloc stringnoz["block-allocator=hashed_relocation"] 400 balloc_test4 stringnoz["block-allocator=test4"] 401 balloc_notest4 stringnoz["block-allocator=notest4"] 402 barrier_none stringnoz["barrier=none"] 403 barrier_flush stringnoz["barrier=flush"] 404 data_ordered stringnoz["data=ordered"] 405 data_journal stringnoz["data=journal"] 406 data_writeback stringnoz["data=writeback"] 407 errors_continue stringnoz["errors=continue"] 408 errors_ro_remount stringnoz["errors=ro-remount"] 409 ] [varlen] 410 411 hfs_options [ 412 quiet stringnoz["quiet"] 413 umask fs_opt_oct["umask", int32] 414 file_umask fs_opt_oct["file_umask", int32] 415 dir_umask fs_opt_oct["dir_umask", int32] 416 uid fs_opt_hex["uid", uid] 417 gid fs_opt_hex["gid", gid] 418 part fs_opt_hex["part", int32] 419 session fs_opt_hex["session", int32] 420 type fs_opt["type", array[int8, 4]] 421 creator fs_opt["creator", array[int8, 4]] 422 codepage fs_opt_codepage["codepage"] 423 iocharset fs_opt_codepage["iocharset"] 424 ] [varlen] 425 426 hfsplus_options [ 427 decompose stringnoz["decompose"] 428 nodecompose stringnoz["nodecompose"] 429 barrier stringnoz["barrier"] 430 nobarrier stringnoz["nobarrier"] 431 force stringnoz["force"] 432 umask fs_opt_oct["umask", int32] 433 type fs_opt["type", array[int8, 4]] 434 creator fs_opt["creator", array[int8, 4]] 435 uid fs_opt_hex["uid", uid] 436 gid fs_opt_hex["gid", gid] 437 part fs_opt_hex["part", int32] 438 session fs_opt_hex["session", int32] 439 nls fs_opt_codepage["nls"] 440 ] [varlen] 441 442 iso9660_options [ 443 norock stringnoz["norock"] 444 nojoliet stringnoz["nojoliet"] 445 unhide stringnoz["unhide"] 446 hide stringnoz["hide"] 447 cruft stringnoz["cruft"] 448 utf8 stringnoz["utf8"] 449 map_acorn stringnoz["map=acorn"] 450 map_normal stringnoz["map=normal"] 451 map_off stringnoz["map=off"] 452 check_relaxed stringnoz["check=relaxed"] 453 check_strict stringnoz["check=strict"] 454 overriderock stringnoz["overriderockperm"] 455 nocompress stringnoz["nocompress"] 456 session fs_opt_hex["session", int32[0:98]] 457 sbsector fs_opt_hex["sbsector", int32] 458 uid fs_opt_hex["uid", uid] 459 gid fs_opt_hex["gid", gid] 460 mode fs_opt_hex["mode", int32] 461 dmode fs_opt_hex["dmode", int32] 462 block fs_opt_hex["block", flags[iso9660_blocks]] 463 iocharset fs_opt_codepage["iocharset"] 464 ] [varlen] 465 466 iso9660_blocks = 512, 1024, 2048 467 468 gfs2_options [ 469 spectator stringnoz["spectator"] 470 norecovery stringnoz["norecovery"] 471 ignore_local_fs stringnoz["ignore_local_fs"] 472 localflocks stringnoz["localflocks"] 473 localcaching stringnoz["localcaching"] 474 upgrade stringnoz["upgrade"] 475 acl stringnoz["acl"] 476 noacl stringnoz["noacl"] 477 quota_off stringnoz["quota=off"] 478 quota_account stringnoz["quota=account"] 479 quota_on stringnoz["quota=on"] 480 quota stringnoz["quota"] 481 noquota stringnoz["noquota"] 482 suiddir stringnoz["suiddir"] 483 nosuiddir stringnoz["nosuiddir"] 484 data_writeback stringnoz["data=writeback"] 485 data_ordered stringnoz["data=ordered"] 486 meta stringnoz["meta"] 487 discard stringnoz["discard"] 488 nodiscard stringnoz["nodiscard"] 489 errors_withdraw stringnoz["errors=withdraw"] 490 barrier stringnoz["barrier"] 491 nobarrier stringnoz["nobarrier"] 492 rgrplvb stringnoz["rgrplvb"] 493 norgrplvb stringnoz["norgrplvb"] 494 loccookie stringnoz["loccookie"] 495 noloccookie stringnoz["noloccookie"] 496 commit fs_opt_hex["commit", int32] 497 statfs_quantum fs_opt_hex["statfs_quantum", int32] 498 statfs_percent fs_opt_hex["statfs_percent", int32] 499 quota_quantum fs_opt_hex["quota_quantum", int32] 500 lockproto_dlm stringnoz["lockproto=dlm"] 501 lockproto_nolock stringnoz["lockproto=lock_nolock"] 502 locktable fs_opt_str["locktable"] 503 hostdata fs_opt_str["hostdata"] 504 ] [varlen] 505 506 jfs_options [ 507 integrity stringnoz["integrity"] 508 nointegrity stringnoz["nointegrity"] 509 resize stringnoz["resize"] 510 noquota stringnoz["noquota"] 511 quota stringnoz["quota"] 512 usrquota stringnoz["usrquota"] 513 grpquota stringnoz["grpquota"] 514 discard stringnoz["discard"] 515 nodiscard stringnoz["nodiscard"] 516 iocharset fs_opt_codepage["iocharset"] 517 errors_continue stringnoz["errors=continue"] 518 errors_remount stringnoz["errors=remount-ro"] 519 resize_size fs_opt_hex["resize", int32] 520 uid fs_opt_hex["uid", uid] 521 gid fs_opt_hex["gid", gid] 522 umask fs_opt_hex["umask", int32] 523 discard_size fs_opt_hex["discard", int32] 524 ] [varlen] 525 526 btrfs_options [ 527 degraded stringnoz["degraded"] 528 nodatasum stringnoz["nodatasum"] 529 datasum stringnoz["datasum"] 530 nodatacow stringnoz["nodatacow"] 531 datacow stringnoz["datacow"] 532 nobarrier stringnoz["nobarrier"] 533 barrier stringnoz["barrier"] 534 compress stringnoz["compress"] 535 compress_force stringnoz["compress-force"] 536 ssd stringnoz["ssd"] 537 ssd_spread stringnoz["ssd_spread"] 538 nossd_spread stringnoz["nossd_spread"] 539 nossd stringnoz["nossd"] 540 acl stringnoz["acl"] 541 noacl stringnoz["noacl"] 542 notreelog stringnoz["notreelog"] 543 treelog stringnoz["treelog"] 544 flushoncommit stringnoz["flushoncommit"] 545 noflushoncommit stringnoz["noflushoncommit"] 546 discard stringnoz["discard"] 547 nodiscard stringnoz["nodiscard"] 548 space_cache stringnoz["space_cache"] 549 clear_cache stringnoz["clear_cache"] 550 user_subvol_rm stringnoz["user_subvol_rm_allowed"] 551 enospc_debug stringnoz["enospc_debug"] 552 noenospc_debug stringnoz["noenospc_debug"] 553 autodefrag stringnoz["autodefrag"] 554 noautodefrag stringnoz["noautodefrag"] 555 inode_cache stringnoz["inode_cache"] 556 noinode_cache stringnoz["noinode_cache"] 557 nospace_cache stringnoz["nospace_cache"] 558 usebackuproot stringnoz["usebackuproot"] 559 skip_balance stringnoz["skip_balance"] 560 check_int stringnoz["check_int"] 561 check_int_data stringnoz["check_int_data"] 562 rescan_uuid_tree stringnoz["rescan_uuid_tree"] 563 fragment_data stringnoz["fragment=data"] 564 fragment_metadata stringnoz["fragment=metadata"] 565 fragment_all stringnoz["fragment=all"] 566 ref_verify stringnoz["ref_verify"] 567 metadata_ratio fs_opt_hex["metadata_ratio", int32] 568 check_int_print_mask fs_opt_hex["check_int_print_mask", int32] 569 commit fs_opt_hex["commit", int32] 570 thread_pool fs_opt_hex["thread_pool", int32] 571 device fs_opt_filename["device"] 572 subvolid fs_opt_hex["subvolid", int64] 573 subvol fs_opt_str["subvol"] 574 max_inline fs_opt_dec_suffix["max_inline"] 575 compress_algo fs_opt["compress", stringnoz[btrfs_compress_algos]] 576 compress_force_algo fs_opt["compress-force", stringnoz[btrfs_compress_algos]] 577 space_cache_v1 stringnoz["space_cache=v1"] 578 space_cache_v2 stringnoz["space_cache=v2"] 579 ] [varlen] 580 581 btrfs_compress_algos = "zlib", "lzo", "zstd", "no" 582 583 ntfs_options [ 584 uid fs_opt_hex["uid", uid] 585 gid fs_opt_hex["gid", gid] 586 umask fs_opt_oct["umask", int32] 587 fmask fs_opt_oct["fmask", int32] 588 dmask fs_opt_oct["dmask", int32] 589 mft_zone_multiplier fs_opt_hex["mft_zone_multiplier", int32[-1:4]] 590 show_sys_files_no stringnoz["show_sys_files=no"] 591 show_sys_files_yes stringnoz["show_sys_files=yes"] 592 case_sensitive_no stringnoz["case_sensitive=no"] 593 case_sensitive_yes stringnoz["case_sensitive=yes"] 594 disable_sparse_no stringnoz["disable_sparse=no"] 595 disable_sparse_yes stringnoz["disable_sparse=yes"] 596 errors_remount stringnoz["errors=remount-ro"] 597 errors_continue stringnoz["errors=continue"] 598 errors_recover stringnoz["errors=recover"] 599 nls fs_opt_codepage["nls"] 600 utf8 stringnoz["utf8"] 601 ] [varlen] 602 603 ntfs3_options [ 604 uid fs_opt_hex["uid", uid] 605 gid fs_opt_hex["gid", gid] 606 umask fs_opt_oct["umask", int32] 607 fmask fs_opt_oct["fmask", int32] 608 dmask fs_opt_oct["dmask", int32] 609 noacsrules stringnoz["noacsrules"] 610 nohidden stringnoz["nohidden"] 611 sys_immutable stringnoz["sys_immutable"] 612 discard stringnoz["discard"] 613 force stringnoz["force"] 614 sparse stringnoz["sparse"] 615 showmeta stringnoz["showmeta"] 616 prealloc stringnoz["prealloc"] 617 acl stringnoz["acl"] 618 iocharset fs_opt_codepage["iocharset"] 619 ] [varlen] 620 621 ext4_options [ 622 bsddf stringnoz["bsddf"] 623 minixdf stringnoz["minixdf"] 624 grpid stringnoz["grpid"] 625 bsdgroups stringnoz["bsdgroups"] 626 nogrpid stringnoz["nogrpid"] 627 sysvgroups stringnoz["sysvgroups"] 628 errors_continue stringnoz["errors=continue"] 629 errors_remount stringnoz["errors=remount-ro"] 630 nouid32 stringnoz["nouid32"] 631 debug stringnoz["debug"] 632 oldalloc stringnoz["oldalloc"] 633 orlov stringnoz["orlov"] 634 user_xattr stringnoz["user_xattr"] 635 nouser_xattr stringnoz["nouser_xattr"] 636 acl stringnoz["acl"] 637 noacl stringnoz["noacl"] 638 norecovery stringnoz["norecovery"] 639 noload stringnoz["noload"] 640 nobh stringnoz["nobh"] 641 bh stringnoz["bh"] 642 journal_checksum stringnoz["journal_checksum"] 643 nojournal_checksum stringnoz["nojournal_checksum"] 644 journal_async_commit stringnoz["journal_async_commit"] 645 abort stringnoz["abort"] 646 data_journal stringnoz["data=journal"] 647 data_ordered stringnoz["data=ordered"] 648 data_writeback stringnoz["data=writeback"] 649 data_err_abort stringnoz["data_err=abort"] 650 data_err_ignore stringnoz["data_err=ignore"] 651 usrjquota stringnoz["usrjquota="] 652 grpjquota stringnoz["grpjquota="] 653 jqfmt_vfsold stringnoz["jqfmt=vfsold"] 654 jqfmt_vfsv0 stringnoz["jqfmt=vfsv0"] 655 jqfmt_vfsv1 stringnoz["jqfmt=vfsv1"] 656 grpquota stringnoz["grpquota"] 657 noquota stringnoz["noquota"] 658 quota stringnoz["quota"] 659 usrquota stringnoz["usrquota"] 660 prjquota stringnoz["prjquota"] 661 barrier stringnoz["barrier"] 662 nobarrier stringnoz["nobarrier"] 663 i_version stringnoz["i_version"] 664 dax stringnoz["dax"] 665 delalloc stringnoz["delalloc"] 666 lazytime stringnoz["lazytime"] 667 nolazytime stringnoz["nolazytime"] 668 nodelalloc stringnoz["nodelalloc"] 669 mblk_io_submit stringnoz["mblk_io_submit"] 670 nomblk_io_submit stringnoz["nomblk_io_submit"] 671 block_validity stringnoz["block_validity"] 672 noblock_validity stringnoz["noblock_validity"] 673 auto_da_alloc stringnoz["auto_da_alloc"] 674 noauto_da_alloc stringnoz["noauto_da_alloc"] 675 dioread_nolock stringnoz["dioread_nolock"] 676 dioread_lock stringnoz["dioread_lock"] 677 discard stringnoz["discard"] 678 nodiscard stringnoz["nodiscard"] 679 init_itable stringnoz["init_itable"] 680 noinit_itable stringnoz["noinit_itable"] 681 test_dummy_encryption stringnoz["test_dummy_encryption"] 682 nombcache stringnoz["nombcache"] 683 resgid fs_opt_hex["resgid", gid] 684 resuid fs_opt_hex["resuid", uid] 685 sb fs_opt_hex["sb", int32] 686 commit fs_opt_hex["commit", int32] 687 min_batch_time fs_opt_hex["min_batch_time", int32] 688 max_batch_time fs_opt_hex["max_batch_time", int32] 689 journal_dev fs_opt_hex["journal_dev", int32] 690 barrier_val fs_opt_hex["barrier", int32] 691 stripe fs_opt_hex["stripe", int32] 692 debug_want_extra_isize fs_opt_hex["debug_want_extra_isize", int32] 693 inode_readahead_blks fs_opt_hex["inode_readahead_blks", flags[ext4_inode_readahead_blks]] 694 journal_ioprio fs_opt_hex["journal_ioprio", int32[0:7]] 695 auto_da_alloc_val fs_opt_hex["auto_da_alloc", int32] 696 init_itable_val fs_opt_hex["init_itable", int32] 697 max_dir_size_kb fs_opt_hex["max_dir_size_kb", int32] 698 journal_path fs_opt_filename["journal_path"] 699 grpjquota_path fs_opt_filename["grpjquota"] 700 usrjquota_path fs_opt_filename["usrjquota"] 701 ] [varlen] 702 703 ext4_types = "ext4", "ext3", "ext2" 704 ext4_inode_readahead_blks = 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 0x1000, 0x2000, 0x4000, 0x8000, 0x10000, 0x20000, 0x40000, 0x80000, 0x100000, 0x200000, 0x400000, 0x800000, 0x1000000, 0x2000000, 0x4000000, 0x8000000 705 706 f2fs_options [ 707 background_gc_sync stringnoz["background_gc=sync"] 708 background_gc_off stringnoz["background_gc=off"] 709 background_gc_on stringnoz["background_gc=on"] 710 disable_roll_forward stringnoz["disable_roll_forward"] 711 norecovery stringnoz["norecovery"] 712 discard stringnoz["discard"] 713 nodiscard stringnoz["nodiscard"] 714 noheap stringnoz["noheap"] 715 heap stringnoz["heap"] 716 user_xattr stringnoz["user_xattr"] 717 nouser_xattr stringnoz["nouser_xattr"] 718 acl stringnoz["acl"] 719 noacl stringnoz["noacl"] 720 six_active_logs stringnoz["active_logs=6"] 721 four_active_logs stringnoz["active_logs=4"] 722 two_active_logs stringnoz["active_logs=2"] 723 disable_ext_identify stringnoz["disable_ext_identify"] 724 inline_xattr stringnoz["inline_xattr"] 725 noinline_xattr stringnoz["noinline_xattr"] 726 inline_xattr_size fs_opt_hex["inline_xattr_size", int32] 727 inline_data stringnoz["inline_data"] 728 noinline_data stringnoz["noinline_data"] 729 inline_dentry stringnoz["inline_dentry"] 730 noinline_dentry stringnoz["noinline_dentry"] 731 flush_merge stringnoz["flush_merge"] 732 noflush_merge stringnoz["noflush_merge"] 733 nobarrier stringnoz["nobarrier"] 734 fastboot stringnoz["fastboot"] 735 extent_cache stringnoz["extent_cache"] 736 noextent_cache stringnoz["noextent_cache"] 737 data_flush stringnoz["data_flush"] 738 adaptive_mode stringnoz["mode=adaptive"] 739 lfs_mode stringnoz["mode=lfs"] 740 resgid fs_opt_hex["resgid", gid] 741 resuid fs_opt_hex["resuid", uid] 742 lazytime stringnoz["lazytime"] 743 nolazytime stringnoz["nolazytime"] 744 quota stringnoz["quota"] 745 noquota stringnoz["noquota"] 746 usrquota fs_opt_str["usrquota"] 747 grpquota fs_opt_str["grpquota"] 748 prjquota fs_opt_str["prjquota"] 749 usrjquota fs_opt_str["usrjquota"] 750 grpjquota fs_opt_str["grpjquota"] 751 prjjquota fs_opt_str["prjjquota"] 752 jqfmt_vfsold stringnoz["jqfmt=vfsold"] 753 jqfmt_vfsv0 stringnoz["jqfmt=vfsv0"] 754 jqfmt_vfsv1 stringnoz["jqfmt=vfsv1"] 755 whint_mode_user stringnoz["whint_mode=user-based"] 756 whint_mode_off stringnoz["whint_mode=off"] 757 whint_mode_fs stringnoz["whint_mode=fs-based"] 758 alloc_mode_def stringnoz["alloc_mode=default"] 759 alloc_mode_reuse stringnoz["alloc_mode=reuse"] 760 fsync_mode_posix stringnoz["fsync_mode=posix"] 761 fsync_mode_strict stringnoz["fsync_mode=strict"] 762 test_dummy_encryption stringnoz["test_dummy_encryption"] 763 errors_continue stringnoz["errors=continue"] 764 errors_remount stringnoz["errors=remount-ro"] 765 ] [varlen] 766 767 bpf_options [ 768 mode fs_opt_oct["mode", int32] 769 ] [varlen] 770 771 overlay_options [ 772 lowerdir fs_opt_filename["lowerdir"] 773 upperdir fs_opt_filename["upperdir"] 774 workdir fs_opt_filename["workdir"] 775 redirect_dir fs_opt_filename["redirect_dir"] 776 default_permissions stringnoz["default_permissions"] 777 index_on stringnoz["index=on"] 778 index_off stringnoz["index=off"] 779 nfs_export_on stringnoz["nfs_export=on"] 780 nfs_export_off stringnoz["nfs_export=off"] 781 xino_on stringnoz["xino=on"] 782 xino_off stringnoz["xino=off"] 783 xino_auto stringnoz["xino=auto"] 784 metacopy_on stringnoz["metacopy=on"] 785 metacopy_off stringnoz["metacopy=off"] 786 ] [varlen] 787 788 binder_options [ 789 max fs_opt_dec["max", int32[0:4]] 790 stats stringnoz["stats=global"] 791 ] [varlen] 792 793 erofs_options [ 794 user_xattr stringnoz["user_xattr"] 795 nouser_xattr stringnoz["nouser_xattr"] 796 acl stringnoz["acl"] 797 noacl stringnoz["noacl"] 798 fault_injection fs_opt_hex["fault_injection", int32] 799 ] [varlen] 800 801 exfat_options [ 802 uid fs_opt_hex["uid", uid] 803 gid fs_opt_hex["gid", gid] 804 umask fs_opt_oct["umask", int32] 805 dmask fs_opt_oct["dmask", int32] 806 fmask fs_opt_oct["fmask", int32] 807 allow_utime fs_opt_oct["allow_utime", int32] 808 codepage fs_opt_codepage["codepage"] 809 iocharset fs_opt_codepage["iocharset"] 810 namecase stringnoz["namecase=1"] 811 errors_remount stringnoz["errors=remount-ro"] 812 errors_continue stringnoz["errors=continue"] 813 utf8 stringnoz["utf8"] 814 discard stringnoz["discard"] 815 ] [varlen] 816 817 # TODO: afs should be configured via /proc/fs/afs/{cells,servers} (see fs/afs/proc.c). 818 # Without that mounting of afs will fail. 819 afs_source [ 820 none string["none"] 821 cell afs_cell_source 822 ] [varlen] 823 824 afs_cell_source { 825 prefix flags[afs_cell_prefix, int8] 826 cell stringnoz[afs_cells] 827 volname stringnoz[afs_volnames] 828 suffix stringnoz[afs_suffixes] 829 z const[0, int8] 830 } [packed] 831 832 afs_cell_prefix = '%', '#' 833 afs_cells = "", "syz0:", "syz1:" 834 afs_volnames = "syz0", "syz1" 835 afs_suffixes = "", ".readonly", ".backup" 836 837 afs_options [ 838 autocell stringnoz["autocell"] 839 dyn stringnoz["dyn"] 840 flock_local stringnoz["flock=local"] 841 flock_openafs stringnoz["flock=openafs"] 842 flock_strict stringnoz["flock=strict"] 843 flock_write stringnoz["flock=write"] 844 ] [varlen] 845 846 tmpfs_options [ 847 uid fs_opt_hex["uid", uid] 848 gid fs_opt_hex["gid", gid] 849 mode fs_opt_oct["mode", int32] 850 nr_blocks fs_opt_dec_suffix["nr_blocks"] 851 nr_inodes fs_opt_dec_suffix["nr_inodes"] 852 size fs_opt_dec_suffix["size"] 853 huge_never stringnoz["huge=never"] 854 huge_always stringnoz["huge=always"] 855 huge_within_size stringnoz["huge=within_size"] 856 huge_advise stringnoz["huge=advise"] 857 mpol fs_opt["mpol", tmpfs_mpol] 858 ] [varlen] 859 860 tmpfs_mpol { 861 policy stringnoz[tmpfs_mpol_policy] 862 flags stringnoz[tmpfs_mpol_flags] 863 nodes optional[tmpfs_mpol_nodes] 864 } [packed] 865 866 tmpfs_mpol_nodes { 867 colon const[':', int8] 868 nodes array[flags[tmpfs_mpol_node_chars, int8]] 869 } 870 871 tmpfs_mpol_policy = "default", "prefer", "bind", "interleave", "local" 872 tmpfs_mpol_flags = "", "=static", "=relative" 873 tmpfs_mpol_node_chars = '-', ':', '/', ',', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 874 875 zonefs_options [ 876 errors_zone_ro stringnoz["errors=zone-ro"] 877 errors_zone_offline stringnoz["errors=zone-offline"] 878 errors_repair stringnoz["errors=repair"] 879 explicit_open stringnoz["explicit-open"] 880 ] [varlen] 881 882 jffs2_options [ 883 compr_none stringnoz["compr=none"] 884 compr_lzo stringnoz["compr=lzo"] 885 compr_zlib stringnoz["compr=zlib"] 886 rp_size fs_opt_dec["rp_size", int32] 887 ] [varlen] 888 889 nilfs2_options [ 890 barrier stringnoz["barrier"] 891 nobarrier stringnoz["nobarrier"] 892 norecovery stringnoz["norecovery"] 893 discard stringnoz["discard"] 894 nodiscard stringnoz["nodiscard"] 895 snapshot fs_opt_hex["snapshot", int32[0:3]] 896 order_relaxed stringnoz["order=relaxed"] 897 order_strict stringnoz["order=strict"] 898 ] [varlen] 899 900 ubifs_options [ 901 fast_unmount stringnoz["fast_unmount"] 902 norm_unmount stringnoz["norm_unmount"] 903 bulk_read stringnoz["bulk_read"] 904 no_bulk_read stringnoz["no_bulk_read"] 905 chk_data_crc stringnoz["chk_data_crc"] 906 no_chk_data_crc stringnoz["no_chk_data_crc"] 907 compr_none stringnoz["compr=none"] 908 compr_lzo stringnoz["compr=lzo"] 909 compr_zlib stringnoz["compr=zlib"] 910 compr_zstd stringnoz["compr=zstd"] 911 auth_key fs_opt_str["auth_key"] 912 auth_hash_name fs_opt["auth_hash_name", stringnoz[ubifs_auth_hash_name]] 913 ] [varlen] 914 915 # We could use more hash names, but the problem is that alg_hash_name is 0-terminated. 916 ubifs_auth_hash_name = "crc32", "ghash", "md5", "sha1" 917 918 udf_options [ 919 novrs stringnoz["novrs"] 920 nostrict stringnoz["nostrict"] 921 unhide stringnoz["unhide"] 922 undelete stringnoz["undelete"] 923 noadinicb stringnoz["noadinicb"] 924 adinicb stringnoz["adinicb"] 925 shortad stringnoz["shortad"] 926 longad stringnoz["longad"] 927 utf8 stringnoz["utf8"] 928 iocharset fs_opt_codepage["iocharset"] 929 uid_forget stringnoz["uid=forget"] 930 uid_ignore stringnoz["uid=ignore"] 931 gid_forget stringnoz["gid=forget"] 932 gid_ignore stringnoz["gid=ignore"] 933 gid fs_opt_dec["gid", gid] 934 uid fs_opt_dec["uid", uid] 935 umask fs_opt_oct["umask", int32] 936 mode fs_opt_oct["mode", int32] 937 dmode fs_opt_oct["dmode", int32] 938 bs fs_opt_dec["bs", int32] 939 session fs_opt_dec["session", int32] 940 lastblock fs_opt_dec["lastblock", int32] 941 anchor fs_opt_dec["anchor", int32] 942 volume fs_opt_dec["volume", int32] 943 partition fs_opt_dec["partition", int32] 944 fileset fs_opt_dec["fileset", int32] 945 rootdir fs_opt_dec["rootdir", int32] 946 ] [varlen] 947 948 esdfs_options [ 949 lower fs_opt_str["lower"] 950 upper fs_opt_str["upper"] 951 derive fs_opt["derive", stringnoz[esdfs_derive]] 952 confine stringnoz["confine"] 953 noconfine stringnoz["noconfine"] 954 derive_gid stringnoz["derive_gid"] 955 default_normal stringnoz["default_normal"] 956 dl_loc fs_opt_str["dl_loc"] 957 dl_uid fs_opt_oct["dl_uid", uid] 958 dl_gid fs_opt_oct["dl_gid", gid] 959 ns_fd fs_opt_oct["ns_fd", fd_namespace] 960 fsuid fs_opt_oct["fsuid", uid] 961 fsgid fs_opt_oct["fsgid", gid] 962 gid fs_opt_oct["gid", gid] 963 mask fs_opt_oct["mask", int32] 964 userid fs_opt_oct["userid", uid] 965 multiuser stringnoz["multiuser"] 966 ] [varlen] 967 968 esdfs_derive = "none", "legacy", "unified", "multi", "public" 969 970 bcachefs_options [ 971 metadata_checksum fs_opt["metadata_checksum", stringnoz[bcachefs_checksum]] 972 data_checksum fs_opt["data_checksum", stringnoz[bcachefs_checksum]] 973 compression fs_opt["compression", stringnoz[bcachefs_compression]] 974 background_compression fs_opt["background_compression", stringnoz[bcachefs_compression]] 975 str_hash fs_opt["str_hash", stringnoz[bcachefs_str_hash]] 976 nocow stringnoz["nocow"] 977 ] [varlen] 978 979 bcachefs_checksum = "none", "crc32c", "crc64", "xxhash" 980 bcachefs_compression = "none", "lz4", "gzip", "zstd" 981 bcachefs_str_hash = "crc32c", "crc64", "siphash" 982 983 cgroup_options [ 984 all stringnoz["all"] 985 clone_children stringnoz["clone_children"] 986 cpuset_v2_mode stringnoz["cpuset_v2_mode"] 987 name fs_opt_str["name"] 988 none stringnoz["none"] 989 noprefix stringnoz["noprefix"] 990 release_agent fs_opt_filename["release_agent"] 991 xattr stringnoz["xattr"] 992 subsystem stringnoz[cgroup_subsystems] 993 ] [varlen] 994 995 cgroup2_options [ 996 nsdelegate stringnoz["nsdelegate"] 997 memory_localevents stringnoz["memory_localevents"] 998 memory_recursiveprot stringnoz["memory_recursiveprot"] 999 subsystem stringnoz[cgroup_subsystems] 1000 ] [varlen] 1001 1002 codepage_nums = "1250", "1251", "1255", "437", "737", "775", "850", "852", "855", "857", "860", "861", "862", "863", "864", "865", "866", "869", "874", "932", "936", "949", "950" 1003 codepages_names = "macceltic", "maccenteuro", "maccroatian", "maccyrillic", "macgaelic", "macgreek", "maciceland", "macinuit", "macroman", "macromanian", "macturkish", "ascii", "default", "cp1250", "cp1251", "cp1255", "cp437", "cp737", "cp775", "cp850", "cp852", "cp855", "cp857", "cp860", "cp861", "cp862", "cp863", "cp864", "cp865", "cp866", "cp869", "cp874", "cp932", "cp936", "cp949", "cp950", "euc-jp", "iso8859-13", "iso8859-14", "iso8859-15", "iso8859-1", "iso8859-2", "iso8859-3", "iso8859-4", "iso8859-5", "iso8859-6", "iso8859-7", "iso8859-9", "koi8-r", "koi8-ru", "koi8-u", "utf8", "none" 1004 mount_flags = MS_BIND, MS_DIRSYNC, MS_MANDLOCK, MS_MOVE, MS_NOATIME, MS_NODEV, MS_NODIRATIME, MS_NOEXEC, MS_NOSUID, MS_RDONLY, MS_RELATIME, MS_REMOUNT, MS_SILENT, MS_STRICTATIME, MS_SYNCHRONOUS, MS_REC, MS_POSIXACL, MS_UNBINDABLE, MS_PRIVATE, MS_SLAVE, MS_SHARED, MS_I_VERSION, MS_LAZYTIME 1005 umount_flags = MNT_FORCE, MNT_DETACH, MNT_EXPIRE, UMOUNT_NOFOLLOW