libspl: add API for manipulating tunables

Sponsored-by: https://despairlabs.com/sponsor/
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Closes #17537
This commit is contained in:
Rob Norris
2025-07-12 11:32:44 +10:00
committed by Brian Behlendorf
parent 967ce75669
commit cb9742e532
5 changed files with 843 additions and 18 deletions
+197 -7
View File
@@ -451,6 +451,10 @@
<elf-symbol name='zfs_strip_partition' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='zfs_strip_path' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='zfs_truncate_shares' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='zfs_tunable_get' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='zfs_tunable_iter' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='zfs_tunable_lookup' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='zfs_tunable_set' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='zfs_type_to_name' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='zfs_unmount' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
<elf-symbol name='zfs_unmountall' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
@@ -1450,8 +1454,103 @@
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='lib/libspl/os/linux/getmntany.c' language='LANG_C99'>
<array-type-def dimensions='1' type-id='d315442e' size-in-bits='16' id='811205dc'>
<subrange length='1' type-id='7359adad' id='52f813b4'/>
</array-type-def>
<array-type-def dimensions='1' type-id='d3130597' size-in-bits='768' id='f63f23b9'>
<subrange length='12' type-id='7359adad' id='84827bdc'/>
</array-type-def>
<typedef-decl name='__u16' type-id='8efea9e5' id='d315442e'/>
<typedef-decl name='__s32' type-id='95e97e5e' id='3158a266'/>
<typedef-decl name='__u32' type-id='f0981eeb' id='3f1a6b60'/>
<typedef-decl name='__s64' type-id='1eb56b1e' id='49659421'/>
<typedef-decl name='__u64' type-id='3a47d82b' id='d3130597'/>
<class-decl name='statx_timestamp' size-in-bits='128' is-struct='yes' visibility='default' id='94101016'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='tv_sec' type-id='49659421' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='64'>
<var-decl name='tv_nsec' type-id='3f1a6b60' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='96'>
<var-decl name='__reserved' type-id='3158a266' visibility='default'/>
</data-member>
</class-decl>
<class-decl name='statx' size-in-bits='2048' is-struct='yes' visibility='default' id='720b04c5'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='stx_mask' type-id='3f1a6b60' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='32'>
<var-decl name='stx_blksize' type-id='3f1a6b60' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='64'>
<var-decl name='stx_attributes' type-id='d3130597' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='128'>
<var-decl name='stx_nlink' type-id='3f1a6b60' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='160'>
<var-decl name='stx_uid' type-id='3f1a6b60' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='192'>
<var-decl name='stx_gid' type-id='3f1a6b60' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='224'>
<var-decl name='stx_mode' type-id='d315442e' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='240'>
<var-decl name='__spare0' type-id='811205dc' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='256'>
<var-decl name='stx_ino' type-id='d3130597' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='320'>
<var-decl name='stx_size' type-id='d3130597' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='384'>
<var-decl name='stx_blocks' type-id='d3130597' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='448'>
<var-decl name='stx_attributes_mask' type-id='d3130597' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='512'>
<var-decl name='stx_atime' type-id='94101016' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='640'>
<var-decl name='stx_btime' type-id='94101016' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='768'>
<var-decl name='stx_ctime' type-id='94101016' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='896'>
<var-decl name='stx_mtime' type-id='94101016' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='1024'>
<var-decl name='stx_rdev_major' type-id='3f1a6b60' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='1056'>
<var-decl name='stx_rdev_minor' type-id='3f1a6b60' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='1088'>
<var-decl name='stx_dev_major' type-id='3f1a6b60' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='1120'>
<var-decl name='stx_dev_minor' type-id='3f1a6b60' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='1152'>
<var-decl name='stx_mnt_id' type-id='d3130597' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='1216'>
<var-decl name='__spare2' type-id='d3130597' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='1280'>
<var-decl name='__spare3' type-id='f63f23b9' visibility='default'/>
</data-member>
</class-decl>
<pointer-type-def type-id='56fe4a37' size-in-bits='64' id='b6b61d2f'/>
<qualified-type-def type-id='b6b61d2f' restrict='yes' id='3cad23cd'/>
<pointer-type-def type-id='720b04c5' size-in-bits='64' id='936b8e35'/>
<qualified-type-def type-id='936b8e35' restrict='yes' id='31d265b7'/>
<function-decl name='getmntent_r' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='e75a27e9'/>
<parameter type-id='3cad23cd'/>
@@ -1463,6 +1562,14 @@
<parameter type-id='822cd80b'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='statx' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='95e97e5e'/>
<parameter type-id='9d26089a'/>
<parameter type-id='95e97e5e'/>
<parameter type-id='f0981eeb'/>
<parameter type-id='31d265b7'/>
<return type-id='95e97e5e'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='lib/libspl/timestamp.c' language='LANG_C99'>
<typedef-decl name='nl_item' type-id='95e97e5e' id='03b79a94'/>
@@ -1487,6 +1594,89 @@
<return type-id='48b5725f'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='lib/libspl/tunables.c' language='LANG_C99'>
<enum-decl name='zfs_tunable_type_t' naming-typedef-id='f50b1525' id='56905369'>
<underlying-type type-id='9cac1fee'/>
<enumerator name='ZFS_TUNABLE_TYPE_INT' value='0'/>
<enumerator name='ZFS_TUNABLE_TYPE_UINT' value='1'/>
<enumerator name='ZFS_TUNABLE_TYPE_ULONG' value='2'/>
<enumerator name='ZFS_TUNABLE_TYPE_U64' value='3'/>
<enumerator name='ZFS_TUNABLE_TYPE_STRING' value='4'/>
</enum-decl>
<typedef-decl name='zfs_tunable_type_t' type-id='56905369' id='f50b1525'/>
<enum-decl name='zfs_tunable_perm_t' naming-typedef-id='ada7336b' id='e80e6ebf'>
<underlying-type type-id='9cac1fee'/>
<enumerator name='ZFS_TUNABLE_PERM_ZMOD_RW' value='0'/>
<enumerator name='ZFS_TUNABLE_PERM_ZMOD_RD' value='1'/>
</enum-decl>
<typedef-decl name='zfs_tunable_perm_t' type-id='e80e6ebf' id='ada7336b'/>
<class-decl name='zfs_tunable' size-in-bits='320' is-struct='yes' visibility='default' id='1a97ee0e'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='zt_name' type-id='80f4b756' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='64'>
<var-decl name='zt_varp' type-id='eaa32e2f' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='128'>
<var-decl name='zt_varsz' type-id='b59d7dce' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='192'>
<var-decl name='zt_type' type-id='f50b1525' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='224'>
<var-decl name='zt_perm' type-id='ada7336b' visibility='default'/>
</data-member>
<data-member access='public' layout-offset-in-bits='256'>
<var-decl name='zt_desc' type-id='80f4b756' visibility='default'/>
</data-member>
</class-decl>
<typedef-decl name='zfs_tunable_t' type-id='1a97ee0e' id='12bf5c5e'/>
<typedef-decl name='zfs_tunable_iter_t' type-id='7ef33f92' id='d8d5f4ab'/>
<typedef-decl name='intmax_t' type-id='5b475db0' id='e104d842'/>
<typedef-decl name='uintmax_t' type-id='04d82f4b' id='f8b828c9'/>
<typedef-decl name='__intmax_t' type-id='bd54fe1a' id='5b475db0'/>
<typedef-decl name='__uintmax_t' type-id='7359adad' id='04d82f4b'/>
<qualified-type-def type-id='12bf5c5e' const='yes' id='180e47ee'/>
<pointer-type-def type-id='180e47ee' size-in-bits='64' id='a27af98c'/>
<pointer-type-def type-id='92f86508' size-in-bits='64' id='7ef33f92'/>
<function-decl name='strtoimax' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='9d26089a'/>
<parameter type-id='8c85230f'/>
<parameter type-id='95e97e5e'/>
<return type-id='e104d842'/>
</function-decl>
<function-decl name='strtoumax' visibility='default' binding='global' size-in-bits='64'>
<parameter type-id='9d26089a'/>
<parameter type-id='8c85230f'/>
<parameter type-id='95e97e5e'/>
<return type-id='f8b828c9'/>
</function-decl>
<function-decl name='zfs_tunable_lookup' mangled-name='zfs_tunable_lookup' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_tunable_lookup'>
<parameter type-id='80f4b756' name='name'/>
<return type-id='a27af98c'/>
</function-decl>
<function-decl name='zfs_tunable_set' mangled-name='zfs_tunable_set' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_tunable_set'>
<parameter type-id='a27af98c' name='zt'/>
<parameter type-id='80f4b756' name='val'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='zfs_tunable_get' mangled-name='zfs_tunable_get' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_tunable_get'>
<parameter type-id='a27af98c' name='zt'/>
<parameter type-id='26a90f95' name='val'/>
<parameter type-id='b59d7dce' name='valsz'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='zfs_tunable_iter' mangled-name='zfs_tunable_iter' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_tunable_iter'>
<parameter type-id='d8d5f4ab' name='cb'/>
<parameter type-id='eaa32e2f' name='arg'/>
<return type-id='48b5725f'/>
</function-decl>
<function-type size-in-bits='64' id='92f86508'>
<parameter type-id='a27af98c'/>
<parameter type-id='eaa32e2f'/>
<return type-id='95e97e5e'/>
</function-type>
</abi-instr>
<abi-instr address-size='64' path='lib/libtpool/thread_pool.c' language='LANG_C99'>
<array-type-def dimensions='1' type-id='49ef3ffd' size-in-bits='1024' id='a14403f5'>
<subrange length='16' type-id='7359adad' id='848d0938'/>
@@ -4135,13 +4325,6 @@
<parameter type-id='58603c44'/>
<return type-id='9c313c2d'/>
</function-decl>
<function-decl name='zpool_prop_get_feature' mangled-name='zpool_prop_get_feature' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_get_feature'>
<parameter type-id='4c81de99'/>
<parameter type-id='80f4b756'/>
<parameter type-id='26a90f95'/>
<parameter type-id='b59d7dce'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='zfs_iter_snapshots_v2' mangled-name='zfs_iter_snapshots_v2' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_snapshots_v2'>
<parameter type-id='9200a744'/>
<parameter type-id='95e97e5e'/>
@@ -6630,6 +6813,13 @@
<parameter type-id='e4378506' name='plp'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='zpool_prop_get_feature' mangled-name='zpool_prop_get_feature' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_get_feature'>
<parameter type-id='4c81de99' name='zhp'/>
<parameter type-id='80f4b756' name='propname'/>
<parameter type-id='26a90f95' name='buf'/>
<parameter type-id='b59d7dce' name='len'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='zpool_get_state' mangled-name='zpool_get_state' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_state'>
<parameter type-id='4c81de99' name='zhp'/>
<return type-id='95e97e5e'/>