Home | History | Annotate | Download | only in linux
      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 <linux/fs.h>
      5 
      6 mount(src ptr[in, filename], dst ptr[in, filename], type ptr[in, string[filesystem]], flags flags[mount_flags], data buffer[in, opt])
      7 umount2(path ptr[in, filename], flags flags[umount_flags])
      8 
      9 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]])
     10 
     11 filesystem = "sysfs", "rootfs", "ramfs", "tmpfs", "devtmpfs", "debugfs", "securityfs", "sockfs", "pipefs", "anon_inodefs", "devpts", "ext3", "ext2", "ext4", "hugetlbfs", "vfat", "ecryptfs", "fuseblk", "fuse", "rpc_pipefs", "nfs", "nfs4", "nfsd", "binfmt_misc", "autofs", "xfs", "jfs", "msdos", "ntfs", "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"
     12 
     13 syz_read_part_table(size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]])
     14 
     15 syz_mount_image$vfat(fs ptr[in, string["vfat"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[vfat_options]])
     16 
     17 syz_mount_image$msdos(fs ptr[in, string["msdos"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[msdos_options]])
     18 
     19 syz_mount_image$bfs(fs ptr[in, string["bfs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts const[0])
     20 
     21 syz_mount_image$xfs(fs ptr[in, string["xfs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[xfs_options]])
     22 
     23 syz_mount_image$minix(fs ptr[in, string["minix"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts const[0])
     24 
     25 syz_mount_image$reiserfs(fs ptr[in, string["reiserfs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[reiserfs_options]])
     26 
     27 syz_mount_image$hfs(fs ptr[in, string["hfs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[hfs_options]])
     28 
     29 syz_mount_image$hfsplus(fs ptr[in, string["hfsplus"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[hfsplus_options]])
     30 
     31 syz_mount_image$iso9660(fs ptr[in, string["iso9660"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[iso9660_options]])
     32 
     33 syz_mount_image$gfs2(fs ptr[in, string["gfs2"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[gfs2_options]])
     34 
     35 syz_mount_image$jfs(fs ptr[in, string["jfs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[jfs_options]])
     36 
     37 syz_mount_image$btrfs(fs ptr[in, string["btrfs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[btrfs_options]])
     38 
     39 syz_mount_image$ntfs(fs ptr[in, string["ntfs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[ntfs_options]])
     40 
     41 syz_mount_image$ext4(fs ptr[in, string[ext4_types]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[ext4_options]])
     42 
     43 ext4_types = "ext4", "ext3", "ext2"
     44 
     45 syz_mount_image$f2fs(fs ptr[in, string["f2fs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, fs_options[f2fs_options]])
     46 
     47 syz_mount_image$ocfs2(fs ptr[in, string["ocfs2"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, string])
     48 
     49 syz_mount_image$nfs(fs ptr[in, string["nfs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, string])
     50 
     51 syz_mount_image$nfs4(fs ptr[in, string["nfs4"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, string])
     52 
     53 syz_mount_image$cifs(fs ptr[in, string["cifs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, string])
     54 
     55 syz_mount_image$ceph(fs ptr[in, string["ceph"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, string])
     56 
     57 fs_image_segment {
     58 	data	ptr[in, array[int8]]
     59 	size	len[data, intptr]
     60 	offset	intptr
     61 }
     62 
     63 type fs_options[ELEMS] {
     64 	elems	array[fs_opt_elem[ELEMS]]
     65 	null	const[0, int8]
     66 } [packed]
     67 
     68 type fs_opt_elem[ELEMS] {
     69 	elem	ELEMS
     70 	comma	const[',', int8]
     71 } [packed]
     72 
     73 type fs_opt[NAME, TYPE] {
     74 	name	stringnoz[NAME]
     75 	eq	const['=', int8]
     76 	val	TYPE
     77 } [packed]
     78 
     79 type fs_opt_str[NAME] fs_opt[NAME, stringnoz]
     80 type fs_opt_dec[NAME, VAL] fs_opt[NAME, fmt[dec, VAL]]
     81 type fs_opt_hex[NAME, VAL] fs_opt[NAME, fmt[hex, VAL]]
     82 type fs_opt_oct[NAME, VAL] fs_opt[NAME, fmt[oct, VAL]]
     83 type fs_opt_dec_suffix[NAME] fs_opt[NAME, array[flags[fs_opt_digits_suffix, int8]]]
     84 type fs_opt_filename[NAME] fs_opt[NAME, stringnoz[filename]]
     85 type fs_opt_codepage[NAME] fs_opt[NAME, stringnoz[codepages_names]]
     86 type fs_opt_cp_num[NAME] fs_opt[NAME, stringnoz[codepage_nums]]
     87 
     88 fs_opt_digits_suffix = '-', 'x', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'k', 'm', 'g', 't', 'p', 'e'
     89 
     90 msdos_options [
     91 	fat	fat_options
     92 	nodots	stringnoz["nodots"]
     93 	dots	stringnoz["dots"]
     94 ] [varlen]
     95 
     96 vfat_options [
     97 	fat		fat_options
     98 	iocharset	fs_opt_codepage["iocharset"]
     99 	rodir		stringnoz["rodir"]
    100 	utf8no		stringnoz["utf8=0"]
    101 	utf8		stringnoz["utf8=1"]
    102 	uni_xlateno	stringnoz["uni_xlate=0"]
    103 	uni_xlate	stringnoz["uni_xlate=1"]
    104 	numtail		stringnoz["nonumtail=0"]
    105 	nonumtail	stringnoz["nnonumtail=1"]
    106 	shortname_lower	stringnoz["shortname=lower"]
    107 	shortname_win95	stringnoz["shortname=win95"]
    108 	shortname_winnt	stringnoz["shortname=winnt"]
    109 	shortname_mixed	stringnoz["shortname=mixed"]
    110 ] [varlen]
    111 
    112 fat_options [
    113 	check_relaxed	stringnoz["check=relaxed"]
    114 	check_strict	stringnoz["check=strict"]
    115 	check_normal	stringnoz["check=normal"]
    116 	usefree		stringnoz["usefree"]
    117 	nocase		stringnoz["nocase"]
    118 	quiet		stringnoz["quiet"]
    119 	showexec	stringnoz["showexec"]
    120 	debug		stringnoz["debug"]
    121 	sys_immutable	stringnoz["sys_immutable"]
    122 	flush		stringnoz["flush"]
    123 	tz_utc		stringnoz["tz=UTC"]
    124 	errors_continue	stringnoz["errors=continue"]
    125 	errors_remount	stringnoz["errors=remount-ro"]
    126 	discard		stringnoz["discard"]
    127 	nfs		stringnoz["nfs"]
    128 	nfs_nostale_ro	stringnoz["nfs=nostale_ro"]
    129 	dos1xfloppy	stringnoz["dos1xfloppy"]
    130 	uid		fs_opt_hex["uid", uid]
    131 	gid		fs_opt_hex["gid", gid]
    132 	umask		fs_opt_oct["umask", int32]
    133 	dmask		fs_opt_oct["dmask", int32]
    134 	fmask		fs_opt_oct["fmask", int32]
    135 	allow_utime	fs_opt_oct["allow_utime", int32]
    136 	time_offset	fs_opt_hex["time_offset", int32[-1440:1440]]
    137 	codepage	fs_opt_cp_num["codepage"]
    138 ] [varlen]
    139 
    140 xfs_options [
    141 	wsync		stringnoz["wsync"]
    142 	noalign		stringnoz["noalign"]
    143 	swalloc		stringnoz["swalloc"]
    144 	nouuid		stringnoz["nouuid"]
    145 	mtpt		stringnoz["mtpt"]
    146 	grpid		stringnoz["grpid"]
    147 	nogrpid		stringnoz["nogrpid"]
    148 	bsdgroups	stringnoz["bsdgroups"]
    149 	sysvgroups	stringnoz["sysvgroups"]
    150 	norecovery	stringnoz["norecovery"]
    151 	inode64		stringnoz["inode64"]
    152 	inode32		stringnoz["inode32"]
    153 	ikeep		stringnoz["ikeep"]
    154 	noikeep		stringnoz["noikeep"]
    155 	largeio		stringnoz["largeio"]
    156 	nolargeio	stringnoz["nolargeio"]
    157 	attr2		stringnoz["attr2"]
    158 	noattr2		stringnoz["noattr2"]
    159 	filestreams	stringnoz["filestreams"]
    160 	quota		stringnoz["quota"]
    161 	noquota		stringnoz["noquota"]
    162 	lazytime	stringnoz["lazytime"]
    163 	nolazytime	stringnoz["nolazytime"]
    164 	usrquota	stringnoz["usrquota"]
    165 	grpquota	stringnoz["grpquota"]
    166 	prjquota	stringnoz["prjquota"]
    167 	uquota		stringnoz["uquota"]
    168 	gquota		stringnoz["gquota"]
    169 	pquota		stringnoz["pquota"]
    170 	uqnoenforce	stringnoz["uqnoenforce"]
    171 	gqnoenforce	stringnoz["gqnoenforce"]
    172 	pqnoenforce	stringnoz["pqnoenforce"]
    173 	qnoenforce	stringnoz["qnoenforce"]
    174 	discard		stringnoz["discard"]
    175 	nodiscard	stringnoz["nodiscard"]
    176 	dax		stringnoz["dax"]
    177 	barrier		stringnoz["barrier"]
    178 	nobarrier	stringnoz["nobarrier"]
    179 	logbufs		fs_opt_dec["logbufs", int32[-1:8]]
    180 	biosize		fs_opt_dec["biosize", int32]
    181 	sunit		fs_opt_hex["sunit", int32]
    182 	swidth		fs_opt_hex["swidth", int32]
    183 	logbsize	fs_opt_dec_suffix["logbsize"]
    184 	allocsize	fs_opt_dec_suffix["allocsize"]
    185 	logdev		fs_opt_filename["logdev"]
    186 	rtdev		fs_opt_filename["rtdev"]
    187 ] [varlen]
    188 
    189 reiserfs_options [
    190 	tails_on		stringnoz["tails=on"]
    191 	tails_off		stringnoz["tails=off"]
    192 	tails_small		stringnoz["tails=small"]
    193 	notail			stringnoz["notail"]
    194 	conv			stringnoz["conv"]
    195 	noattrs			stringnoz["noattrs"]
    196 	expose_privroot		stringnoz["expose_privroot"]
    197 	user_xattr		stringnoz["user_xattr"]
    198 	nouser_xattr		stringnoz["nouser_xattr"]
    199 	acl			stringnoz["acl"]
    200 	noacl			stringnoz["noacl"]
    201 	replayonly		stringnoz["replayonly"]
    202 	nolargeio		stringnoz["nolargeio"]
    203 	usrquota		stringnoz["usrquota"]
    204 	grpquota		stringnoz["grpquota"]
    205 	noquota			stringnoz["noquota"]
    206 	usrjquota		stringnoz["usrjquota"]
    207 	usrjquota_file		stringnoz["usrjquota=syz"]
    208 	grpjquota		stringnoz["grpjquota"]
    209 	commit			fs_opt_hex["commit", int32]
    210 	resize			fs_opt_hex["resize", int32]
    211 	resize_auto		stringnoz["resize=auto"]
    212 	jdev			fs_opt_filename["jdev"]
    213 	jqfmt_vfsold		stringnoz["jqfmt=vfsold"]
    214 	jqfmt_vfsv0		stringnoz["jqfmt=vfsv0"]
    215 	hash_tea		stringnoz["hash=tea"]
    216 	hash_rupasov		stringnoz["hash=rupasov"]
    217 	hash_r5			stringnoz["hash=r5"]
    218 	balloc_noborder		stringnoz["block-allocator=noborder"]
    219 	balloc_border		stringnoz["block-allocator=border"]
    220 	balloc_no_unhash_reloc	stringnoz["block-allocator=no_unhashed_relocation"]
    221 	balloc_hashed_reloc	stringnoz["block-allocator=hashed_relocation"]
    222 	balloc_test4		stringnoz["block-allocator=test4"]
    223 	balloc_notest4		stringnoz["block-allocator=notest4"]
    224 	barrier_none		stringnoz["barrier=none"]
    225 	barrier_flush		stringnoz["barrier=flush"]
    226 	data_ordered		stringnoz["data=ordered"]
    227 	data_journal		stringnoz["data=journal"]
    228 	data_writeback		stringnoz["data=writeback"]
    229 	errors_continue		stringnoz["errors=continue"]
    230 	errors_ro_remount	stringnoz["errors=ro-remount"]
    231 ] [varlen]
    232 
    233 hfs_options [
    234 	quiet		stringnoz["quiet"]
    235 	umask		fs_opt_oct["umask", int32]
    236 	file_umask	fs_opt_oct["file_umask", int32]
    237 	dir_umask	fs_opt_oct["dir_umask", int32]
    238 	uid		fs_opt_hex["uid", uid]
    239 	gid		fs_opt_hex["gid", gid]
    240 	part		fs_opt_hex["part", int32]
    241 	session		fs_opt_hex["session", int32]
    242 	type		fs_opt["type", array[int8, 4]]
    243 	creator		fs_opt["creator", array[int8, 4]]
    244 	codepage	fs_opt_codepage["codepage"]
    245 	iocharset	fs_opt_codepage["iocharset"]
    246 ] [varlen]
    247 
    248 hfsplus_options [
    249 	decompose	stringnoz["decompose"]
    250 	nodecompose	stringnoz["nodecompose"]
    251 	barrier		stringnoz["barrier"]
    252 	nobarrier	stringnoz["nobarrier"]
    253 	force		stringnoz["force"]
    254 	umask		fs_opt_oct["umask", int32]
    255 	type		fs_opt["type", array[int8, 4]]
    256 	creator		fs_opt["creator", array[int8, 4]]
    257 	uid		fs_opt_hex["uid", uid]
    258 	gid		fs_opt_hex["gid", gid]
    259 	part		fs_opt_hex["part", int32]
    260 	session		fs_opt_hex["session", int32]
    261 	nls		fs_opt_codepage["nls"]
    262 ] [varlen]
    263 
    264 iso9660_options [
    265 	norock		stringnoz["norock"]
    266 	nojoliet	stringnoz["nojoliet"]
    267 	unhide		stringnoz["unhide"]
    268 	hide		stringnoz["hide"]
    269 	cruft		stringnoz["cruft"]
    270 	utf8		stringnoz["utf8"]
    271 	map_acorn	stringnoz["map=acorn"]
    272 	map_normal	stringnoz["map=normal"]
    273 	map_off		stringnoz["map=off"]
    274 	check_relaxed	stringnoz["check=relaxed"]
    275 	check_strict	stringnoz["check=strict"]
    276 	overriderock	stringnoz["overriderockperm"]
    277 	nocompress	stringnoz["nocompress"]
    278 	session		fs_opt_hex["session", int32[0:98]]
    279 	sbsector	fs_opt_hex["sbsector", int32]
    280 	uid		fs_opt_hex["uid", uid]
    281 	gid		fs_opt_hex["gid", gid]
    282 	mode		fs_opt_hex["mode", int32]
    283 	dmode		fs_opt_hex["dmode", int32]
    284 	block		fs_opt_hex["block", flags[iso9660_blocks]]
    285 	iocharset	fs_opt_codepage["iocharset"]
    286 ] [varlen]
    287 
    288 iso9660_blocks = 512, 1024, 2048
    289 
    290 gfs2_options [
    291 	spectator		stringnoz["spectator"]
    292 	norecovery		stringnoz["norecovery"]
    293 	ignore_local_fs		stringnoz["ignore_local_fs"]
    294 	localflocks		stringnoz["localflocks"]
    295 	localcaching		stringnoz["localcaching"]
    296 	upgrade			stringnoz["upgrade"]
    297 	acl			stringnoz["acl"]
    298 	noacl			stringnoz["noacl"]
    299 	quota_off		stringnoz["quota=off"]
    300 	quota_account		stringnoz["quota=account"]
    301 	quota_on		stringnoz["quota=on"]
    302 	quota			stringnoz["quota"]
    303 	noquota			stringnoz["noquota"]
    304 	suiddir			stringnoz["suiddir"]
    305 	nosuiddir		stringnoz["nosuiddir"]
    306 	data_writeback		stringnoz["data=writeback"]
    307 	data_ordered		stringnoz["data=ordered"]
    308 	meta			stringnoz["meta"]
    309 	discard			stringnoz["discard"]
    310 	nodiscard		stringnoz["nodiscard"]
    311 	errors_withdraw		stringnoz["errors=withdraw"]
    312 	barrier			stringnoz["barrier"]
    313 	nobarrier		stringnoz["nobarrier"]
    314 	rgrplvb			stringnoz["rgrplvb"]
    315 	norgrplvb		stringnoz["norgrplvb"]
    316 	loccookie		stringnoz["loccookie"]
    317 	noloccookie		stringnoz["noloccookie"]
    318 	commit			fs_opt_hex["commit", int32]
    319 	statfs_quantum		fs_opt_hex["statfs_quantum", int32]
    320 	statfs_percent		fs_opt_hex["statfs_percent", int32]
    321 	quota_quantum		fs_opt_hex["quota_quantum", int32]
    322 	lockproto_dlm		stringnoz["lockproto=dlm"]
    323 	lockproto_nolock	stringnoz["lockproto=lock_nolock"]
    324 	locktable		fs_opt_str["locktable"]
    325 	hostdata		fs_opt_str["hostdata"]
    326 ] [varlen]
    327 
    328 jfs_options [
    329 	integrity	stringnoz["integrity"]
    330 	nointegrity	stringnoz["nointegrity"]
    331 	resize		stringnoz["resize"]
    332 	noquota		stringnoz["noquota"]
    333 	quota		stringnoz["quota"]
    334 	usrquota	stringnoz["usrquota"]
    335 	grpquota	stringnoz["grpquota"]
    336 	discard		stringnoz["discard"]
    337 	nodiscard	stringnoz["nodiscard"]
    338 	iocharset	fs_opt_codepage["iocharset"]
    339 	errors_continue	stringnoz["errors=continue"]
    340 	errors_remount	stringnoz["errors=remount-ro"]
    341 	resize_size	fs_opt_hex["resize", int32]
    342 	uid		fs_opt_hex["uid", uid]
    343 	gid		fs_opt_hex["gid", gid]
    344 	umask		fs_opt_hex["umask", int32]
    345 	discard_size	fs_opt_hex["discard", int32]
    346 ] [varlen]
    347 
    348 btrfs_options [
    349 	degraded		stringnoz["degraded"]
    350 	nodatasum		stringnoz["nodatasum"]
    351 	datasum			stringnoz["datasum"]
    352 	nodatacow		stringnoz["nodatacow"]
    353 	datacow			stringnoz["datacow"]
    354 	nobarrier		stringnoz["nobarrier"]
    355 	barrier			stringnoz["barrier"]
    356 	compress		stringnoz["compress"]
    357 	compress_force		stringnoz["compress-force"]
    358 	ssd			stringnoz["ssd"]
    359 	ssd_spread		stringnoz["ssd_spread"]
    360 	nossd_spread		stringnoz["nossd_spread"]
    361 	nossd			stringnoz["nossd"]
    362 	acl			stringnoz["acl"]
    363 	noacl			stringnoz["noacl"]
    364 	notreelog		stringnoz["notreelog"]
    365 	treelog			stringnoz["treelog"]
    366 	flushoncommit		stringnoz["flushoncommit"]
    367 	noflushoncommit		stringnoz["noflushoncommit"]
    368 	discard			stringnoz["discard"]
    369 	nodiscard		stringnoz["nodiscard"]
    370 	space_cache		stringnoz["space_cache"]
    371 	clear_cache		stringnoz["clear_cache"]
    372 	user_subvol_rm		stringnoz["user_subvol_rm_allowed"]
    373 	enospc_debug		stringnoz["enospc_debug"]
    374 	noenospc_debug		stringnoz["noenospc_debug"]
    375 	autodefrag		stringnoz["autodefrag"]
    376 	noautodefrag		stringnoz["noautodefrag"]
    377 	inode_cache		stringnoz["inode_cache"]
    378 	noinode_cache		stringnoz["noinode_cache"]
    379 	nospace_cache		stringnoz["nospace_cache"]
    380 	usebackuproot		stringnoz["usebackuproot"]
    381 	skip_balance		stringnoz["skip_balance"]
    382 	check_int		stringnoz["check_int"]
    383 	check_int_data		stringnoz["check_int_data"]
    384 	rescan_uuid_tree	stringnoz["rescan_uuid_tree"]
    385 	fragment_data		stringnoz["fragment=data"]
    386 	fragment_metadata	stringnoz["fragment=metadata"]
    387 	fragment_all		stringnoz["fragment=all"]
    388 	ref_verify		stringnoz["ref_verify"]
    389 	metadata_ratio		fs_opt_hex["metadata_ratio", int32]
    390 	check_int_print_mask	fs_opt_hex["check_int_print_mask", int32]
    391 	commit			fs_opt_hex["commit", int32]
    392 	thread_pool		fs_opt_hex["thread_pool", int32]
    393 	device			fs_opt_filename["device"]
    394 	subvolid		fs_opt_hex["subvolid", int64]
    395 	subvol			fs_opt_str["subvol"]
    396 	max_inline		fs_opt_dec_suffix["max_inline"]
    397 	compress_algo		fs_opt["compress", stringnoz[btrfs_compress_algos]]
    398 	compress_force_algo	fs_opt["compress-force", stringnoz[btrfs_compress_algos]]
    399 	space_cache_v1		stringnoz["space_cache=v1"]
    400 	space_cache_v2		stringnoz["space_cache=v2"]
    401 ] [varlen]
    402 
    403 btrfs_compress_algos = "zlib", "lzo", "zstd", "no"
    404 
    405 ntfs_options [
    406 	uid			fs_opt_hex["uid", uid]
    407 	gid			fs_opt_hex["gid", gid]
    408 	umask			fs_opt_oct["umask", int32]
    409 	fmask			fs_opt_oct["fmask", int32]
    410 	dmask			fs_opt_oct["dmask", int32]
    411 	mft_zone_multiplier	fs_opt_hex["mft_zone_multiplier", int32[-1:4]]
    412 	show_sys_files_no	stringnoz["show_sys_files=no"]
    413 	show_sys_files_yes	stringnoz["show_sys_files=yes"]
    414 	case_sensitive_no	stringnoz["case_sensitive=no"]
    415 	case_sensitive_yes	stringnoz["case_sensitive=yes"]
    416 	disable_sparse_no	stringnoz["disable_sparse=no"]
    417 	disable_sparse_yes	stringnoz["disable_sparse=yes"]
    418 	errors_remount		stringnoz["errors=remount-ro"]
    419 	errors_continue		stringnoz["errors=continue"]
    420 	errors_recover		stringnoz["errors=recover"]
    421 	nls			fs_opt_codepage["nls"]
    422 	utf8			stringnoz["utf8"]
    423 ] [varlen]
    424 
    425 ext4_options [
    426 	bsddf			stringnoz["bsddf"]
    427 	minixdf			stringnoz["minixdf"]
    428 	grpid			stringnoz["grpid"]
    429 	bsdgroups		stringnoz["bsdgroups"]
    430 	nogrpid			stringnoz["nogrpid"]
    431 	sysvgroups		stringnoz["sysvgroups"]
    432 	errors_continue		stringnoz["errors=continue"]
    433 	errors_remount		stringnoz["errors=remount-ro"]
    434 	nouid32			stringnoz["nouid32"]
    435 	debug			stringnoz["debug"]
    436 	oldalloc		stringnoz["oldalloc"]
    437 	orlov			stringnoz["orlov"]
    438 	user_xattr		stringnoz["user_xattr"]
    439 	nouser_xattr		stringnoz["nouser_xattr"]
    440 	acl			stringnoz["acl"]
    441 	noacl			stringnoz["noacl"]
    442 	norecovery		stringnoz["norecovery"]
    443 	noload			stringnoz["noload"]
    444 	nobh			stringnoz["nobh"]
    445 	bh			stringnoz["bh"]
    446 	journal_checksum	stringnoz["journal_checksum"]
    447 	nojournal_checksum	stringnoz["nojournal_checksum"]
    448 	journal_async_commit	stringnoz["journal_async_commit"]
    449 	abort			stringnoz["abort"]
    450 	data_journal		stringnoz["data=journal"]
    451 	data_ordered		stringnoz["data=ordered"]
    452 	data_writeback		stringnoz["data=writeback"]
    453 	data_err_abort		stringnoz["data_err=abort"]
    454 	data_err_ignore		stringnoz["data_err=ignore"]
    455 	usrjquota		stringnoz["usrjquota="]
    456 	grpjquota		stringnoz["grpjquota="]
    457 	jqfmt_vfsold		stringnoz["jqfmt=vfsold"]
    458 	jqfmt_vfsv0		stringnoz["jqfmt=vfsv0"]
    459 	jqfmt_vfsv1		stringnoz["jqfmt=vfsv1"]
    460 	grpquota		stringnoz["grpquota"]
    461 	noquota			stringnoz["noquota"]
    462 	quota			stringnoz["quota"]
    463 	usrquota		stringnoz["usrquota"]
    464 	prjquota		stringnoz["prjquota"]
    465 	barrier			stringnoz["barrier"]
    466 	nobarrier		stringnoz["nobarrier"]
    467 	i_version		stringnoz["i_version"]
    468 	dax			stringnoz["dax"]
    469 	delalloc		stringnoz["delalloc"]
    470 	lazytime		stringnoz["lazytime"]
    471 	nolazytime		stringnoz["nolazytime"]
    472 	nodelalloc		stringnoz["nodelalloc"]
    473 	mblk_io_submit		stringnoz["mblk_io_submit"]
    474 	nomblk_io_submit	stringnoz["nomblk_io_submit"]
    475 	block_validity		stringnoz["block_validity"]
    476 	noblock_validity	stringnoz["noblock_validity"]
    477 	auto_da_alloc		stringnoz["auto_da_alloc"]
    478 	noauto_da_alloc		stringnoz["noauto_da_alloc"]
    479 	dioread_nolock		stringnoz["dioread_nolock"]
    480 	dioread_lock		stringnoz["dioread_lock"]
    481 	discard			stringnoz["discard"]
    482 	nodiscard		stringnoz["nodiscard"]
    483 	init_itable		stringnoz["init_itable"]
    484 	noinit_itable		stringnoz["noinit_itable"]
    485 	test_dummy_encryption	stringnoz["test_dummy_encryption"]
    486 	nombcache		stringnoz["nombcache"]
    487 	resgid			fs_opt_hex["resgid", gid]
    488 	resuid			fs_opt_hex["resuid", uid]
    489 	sb			fs_opt_hex["sb", int32]
    490 	commit			fs_opt_hex["commit", int32]
    491 	min_batch_time		fs_opt_hex["min_batch_time", int32]
    492 	max_batch_time		fs_opt_hex["max_batch_time", int32]
    493 	journal_dev		fs_opt_hex["journal_dev", int32]
    494 	barrier_val		fs_opt_hex["barrier", int32]
    495 	stripe			fs_opt_hex["stripe", int32]
    496 	debug_want_extra_isize	fs_opt_hex["debug_want_extra_isize", int32]
    497 	inode_readahead_blks	fs_opt_hex["inode_readahead_blks", flags[ext4_inode_readahead_blks]]
    498 	journal_ioprio		fs_opt_hex["journal_ioprio", int32[0:7]]
    499 	auto_da_alloc_val	fs_opt_hex["auto_da_alloc", int32]
    500 	init_itable_val		fs_opt_hex["init_itable", int32]
    501 	max_dir_size_kb		fs_opt_hex["max_dir_size_kb", int32]
    502 	journal_path		fs_opt_filename["journal_path"]
    503 	grpjquota_path		fs_opt_filename["grpjquota"]
    504 	usrjquota_path		fs_opt_filename["usrjquota"]
    505 ] [varlen]
    506 
    507 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
    508 
    509 f2fs_options [
    510 	background_gc_sync	stringnoz["background_gc=sync"]
    511 	background_gc_off	stringnoz["background_gc=off"]
    512 	background_gc_on	stringnoz["background_gc=on"]
    513 	disable_roll_forward	stringnoz["disable_roll_forward"]
    514 	norecovery		stringnoz["norecovery"]
    515 	discard			stringnoz["discard"]
    516 	nodiscard		stringnoz["nodiscard"]
    517 	noheap			stringnoz["noheap"]
    518 	heap			stringnoz["heap"]
    519 	user_xattr		stringnoz["user_xattr"]
    520 	nouser_xattr		stringnoz["nouser_xattr"]
    521 	acl			stringnoz["acl"]
    522 	noacl			stringnoz["noacl"]
    523 	six_active_logs		stringnoz["active_logs=6"]
    524 	four_active_logs	stringnoz["active_logs=4"]
    525 	two_active_logs		stringnoz["active_logs=2"]
    526 	disable_ext_identify	stringnoz["disable_ext_identify"]
    527 	inline_xattr		stringnoz["inline_xattr"]
    528 	noinline_xattr		stringnoz["noinline_xattr"]
    529 	inline_xattr_size	fs_opt_hex["inline_xattr_size", int32]
    530 	inline_data		stringnoz["inline_data"]
    531 	noinline_data		stringnoz["noinline_data"]
    532 	inline_dentry		stringnoz["inline_dentry"]
    533 	noinline_dentry		stringnoz["noinline_dentry"]
    534 	flush_merge		stringnoz["flush_merge"]
    535 	noflush_merge		stringnoz["noflush_merge"]
    536 	nobarrier		stringnoz["nobarrier"]
    537 	fastboot		stringnoz["fastboot"]
    538 	extent_cache		stringnoz["extent_cache"]
    539 	noextent_cache		stringnoz["noextent_cache"]
    540 	data_flush		stringnoz["data_flush"]
    541 	adaptive_mode		stringnoz["mode=adaptive"]
    542 	lfs_mode		stringnoz["mode=lfs"]
    543 	resgid			fs_opt_hex["resgid", gid]
    544 	resuid			fs_opt_hex["resuid", uid]
    545 	lazytime		stringnoz["lazytime"]
    546 	nolazytime		stringnoz["nolazytime"]
    547 	quota			stringnoz["quota"]
    548 	noquota			stringnoz["noquota"]
    549 	usrquota		fs_opt_str["usrquota"]
    550 	grpquota		fs_opt_str["grpquota"]
    551 	prjquota		fs_opt_str["prjquota"]
    552 	usrjquota		fs_opt_str["usrjquota"]
    553 	grpjquota		fs_opt_str["grpjquota"]
    554 	prjjquota		fs_opt_str["prjjquota"]
    555 	jqfmt_vfsold		stringnoz["jqfmt=vfsold"]
    556 	jqfmt_vfsv0		stringnoz["jqfmt=vfsv0"]
    557 	jqfmt_vfsv1		stringnoz["jqfmt=vfsv1"]
    558 	whint_mode_user		stringnoz["whint_mode=user-based"]
    559 	whint_mode_off		stringnoz["whint_mode=off"]
    560 	whint_mode_fs		stringnoz["whint_mode=fs-based"]
    561 	alloc_mode_def		stringnoz["alloc_mode=default"]
    562 	alloc_mode_reuse	stringnoz["alloc_mode=reuse"]
    563 	fsync_mode_posix	stringnoz["fsync_mode=posix"]
    564 	fsync_mode_strict	stringnoz["fsync_mode=strict"]
    565 	test_dummy_encryption	stringnoz["test_dummy_encryption"]
    566 ] [varlen]
    567 
    568 bpf_options [
    569 	mode	fs_opt_oct["mode", int32]
    570 ] [varlen]
    571 
    572 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"
    573 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"
    574 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
    575 umount_flags = MNT_FORCE, MNT_DETACH, MNT_EXPIRE, UMOUNT_NOFOLLOW
    576