syzkaller/sys/linux/filesystem.txt
Dmitry Vyukov 3e679c51c0 pkg/compiler: support non-zero terminated filenames
Now file names become:

string[filename]

with a possibility of using other string features:

stringnoz[filename]
string[filename, CONST_SIZE]

and filename is left as type alias as it is commonly used:

type filename string[filename]
2018-04-02 20:10:07 +02:00

480 lines
20 KiB
Plaintext

# 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 <linux/fs.h>
mount(src ptr[in, filename], dst ptr[in, filename], type ptr[in, string[filesystem]], flags flags[mount_flags], data buffer[in, opt])
umount2(path ptr[in, filename], flags flags[umount_flags])
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"
syz_read_part_table(size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]])
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]])
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[vfat_options]])
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])
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, xfs_full_options])
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])
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]])
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]])
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]])
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]])
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]])
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]])
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]])
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]])
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]])
ext4_types = "ext4", "ext3", "ext2"
fs_image_segment {
data ptr[in, array[int8]]
size len[data, intptr]
offset intptr
}
type fs_options[ELEMS] {
elems array[fs_opt_elem[ELEMS]]
null const[0, int8]
} [packed]
type fs_opt_elem[ELEMS] {
elem ELEMS
comma const[44, int8]
} [packed]
type fs_opt[NAME, TYPE] {
name stringnoz[NAME]
eq const[0x3d, int8]
val TYPE
} [packed]
type fs_opt_str[NAME] fs_opt[NAME, stringnoz]
type fs_opt_oct[NAME] fs_opt[NAME, array[int8[0x30:0x37]]]
type fs_opt_dec[NAME] fs_opt[NAME, array[flags[fs_opt_digits, int8]]]
type fs_opt_dec_suffix[NAME] fs_opt[NAME, array[flags[fs_opt_digits_suffix, int8]]]
type fs_opt_filename[NAME] fs_opt[NAME, stringnoz[filename]]
type fs_opt_codepage[NAME] fs_opt[NAME, stringnoz[codepages_names]]
type fs_opt_cp_num[NAME] fs_opt[NAME, stringnoz[codepage_nums]]
# '-', 'x' and digits
fs_opt_digits = 45, 120, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
# the same bug with k/m/g/t/p/e for suffixes
fs_opt_digits_suffix = 45, 120, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 107, 109, 103, 116, 112, 101
vfat_options [
check_relaxed stringnoz["check=relaxed"]
check_strict stringnoz["check=strict"]
check_normal stringnoz["check=normal"]
usefree stringnoz["usefree"]
nocase stringnoz["nocase"]
quiet stringnoz["quiet"]
showexec stringnoz["showexec"]
debug stringnoz["debug"]
sys_immutable stringnoz["sys_immutable"]
flush stringnoz["flush"]
tz_utc stringnoz["tz=UTC"]
errors_continue stringnoz["errors=continue"]
errors_remount stringnoz["errors=remount-ro"]
discard stringnoz["discard"]
nfs stringnoz["nfs"]
nfs_nostale_ro stringnoz["nfs=nostale_ro"]
dos1xfloppy stringnoz["dos1xfloppy"]
uid fs_opt_oct["uid"]
gid fs_opt_oct["gid"]
umask fs_opt_oct["umask"]
dmask fs_opt_oct["dmask"]
fmask fs_opt_oct["fmask"]
allow_utime fs_opt_oct["allow_utime"]
time_offset fs_opt_dec["time_offset"]
codepage fs_opt_cp_num["codepage"]
] [varlen]
xfs_full_options {
# We always set nouuid because xfs has a global table uuids and if two parallel
# executors mounts fs with the same uuid, second mount fails.
nouuid stringnoz["nouuid,"]
options fs_options[xfs_options]
}
xfs_options [
wsync stringnoz["wsync"]
noalign stringnoz["noalign"]
swalloc stringnoz["swalloc"]
nouuid stringnoz["nouuid"]
mtpt stringnoz["mtpt"]
grpid stringnoz["grpid"]
nogrpid stringnoz["nogrpid"]
bsdgroups stringnoz["bsdgroups"]
sysvgroups stringnoz["sysvgroups"]
norecovery stringnoz["norecovery"]
inode64 stringnoz["inode64"]
inode32 stringnoz["inode32"]
ikeep stringnoz["ikeep"]
noikeep stringnoz["noikeep"]
largeio stringnoz["largeio"]
nolargeio stringnoz["nolargeio"]
attr2 stringnoz["attr2"]
noattr2 stringnoz["noattr2"]
filestreams stringnoz["filestreams"]
quota stringnoz["quota"]
noquota stringnoz["noquota"]
usrquota stringnoz["usrquota"]
grpquota stringnoz["grpquota"]
prjquota stringnoz["prjquota"]
uquota stringnoz["uquota"]
gquota stringnoz["gquota"]
pquota stringnoz["pquota"]
uqnoenforce stringnoz["uqnoenforce"]
gqnoenforce stringnoz["gqnoenforce"]
pqnoenforce stringnoz["pqnoenforce"]
qnoenforce stringnoz["qnoenforce"]
discard stringnoz["discard"]
nodiscard stringnoz["nodiscard"]
dax stringnoz["dax"]
barrier stringnoz["barrier"]
nobarrier stringnoz["nobarrier"]
logbufs fs_opt_dec["logbufs"]
biosize fs_opt_dec["biosize"]
sunit fs_opt_dec["sunit"]
swidth fs_opt_dec["swidth"]
logbsize fs_opt_dec_suffix["logbsize"]
allocsize fs_opt_dec_suffix["allocsize"]
logdev fs_opt_filename["logdev"]
rtdev fs_opt_filename["rtdev"]
] [varlen]
reiserfs_options [
tails_on stringnoz["tails=on"]
tails_off stringnoz["tails=off"]
tails_small stringnoz["tails=small"]
notail stringnoz["notail"]
conv stringnoz["conv"]
noattrs stringnoz["noattrs"]
expose_privroot stringnoz["expose_privroot"]
user_xattr stringnoz["user_xattr"]
nouser_xattr stringnoz["nouser_xattr"]
acl stringnoz["acl"]
noacl stringnoz["noacl"]
replayonly stringnoz["replayonly"]
nolargeio stringnoz["nolargeio"]
usrquota stringnoz["usrquota"]
grpquota stringnoz["grpquota"]
noquota stringnoz["noquota"]
usrjquota stringnoz["usrjquota"]
usrjquota_file stringnoz["usrjquota=syz"]
grpjquota stringnoz["grpjquota"]
commit fs_opt_dec["commit"]
resize fs_opt_dec["resize"]
resize_auto stringnoz["resize=auto"]
jdev fs_opt_filename["jdev"]
jqfmt_vfsold stringnoz["jqfmt=vfsold"]
jqfmt_vfsv0 stringnoz["jqfmt=vfsv0"]
hash_tea stringnoz["hash=tea"]
hash_rupasov stringnoz["hash=rupasov"]
hash_r5 stringnoz["hash=r5"]
balloc_noborder stringnoz["block-allocator=noborder"]
balloc_border stringnoz["block-allocator=border"]
balloc_no_unhash_reloc stringnoz["block-allocator=no_unhashed_relocation"]
balloc_hashed_reloc stringnoz["block-allocator=hashed_relocation"]
balloc_test4 stringnoz["block-allocator=test4"]
balloc_notest4 stringnoz["block-allocator=notest4"]
barrier_none stringnoz["barrier=none"]
barrier_flush stringnoz["barrier=flush"]
data_ordered stringnoz["data=ordered"]
data_journal stringnoz["data=journal"]
data_writeback stringnoz["data=writeback"]
errors_continue stringnoz["errors=continue"]
errors_ro_remount stringnoz["errors=ro-remount"]
] [varlen]
hfs_options [
quiet stringnoz["quiet"]
umask fs_opt_oct["umask"]
file_umask fs_opt_oct["file_umask"]
dir_umask fs_opt_oct["dir_umask"]
uid fs_opt_dec["uid"]
gid fs_opt_dec["gid"]
part fs_opt_dec["part"]
session fs_opt_dec["session"]
type fs_opt["type", array[int8, 4]]
creator fs_opt["creator", array[int8, 4]]
codepage fs_opt_codepage["codepage"]
iocharset fs_opt_codepage["iocharset"]
] [varlen]
hfsplus_options [
decompose stringnoz["decompose"]
nodecompose stringnoz["nodecompose"]
barrier stringnoz["barrier"]
nobarrier stringnoz["nobarrier"]
force stringnoz["force"]
umask fs_opt_oct["umask"]
type fs_opt["type", array[int8, 4]]
creator fs_opt["creator", array[int8, 4]]
uid fs_opt_dec["uid"]
gid fs_opt_dec["gid"]
part fs_opt_dec["part"]
session fs_opt_dec["session"]
nls fs_opt_codepage["nls"]
] [varlen]
iso9660_options [
norock stringnoz["norock"]
nojoliet stringnoz["nojoliet"]
unhide stringnoz["unhide"]
hide stringnoz["hide"]
cruft stringnoz["cruft"]
utf8 stringnoz["utf8"]
map_acorn stringnoz["map=acorn"]
map_normal stringnoz["map=normal"]
map_off stringnoz["map=off"]
check_relaxed stringnoz["check=relaxed"]
check_strict stringnoz["check=strict"]
overriderock stringnoz["overriderockperm"]
nocompress stringnoz["nocompress"]
session fs_opt_dec["session"]
sbsector fs_opt_dec["sbsector"]
uid fs_opt_dec["uid"]
gid fs_opt_dec["gid"]
mode fs_opt_dec["mode"]
dmode fs_opt_dec["dmode"]
block fs_opt_dec["block"]
iocharset fs_opt_codepage["iocharset"]
] [varlen]
gfs2_options [
spectator stringnoz["spectator"]
norecovery stringnoz["norecovery"]
ignore_local_fs stringnoz["ignore_local_fs"]
localflocks stringnoz["localflocks"]
localcaching stringnoz["localcaching"]
upgrade stringnoz["upgrade"]
acl stringnoz["acl"]
noacl stringnoz["noacl"]
quota_off stringnoz["quota=off"]
quota_account stringnoz["quota=account"]
quota_on stringnoz["quota=on"]
quota stringnoz["quota"]
noquota stringnoz["noquota"]
suiddir stringnoz["suiddir"]
nosuiddir stringnoz["nosuiddir"]
data_writeback stringnoz["data=writeback"]
data_ordered stringnoz["data=ordered"]
meta stringnoz["meta"]
discard stringnoz["discard"]
nodiscard stringnoz["nodiscard"]
errors_withdraw stringnoz["errors=withdraw"]
barrier stringnoz["barrier"]
nobarrier stringnoz["nobarrier"]
rgrplvb stringnoz["rgrplvb"]
norgrplvb stringnoz["norgrplvb"]
loccookie stringnoz["loccookie"]
noloccookie stringnoz["noloccookie"]
commit fs_opt_dec["commit"]
statfs_quantum fs_opt_dec["statfs_quantum"]
statfs_percent fs_opt_dec["statfs_percent"]
quota_quantum fs_opt_dec["quota_quantum"]
lockproto_dlm stringnoz["lockproto=dlm"]
lockproto_nolock stringnoz["lockproto=lock_nolock"]
locktable fs_opt_str["locktable"]
hostdata fs_opt_str["hostdata"]
] [varlen]
jfs_options [
integrity stringnoz["integrity"]
nointegrity stringnoz["nointegrity"]
resize stringnoz["resize"]
noquota stringnoz["noquota"]
quota stringnoz["quota"]
usrquota stringnoz["usrquota"]
grpquota stringnoz["grpquota"]
discard stringnoz["discard"]
nodiscard stringnoz["nodiscard"]
iocharset fs_opt_codepage["iocharset"]
errors_continue stringnoz["errors=continue"]
errors_remount stringnoz["errors=remount-ro"]
resize_size fs_opt_dec["resize"]
uid fs_opt_dec["uid"]
gid fs_opt_dec["gid"]
umask fs_opt_dec["umask"]
discard_size fs_opt_dec["discard"]
] [varlen]
btrfs_options [
degraded stringnoz["degraded"]
nodatasum stringnoz["nodatasum"]
datasum stringnoz["datasum"]
nodatacow stringnoz["nodatacow"]
datacow stringnoz["datacow"]
nobarrier stringnoz["nobarrier"]
barrier stringnoz["barrier"]
compress stringnoz["compress"]
compress_force stringnoz["compress-force"]
ssd stringnoz["ssd"]
ssd_spread stringnoz["ssd_spread"]
nossd stringnoz["nossd"]
acl stringnoz["acl"]
noacl stringnoz["noacl"]
notreelog stringnoz["notreelog"]
treelog stringnoz["treelog"]
flushoncommit stringnoz["flushoncommit"]
noflushoncommit stringnoz["noflushoncommit"]
discard stringnoz["discard"]
nodiscard stringnoz["nodiscard"]
space_cache stringnoz["space_cache"]
clear_cache stringnoz["clear_cache"]
user_subvol_rm stringnoz["user_subvol_rm_allowed"]
enospc_debug stringnoz["enospc_debug"]
noenospc_debug stringnoz["noenospc_debug"]
autodefrag stringnoz["autodefrag"]
noautodefrag stringnoz["noautodefrag"]
inode_cache stringnoz["inode_cache"]
noinode_cache stringnoz["noinode_cache"]
nospace_cache stringnoz["nospace_cache"]
usebackuproot stringnoz["usebackuproot"]
skip_balance stringnoz["skip_balance"]
check_int stringnoz["check_int"]
check_int_data stringnoz["check_int_data"]
rescan_uuid_tree stringnoz["rescan_uuid_tree"]
fragment_data stringnoz["fragment=data"]
fragment_metadata stringnoz["fragment=metadata"]
fragment_all stringnoz["fragment=all"]
ref_verify stringnoz["ref_verify"]
metadata_ratio fs_opt_dec["metadata_ratio"]
subvolrootid fs_opt_dec["subvolrootid"]
check_int_print_mask fs_opt_dec["check_int_print_mask"]
commit fs_opt_dec["commit"]
thread_pool fs_opt_dec["thread_pool"]
device fs_opt_filename["device"]
subvolid fs_opt_str["subvolid"]
subvol fs_opt_dec_suffix["subvol"]
max_inline fs_opt_dec_suffix["max_inline"]
compress_algo fs_opt["compress", stringnoz[btrfs_compress_algos]]
compress_force_algo fs_opt["compress-force", stringnoz[btrfs_compress_algos]]
space_cache_v1 stringnoz["space_cache=v1"]
space_cache_v2 stringnoz["space_cache=v2"]
] [varlen]
btrfs_compress_algos = "zlib", "lzo", "zstd", "no"
ntfs_options [
uid fs_opt_dec["uid"]
gid fs_opt_dec["gid"]
umask fs_opt_oct["umask"]
fmask fs_opt_oct["fmask"]
dmask fs_opt_oct["dmask"]
mft_zone_multiplier fs_opt_dec["mft_zone_multiplier"]
show_sys_files_no fs_opt_dec["show_sys_files=no"]
show_sys_files_yes fs_opt_dec["show_sys_files=yes"]
case_sensitive_no fs_opt_dec["case_sensitive=no"]
case_sensitive_yes fs_opt_dec["case_sensitive=yes"]
disable_sparse_no fs_opt_dec["disable_sparse=no"]
disable_sparse_yes fs_opt_dec["disable_sparse=yes"]
errors_remount stringnoz["errors=remount-ro"]
errors_continue stringnoz["errors=continue"]
errors_recover stringnoz["errors=recover"]
nls fs_opt_codepage["nls"]
utf8 stringnoz["utf8"]
] [varlen]
ext4_options [
bsddf stringnoz["bsddf"]
minixdf stringnoz["minixdf"]
grpid stringnoz["grpid"]
bsdgroups stringnoz["bsdgroups"]
nogrpid stringnoz["nogrpid"]
sysvgroups stringnoz["sysvgroups"]
errors_continue stringnoz["errors=continue"]
errors_remount stringnoz["errors=remount-ro"]
nouid32 stringnoz["nouid32"]
debug stringnoz["debug"]
oldalloc stringnoz["oldalloc"]
orlov stringnoz["orlov"]
user_xattr stringnoz["user_xattr"]
nouser_xattr stringnoz["nouser_xattr"]
acl stringnoz["acl"]
noacl stringnoz["noacl"]
norecovery stringnoz["norecovery"]
noload stringnoz["noload"]
nobh stringnoz["nobh"]
bh stringnoz["bh"]
journal_checksum stringnoz["journal_checksum"]
nojournal_checksum stringnoz["nojournal_checksum"]
journal_async_commit stringnoz["journal_async_commit"]
abort stringnoz["abort"]
data_journal stringnoz["data=journal"]
data_ordered stringnoz["data=ordered"]
data_writeback stringnoz["data=writeback"]
data_err_abort stringnoz["data_err=abort"]
data_err_ignore stringnoz["data_err=ignore"]
usrjquota stringnoz["usrjquota="]
grpjquota stringnoz["grpjquota="]
jqfmt_vfsold stringnoz["jqfmt=vfsold"]
jqfmt_vfsv0 stringnoz["jqfmt=vfsv0"]
jqfmt_vfsv1 stringnoz["jqfmt=vfsv1"]
grpquota stringnoz["grpquota"]
noquota stringnoz["noquota"]
quota stringnoz["quota"]
usrquota stringnoz["usrquota"]
prjquota stringnoz["prjquota"]
barrier stringnoz["barrier"]
nobarrier stringnoz["nobarrier"]
i_version stringnoz["i_version"]
dax stringnoz["dax"]
delalloc stringnoz["delalloc"]
lazytime stringnoz["lazytime"]
nolazytime stringnoz["nolazytime"]
nodelalloc stringnoz["nodelalloc"]
mblk_io_submit stringnoz["mblk_io_submit"]
nomblk_io_submit stringnoz["nomblk_io_submit"]
block_validity stringnoz["block_validity"]
noblock_validity stringnoz["noblock_validity"]
auto_da_alloc stringnoz["auto_da_alloc"]
noauto_da_alloc stringnoz["noauto_da_alloc"]
dioread_nolock stringnoz["dioread_nolock"]
dioread_lock stringnoz["dioread_lock"]
discard stringnoz["discard"]
nodiscard stringnoz["nodiscard"]
init_itable stringnoz["init_itable"]
noinit_itable stringnoz["noinit_itable"]
test_dummy_encryption stringnoz["test_dummy_encryption"]
nombcache stringnoz["nombcache"]
resgid fs_opt_dec["resgid"]
resuid fs_opt_dec["resuid"]
sb fs_opt_dec["sb"]
commit fs_opt_dec["commit"]
min_batch_time fs_opt_dec["min_batch_time"]
max_batch_time fs_opt_dec["max_batch_time"]
journal_dev fs_opt_dec["journal_dev"]
barrier_val fs_opt_dec["barrier"]
stripe fs_opt_dec["stripe"]
debug_want_extra_isize fs_opt_dec["debug_want_extra_isize"]
inode_readahead_blks fs_opt_dec["inode_readahead_blks"]
journal_ioprio fs_opt_dec["journal_ioprio"]
auto_da_alloc_val fs_opt_dec["auto_da_alloc"]
init_itable_val fs_opt_dec["init_itable"]
max_dir_size_kb fs_opt_dec["max_dir_size_kb"]
journal_path fs_opt_filename["journal_path"]
grpjquota_path fs_opt_filename["grpjquota"]
usrjquota_path fs_opt_filename["usrjquota"]
] [varlen]
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"
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"
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
umount_flags = MNT_FORCE, MNT_DETACH, MNT_EXPIRE, UMOUNT_NOFOLLOW