diff options
Diffstat (limited to 'lib')
151 files changed, 13092 insertions, 5304 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am index 499ebdaeba9b..050a6cac0a37 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -9,11 +9,11 @@ # These library interfaces are subject to change at any time. # # -# CMDS: zhack/ztest/zdb/ zfs/zpool/zed/ +# CMDS: zhack/ztest/ zfs/zpool/zed/ # raidz_{test,bench} zinject/zstream # | | # LIBS: | | libzfsbootenv* -# | | | +# |--libzdb--zdb | | # | | | # libzpool libzfs* ----------------+ # | | | \ / | | | @@ -62,6 +62,7 @@ include $(srcdir)/%D%/libspl/Makefile.am include $(srcdir)/%D%/libtpool/Makefile.am include $(srcdir)/%D%/libunicode/Makefile.am include $(srcdir)/%D%/libuutil/Makefile.am +include $(srcdir)/%D%/libzdb/Makefile.am include $(srcdir)/%D%/libzfs_core/Makefile.am include $(srcdir)/%D%/libzfs/Makefile.am include $(srcdir)/%D%/libzfsbootenv/Makefile.am diff --git a/lib/libefi/rdwr_efi.c b/lib/libefi/rdwr_efi.c index 30fddc3db8a8..739219e0410f 100644 --- a/lib/libefi/rdwr_efi.c +++ b/lib/libefi/rdwr_efi.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -423,7 +423,6 @@ efi_alloc_and_read(int fd, struct dk_gpt **vtoc) void *tmp; length = (int) sizeof (struct dk_gpt) + (int) sizeof (struct dk_part) * (vptr->efi_nparts - 1); - nparts = vptr->efi_nparts; if ((tmp = realloc(vptr, length)) == NULL) { /* cppcheck-suppress doubleFree */ free(vptr); @@ -565,10 +564,9 @@ int efi_rescan(int fd) { int retry = 10; - int error; /* Notify the kernel a devices partition table has been updated */ - while ((error = ioctl(fd, BLKRRPART)) != 0) { + while (ioctl(fd, BLKRRPART) != 0) { if ((--retry == 0) || (errno != EBUSY)) { (void) fprintf(stderr, "the kernel failed to rescan " "the partition table: %d\n", errno); @@ -1364,7 +1362,7 @@ efi_write(int fd, struct dk_gpt *vtoc) if (NBLOCKS(vtoc->efi_nparts, vtoc->efi_lbasize) < 34) { dk_ioc.dki_length = EFI_MIN_ARRAY_SIZE + vtoc->efi_lbasize; } else { - dk_ioc.dki_length = NBLOCKS(vtoc->efi_nparts, + dk_ioc.dki_length = (len_t)NBLOCKS(vtoc->efi_nparts, vtoc->efi_lbasize) * vtoc->efi_lbasize; } diff --git a/lib/libicp/Makefile.am b/lib/libicp/Makefile.am index b7f1d0e1b1e4..4ba55b2158bc 100644 --- a/lib/libicp/Makefile.am +++ b/lib/libicp/Makefile.am @@ -16,7 +16,6 @@ nodist_libicp_la_SOURCES = \ module/icp/algs/blake3/blake3.c \ module/icp/algs/blake3/blake3_generic.c \ module/icp/algs/blake3/blake3_impl.c \ - module/icp/algs/blake3/blake3_x86-64.c \ module/icp/algs/edonr/edonr.c \ module/icp/algs/modes/modes.c \ module/icp/algs/modes/cbc.c \ @@ -26,7 +25,9 @@ nodist_libicp_la_SOURCES = \ module/icp/algs/modes/ctr.c \ module/icp/algs/modes/ccm.c \ module/icp/algs/modes/ecb.c \ - module/icp/algs/sha2/sha2.c \ + module/icp/algs/sha2/sha2_generic.c \ + module/icp/algs/sha2/sha256_impl.c \ + module/icp/algs/sha2/sha512_impl.c \ module/icp/algs/skein/skein.c \ module/icp/algs/skein/skein_block.c \ module/icp/algs/skein/skein_iv.c \ @@ -38,18 +39,31 @@ nodist_libicp_la_SOURCES = \ module/icp/core/kcf_prov_lib.c \ module/icp/core/kcf_callprov.c \ module/icp/core/kcf_mech_tabs.c \ - module/icp/core/kcf_prov_tabs.c + module/icp/core/kcf_prov_tabs.c \ + module/zfs/zfs_impl.c if TARGET_CPU_AARCH64 nodist_libicp_la_SOURCES += \ module/icp/asm-aarch64/blake3/b3_aarch64_sse2.S \ - module/icp/asm-aarch64/blake3/b3_aarch64_sse41.S + module/icp/asm-aarch64/blake3/b3_aarch64_sse41.S \ + module/icp/asm-aarch64/sha2/sha256-armv8.S \ + module/icp/asm-aarch64/sha2/sha512-armv8.S +endif + +if TARGET_CPU_ARM +nodist_libicp_la_SOURCES += \ + module/icp/asm-arm/sha2/sha256-armv7.S \ + module/icp/asm-arm/sha2/sha512-armv7.S endif if TARGET_CPU_POWERPC nodist_libicp_la_SOURCES += \ module/icp/asm-ppc64/blake3/b3_ppc64le_sse2.S \ - module/icp/asm-ppc64/blake3/b3_ppc64le_sse41.S + module/icp/asm-ppc64/blake3/b3_ppc64le_sse41.S \ + module/icp/asm-ppc64/sha2/sha256-ppc.S \ + module/icp/asm-ppc64/sha2/sha512-ppc.S \ + module/icp/asm-ppc64/sha2/sha256-p8.S \ + module/icp/asm-ppc64/sha2/sha512-p8.S endif if TARGET_CPU_X86_64 @@ -60,10 +74,11 @@ nodist_libicp_la_SOURCES += \ module/icp/asm-x86_64/modes/gcm_pclmulqdq.S \ module/icp/asm-x86_64/modes/aesni-gcm-x86_64.S \ module/icp/asm-x86_64/modes/ghash-x86_64.S \ - module/icp/asm-x86_64/sha2/sha256_impl.S \ - module/icp/asm-x86_64/sha2/sha512_impl.S \ + module/icp/asm-x86_64/sha2/sha256-x86_64.S \ + module/icp/asm-x86_64/sha2/sha512-x86_64.S \ module/icp/asm-x86_64/blake3/blake3_avx2.S \ module/icp/asm-x86_64/blake3/blake3_avx512.S \ module/icp/asm-x86_64/blake3/blake3_sse2.S \ module/icp/asm-x86_64/blake3/blake3_sse41.S endif + diff --git a/lib/libnvpair/libnvpair.abi b/lib/libnvpair/libnvpair.abi index de15237da583..ef92f3e9bda6 100644 --- a/lib/libnvpair/libnvpair.abi +++ b/lib/libnvpair/libnvpair.abi @@ -1,5 +1,6 @@ <abi-corpus version='2.0' architecture='elf-amd-x86_64' soname='libnvpair.so.3'> <elf-needed> + <dependency name='libtirpc.so.3'/> <dependency name='libc.so.6'/> </elf-needed> <elf-function-symbols> @@ -234,1106 +235,7 @@ <elf-symbol name='nv_alloc_nosleep' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='nv_fixed_ops' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-variable-symbols> - <abi-instr address-size='64' path='../../module/nvpair/fnvpair.c' language='LANG_C99'> - <function-decl name='fnvlist_alloc' mangled-name='fnvlist_alloc' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_alloc'> - <return type-id='5ce45b60'/> - </function-decl> - <function-decl name='fnvlist_free' mangled-name='fnvlist_free' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_free'> - <parameter type-id='5ce45b60' name='nvl'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_size' mangled-name='fnvlist_size' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_size'> - <parameter type-id='5ce45b60' name='nvl'/> - <return type-id='b59d7dce'/> - </function-decl> - <function-decl name='fnvlist_pack' mangled-name='fnvlist_pack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_pack'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='78c01427' name='sizep'/> - <return type-id='26a90f95'/> - </function-decl> - <function-decl name='fnvlist_pack_free' mangled-name='fnvlist_pack_free' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_pack_free'> - <parameter type-id='26a90f95' name='pack'/> - <parameter type-id='b59d7dce' name='size'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_unpack' mangled-name='fnvlist_unpack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_unpack'> - <parameter type-id='26a90f95' name='buf'/> - <parameter type-id='b59d7dce' name='buflen'/> - <return type-id='5ce45b60'/> - </function-decl> - <function-decl name='fnvlist_dup' mangled-name='fnvlist_dup' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_dup'> - <parameter type-id='22cce67b' name='nvl'/> - <return type-id='5ce45b60'/> - </function-decl> - <function-decl name='fnvlist_merge' mangled-name='fnvlist_merge' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_merge'> - <parameter type-id='5ce45b60' name='dst'/> - <parameter type-id='5ce45b60' name='src'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_num_pairs' mangled-name='fnvlist_num_pairs' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_num_pairs'> - <parameter type-id='5ce45b60' name='nvl'/> - <return type-id='b59d7dce'/> - </function-decl> - <function-decl name='fnvlist_add_boolean' mangled-name='fnvlist_add_boolean' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_boolean'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_boolean_value' mangled-name='fnvlist_add_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_boolean_value'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='c19b74c3' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_byte' mangled-name='fnvlist_add_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_byte'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='d8bf0010' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_int8' mangled-name='fnvlist_add_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int8'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='ee31ee44' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_uint8' mangled-name='fnvlist_add_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint8'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='b96825af' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_int16' mangled-name='fnvlist_add_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int16'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='23bd8cb5' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_uint16' mangled-name='fnvlist_add_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint16'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='149c6638' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_int32' mangled-name='fnvlist_add_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int32'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='3ff5601b' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_uint32' mangled-name='fnvlist_add_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint32'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='8f92235e' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_int64' mangled-name='fnvlist_add_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int64'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='9da381c4' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_uint64' mangled-name='fnvlist_add_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint64'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='9c313c2d' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_string' mangled-name='fnvlist_add_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_string'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='80f4b756' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_nvlist' mangled-name='fnvlist_add_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_nvlist'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='5ce45b60' name='val'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_nvpair' mangled-name='fnvlist_add_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_nvpair'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='3fa542f0' name='pair'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_boolean_array' mangled-name='fnvlist_add_boolean_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_boolean_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='c5f6c15b' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_byte_array' mangled-name='fnvlist_add_byte_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_byte_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='d1db479e' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_int8_array' mangled-name='fnvlist_add_int8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int8_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='a06445da' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_uint8_array' mangled-name='fnvlist_add_uint8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint8_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='9f7200cf' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_int16_array' mangled-name='fnvlist_add_int16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int16_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='a3eb883d' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_uint16_array' mangled-name='fnvlist_add_uint16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint16_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='1b7d11c6' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_int32_array' mangled-name='fnvlist_add_int32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int32_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='1f526493' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_uint32_array' mangled-name='fnvlist_add_uint32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint32_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='a6798dcc' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_int64_array' mangled-name='fnvlist_add_int64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int64_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='505bed1a' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_uint64_array' mangled-name='fnvlist_add_uint64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint64_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='713a56f5' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_string_array' mangled-name='fnvlist_add_string_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_string_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='13956559' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_add_nvlist_array' mangled-name='fnvlist_add_nvlist_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_nvlist_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='3bbfee2e' name='val'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_remove' mangled-name='fnvlist_remove' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_remove'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_remove_nvpair' mangled-name='fnvlist_remove_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_remove_nvpair'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='3fa542f0' name='pair'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fnvlist_lookup_nvpair' mangled-name='fnvlist_lookup_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_nvpair'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='3fa542f0'/> - </function-decl> - <function-decl name='fnvlist_lookup_boolean' mangled-name='fnvlist_lookup_boolean' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_boolean'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='fnvlist_lookup_boolean_value' mangled-name='fnvlist_lookup_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_boolean_value'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='fnvlist_lookup_byte' mangled-name='fnvlist_lookup_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_byte'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='d8bf0010'/> - </function-decl> - <function-decl name='fnvlist_lookup_int8' mangled-name='fnvlist_lookup_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int8'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='ee31ee44'/> - </function-decl> - <function-decl name='fnvlist_lookup_int16' mangled-name='fnvlist_lookup_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int16'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='23bd8cb5'/> - </function-decl> - <function-decl name='fnvlist_lookup_int32' mangled-name='fnvlist_lookup_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int32'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='3ff5601b'/> - </function-decl> - <function-decl name='fnvlist_lookup_int64' mangled-name='fnvlist_lookup_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int64'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='9da381c4'/> - </function-decl> - <function-decl name='fnvlist_lookup_uint8' mangled-name='fnvlist_lookup_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint8'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='b96825af'/> - </function-decl> - <function-decl name='fnvlist_lookup_uint16' mangled-name='fnvlist_lookup_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint16'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='149c6638'/> - </function-decl> - <function-decl name='fnvlist_lookup_uint32' mangled-name='fnvlist_lookup_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint32'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='8f92235e'/> - </function-decl> - <function-decl name='fnvlist_lookup_uint64' mangled-name='fnvlist_lookup_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint64'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='9c313c2d'/> - </function-decl> - <function-decl name='fnvlist_lookup_string' mangled-name='fnvlist_lookup_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_string'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='26a90f95'/> - </function-decl> - <function-decl name='fnvlist_lookup_nvlist' mangled-name='fnvlist_lookup_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_nvlist'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='5ce45b60'/> - </function-decl> - <function-decl name='fnvlist_lookup_boolean_array' mangled-name='fnvlist_lookup_boolean_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_boolean_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='37e3bd22'/> - </function-decl> - <function-decl name='fnvlist_lookup_byte_array' mangled-name='fnvlist_lookup_byte_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_byte_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='45b65157'/> - </function-decl> - <function-decl name='fnvlist_lookup_int8_array' mangled-name='fnvlist_lookup_int8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int8_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='256d5229'/> - </function-decl> - <function-decl name='fnvlist_lookup_uint8_array' mangled-name='fnvlist_lookup_uint8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint8_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='ae3e8ca6'/> - </function-decl> - <function-decl name='fnvlist_lookup_int16_array' mangled-name='fnvlist_lookup_int16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int16_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='f76f73d0'/> - </function-decl> - <function-decl name='fnvlist_lookup_uint16_array' mangled-name='fnvlist_lookup_uint16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint16_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='8a121f49'/> - </function-decl> - <function-decl name='fnvlist_lookup_int32_array' mangled-name='fnvlist_lookup_int32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int32_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='4aafb922'/> - </function-decl> - <function-decl name='fnvlist_lookup_uint32_array' mangled-name='fnvlist_lookup_uint32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint32_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='90421557'/> - </function-decl> - <function-decl name='fnvlist_lookup_int64_array' mangled-name='fnvlist_lookup_int64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int64_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='cb785ebf'/> - </function-decl> - <function-decl name='fnvlist_lookup_uint64_array' mangled-name='fnvlist_lookup_uint64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint64_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='5d6479ae'/> - </function-decl> - <function-decl name='fnvpair_value_boolean_value' mangled-name='fnvpair_value_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_boolean_value'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='fnvpair_value_byte' mangled-name='fnvpair_value_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_byte'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='d8bf0010'/> - </function-decl> - <function-decl name='fnvpair_value_int8' mangled-name='fnvpair_value_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_int8'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='ee31ee44'/> - </function-decl> - <function-decl name='fnvpair_value_int16' mangled-name='fnvpair_value_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_int16'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='23bd8cb5'/> - </function-decl> - <function-decl name='fnvpair_value_int32' mangled-name='fnvpair_value_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_int32'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='3ff5601b'/> - </function-decl> - <function-decl name='fnvpair_value_int64' mangled-name='fnvpair_value_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_int64'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='9da381c4'/> - </function-decl> - <function-decl name='fnvpair_value_uint8' mangled-name='fnvpair_value_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_uint8'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='b96825af'/> - </function-decl> - <function-decl name='fnvpair_value_uint16' mangled-name='fnvpair_value_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_uint16'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='149c6638'/> - </function-decl> - <function-decl name='fnvpair_value_uint32' mangled-name='fnvpair_value_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_uint32'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='8f92235e'/> - </function-decl> - <function-decl name='fnvpair_value_uint64' mangled-name='fnvpair_value_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_uint64'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='9c313c2d'/> - </function-decl> - <function-decl name='fnvpair_value_string' mangled-name='fnvpair_value_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_string'> - <parameter type-id='3fa542f0' name='nvp'/> - <return type-id='26a90f95'/> - </function-decl> - <function-decl name='fnvpair_value_nvlist' mangled-name='fnvpair_value_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_nvlist'> - <parameter type-id='3fa542f0' name='nvp'/> - <return type-id='5ce45b60'/> - </function-decl> - </abi-instr> - <abi-instr address-size='64' path='../../module/nvpair/nvpair.c' language='LANG_C99'> - <pointer-type-def type-id='37e3bd22' size-in-bits='64' id='03829398'/> - <pointer-type-def type-id='9b23c9ad' size-in-bits='64' id='c0563f85'/> - <qualified-type-def type-id='c19b74c3' const='yes' id='12373e33'/> - <pointer-type-def type-id='12373e33' size-in-bits='64' id='c5f6c15b'/> - <qualified-type-def type-id='80f4b756' const='yes' id='b99c00c9'/> - <pointer-type-def type-id='b99c00c9' size-in-bits='64' id='13956559'/> - <qualified-type-def type-id='23bd8cb5' const='yes' id='75f7b0c5'/> - <pointer-type-def type-id='75f7b0c5' size-in-bits='64' id='a3eb883d'/> - <qualified-type-def type-id='3ff5601b' const='yes' id='922df12b'/> - <pointer-type-def type-id='922df12b' size-in-bits='64' id='1f526493'/> - <qualified-type-def type-id='9da381c4' const='yes' id='f07b7694'/> - <pointer-type-def type-id='f07b7694' size-in-bits='64' id='505bed1a'/> - <qualified-type-def type-id='ee31ee44' const='yes' id='721c32d4'/> - <pointer-type-def type-id='721c32d4' size-in-bits='64' id='a06445da'/> - <qualified-type-def type-id='8e8d4be3' const='yes' id='693c3853'/> - <pointer-type-def type-id='693c3853' size-in-bits='64' id='22cce67b'/> - <qualified-type-def type-id='22cce67b' const='yes' id='d2816df0'/> - <pointer-type-def type-id='d2816df0' size-in-bits='64' id='3bbfee2e'/> - <qualified-type-def type-id='57928edf' const='yes' id='642ee20f'/> - <pointer-type-def type-id='642ee20f' size-in-bits='64' id='dace003f'/> - <qualified-type-def type-id='d8bf0010' const='yes' id='a9125480'/> - <pointer-type-def type-id='a9125480' size-in-bits='64' id='d1db479e'/> - <qualified-type-def type-id='149c6638' const='yes' id='b01a5ac8'/> - <pointer-type-def type-id='b01a5ac8' size-in-bits='64' id='1b7d11c6'/> - <qualified-type-def type-id='8f92235e' const='yes' id='b9930aae'/> - <pointer-type-def type-id='b9930aae' size-in-bits='64' id='a6798dcc'/> - <qualified-type-def type-id='9c313c2d' const='yes' id='c3b7ba7d'/> - <pointer-type-def type-id='c3b7ba7d' size-in-bits='64' id='713a56f5'/> - <qualified-type-def type-id='b96825af' const='yes' id='2b61797f'/> - <pointer-type-def type-id='2b61797f' size-in-bits='64' id='9f7200cf'/> - <pointer-type-def type-id='a0eb0f08' size-in-bits='64' id='7408d286'/> - <pointer-type-def type-id='cebdd548' size-in-bits='64' id='e379e62d'/> - <pointer-type-def type-id='95e97e5e' size-in-bits='64' id='7292109c'/> - <pointer-type-def type-id='f76f73d0' size-in-bits='64' id='7e73928e'/> - <pointer-type-def type-id='4aafb922' size-in-bits='64' id='9aa04798'/> - <pointer-type-def type-id='cb785ebf' size-in-bits='64' id='e37ce48f'/> - <pointer-type-def type-id='256d5229' size-in-bits='64' id='ee181ab9'/> - <pointer-type-def type-id='857bb57e' size-in-bits='64' id='75be733c'/> - <pointer-type-def type-id='3fa542f0' size-in-bits='64' id='0b283d2e'/> - <pointer-type-def type-id='b59d7dce' size-in-bits='64' id='78c01427'/> - <pointer-type-def type-id='45b65157' size-in-bits='64' id='3b0247c7'/> - <pointer-type-def type-id='8a121f49' size-in-bits='64' id='bd8768d9'/> - <pointer-type-def type-id='90421557' size-in-bits='64' id='9507d3c7'/> - <pointer-type-def type-id='5d6479ae' size-in-bits='64' id='892b4acc'/> - <pointer-type-def type-id='ae3e8ca6' size-in-bits='64' id='d8774064'/> - <pointer-type-def type-id='3502e3ff' size-in-bits='64' id='4dd26a40'/> - <function-decl name='nv_alloc_init' mangled-name='nv_alloc_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nv_alloc_init'> - <parameter type-id='11871392' name='nva'/> - <parameter type-id='ee1d4944' name='nvo'/> - <parameter is-variadic='yes'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nv_alloc_reset' mangled-name='nv_alloc_reset' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nv_alloc_reset'> - <parameter type-id='11871392' name='nva'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='nv_alloc_fini' mangled-name='nv_alloc_fini' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nv_alloc_fini'> - <parameter type-id='11871392' name='nva'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='nvlist_lookup_nv_alloc' mangled-name='nvlist_lookup_nv_alloc' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_nv_alloc'> - <parameter type-id='5ce45b60' name='nvl'/> - <return type-id='11871392'/> - </function-decl> - <function-decl name='nvlist_nvflag' mangled-name='nvlist_nvflag' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_nvflag'> - <parameter type-id='5ce45b60' name='nvl'/> - <return type-id='3502e3ff'/> - </function-decl> - <function-decl name='nvlist_alloc' mangled-name='nvlist_alloc' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_alloc'> - <parameter type-id='857bb57e' name='nvlp'/> - <parameter type-id='3502e3ff' name='nvflag'/> - <parameter type-id='95e97e5e' name='kmflag'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_xalloc' mangled-name='nvlist_xalloc' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_xalloc'> - <parameter type-id='857bb57e' name='nvlp'/> - <parameter type-id='3502e3ff' name='nvflag'/> - <parameter type-id='11871392' name='nva'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_free' mangled-name='nvlist_free' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_free'> - <parameter type-id='5ce45b60' name='nvl'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='nvlist_dup' mangled-name='nvlist_dup' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_dup'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='857bb57e' name='nvlp'/> - <parameter type-id='95e97e5e' name='kmflag'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_xdup' mangled-name='nvlist_xdup' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_xdup'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='857bb57e' name='nvlp'/> - <parameter type-id='11871392' name='nva'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_remove_all' mangled-name='nvlist_remove_all' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_remove_all'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_remove' mangled-name='nvlist_remove' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_remove'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='8d0687d2' name='type'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_remove_nvpair' mangled-name='nvlist_remove_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_remove_nvpair'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='3fa542f0' name='nvp'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_boolean' mangled-name='nvlist_add_boolean' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_boolean'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_boolean_value' mangled-name='nvlist_add_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_boolean_value'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='c19b74c3' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_byte' mangled-name='nvlist_add_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_byte'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='d8bf0010' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_int8' mangled-name='nvlist_add_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int8'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='ee31ee44' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_uint8' mangled-name='nvlist_add_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint8'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='b96825af' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_int16' mangled-name='nvlist_add_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int16'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='23bd8cb5' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_uint16' mangled-name='nvlist_add_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint16'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='149c6638' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_int32' mangled-name='nvlist_add_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int32'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='3ff5601b' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_uint32' mangled-name='nvlist_add_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint32'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='8f92235e' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_int64' mangled-name='nvlist_add_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int64'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='9da381c4' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_uint64' mangled-name='nvlist_add_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint64'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='9c313c2d' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_double' mangled-name='nvlist_add_double' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_double'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='a0eb0f08' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_string' mangled-name='nvlist_add_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_string'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='80f4b756' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_boolean_array' mangled-name='nvlist_add_boolean_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_boolean_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='c5f6c15b' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_byte_array' mangled-name='nvlist_add_byte_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_byte_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='d1db479e' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_int8_array' mangled-name='nvlist_add_int8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int8_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='a06445da' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_uint8_array' mangled-name='nvlist_add_uint8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint8_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='9f7200cf' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_int16_array' mangled-name='nvlist_add_int16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int16_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='a3eb883d' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_uint16_array' mangled-name='nvlist_add_uint16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint16_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='1b7d11c6' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_int32_array' mangled-name='nvlist_add_int32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int32_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='1f526493' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_uint32_array' mangled-name='nvlist_add_uint32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint32_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='a6798dcc' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_int64_array' mangled-name='nvlist_add_int64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int64_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='505bed1a' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_uint64_array' mangled-name='nvlist_add_uint64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint64_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='713a56f5' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_string_array' mangled-name='nvlist_add_string_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_string_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='13956559' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_hrtime' mangled-name='nvlist_add_hrtime' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_hrtime'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='cebdd548' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_nvlist' mangled-name='nvlist_add_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_nvlist'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='22cce67b' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_nvlist_array' mangled-name='nvlist_add_nvlist_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_nvlist_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='3bbfee2e' name='a'/> - <parameter type-id='3502e3ff' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_next_nvpair' mangled-name='nvlist_next_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_next_nvpair'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='3fa542f0'/> - </function-decl> - <function-decl name='nvlist_prev_nvpair' mangled-name='nvlist_prev_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_prev_nvpair'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='3fa542f0'/> - </function-decl> - <function-decl name='nvlist_empty' mangled-name='nvlist_empty' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_empty'> - <parameter type-id='22cce67b' name='nvl'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='nvpair_name' mangled-name='nvpair_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_name'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='26a90f95'/> - </function-decl> - <function-decl name='nvpair_type' mangled-name='nvpair_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_type'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='8d0687d2'/> - </function-decl> - <function-decl name='nvpair_type_is_array' mangled-name='nvpair_type_is_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_type_is_array'> - <parameter type-id='dace003f' name='nvp'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_boolean' mangled-name='nvlist_lookup_boolean' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_boolean'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_boolean_value' mangled-name='nvlist_lookup_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_boolean_value'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='37e3bd22' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_byte' mangled-name='nvlist_lookup_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_byte'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='45b65157' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_int8' mangled-name='nvlist_lookup_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int8'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='256d5229' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_uint8' mangled-name='nvlist_lookup_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint8'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='ae3e8ca6' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_int16' mangled-name='nvlist_lookup_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int16'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='f76f73d0' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_uint16' mangled-name='nvlist_lookup_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint16'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='8a121f49' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_int32' mangled-name='nvlist_lookup_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int32'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='4aafb922' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_uint32' mangled-name='nvlist_lookup_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint32'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='90421557' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_int64' mangled-name='nvlist_lookup_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int64'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='cb785ebf' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_uint64' mangled-name='nvlist_lookup_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint64'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='5d6479ae' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_double' mangled-name='nvlist_lookup_double' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_double'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='7408d286' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_string' mangled-name='nvlist_lookup_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_string'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='9b23c9ad' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_nvlist' mangled-name='nvlist_lookup_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_nvlist'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='857bb57e' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_boolean_array' mangled-name='nvlist_lookup_boolean_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_boolean_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='03829398' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_byte_array' mangled-name='nvlist_lookup_byte_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_byte_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='3b0247c7' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_int8_array' mangled-name='nvlist_lookup_int8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int8_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='ee181ab9' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_uint8_array' mangled-name='nvlist_lookup_uint8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint8_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='d8774064' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_int16_array' mangled-name='nvlist_lookup_int16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int16_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='7e73928e' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_uint16_array' mangled-name='nvlist_lookup_uint16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint16_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='bd8768d9' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_int32_array' mangled-name='nvlist_lookup_int32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int32_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='9aa04798' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_uint32_array' mangled-name='nvlist_lookup_uint32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint32_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='9507d3c7' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_int64_array' mangled-name='nvlist_lookup_int64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int64_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='e37ce48f' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_uint64_array' mangled-name='nvlist_lookup_uint64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint64_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='892b4acc' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_string_array' mangled-name='nvlist_lookup_string_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_string_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='c0563f85' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_nvlist_array' mangled-name='nvlist_lookup_nvlist_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_nvlist_array'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='75be733c' name='a'/> - <parameter type-id='4dd26a40' name='n'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_hrtime' mangled-name='nvlist_lookup_hrtime' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_hrtime'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='e379e62d' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_pairs' mangled-name='nvlist_lookup_pairs' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_pairs'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='95e97e5e' name='flag'/> - <parameter is-variadic='yes'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_nvpair' mangled-name='nvlist_lookup_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_nvpair'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='0b283d2e' name='ret'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_lookup_nvpair_embedded_index' mangled-name='nvlist_lookup_nvpair_embedded_index' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_nvpair_embedded_index'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='0b283d2e' name='ret'/> - <parameter type-id='7292109c' name='ip'/> - <parameter type-id='9b23c9ad' name='ep'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_exists' mangled-name='nvlist_exists' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_exists'> - <parameter type-id='22cce67b' name='nvl'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='nvpair_value_boolean_value' mangled-name='nvpair_value_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_boolean_value'> - <parameter type-id='dace003f' name='nvp'/> - <parameter type-id='37e3bd22' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_byte' mangled-name='nvpair_value_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_byte'> - <parameter type-id='dace003f' name='nvp'/> - <parameter type-id='45b65157' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_int8' mangled-name='nvpair_value_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int8'> - <parameter type-id='dace003f' name='nvp'/> - <parameter type-id='256d5229' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_uint8' mangled-name='nvpair_value_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint8'> - <parameter type-id='dace003f' name='nvp'/> - <parameter type-id='ae3e8ca6' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_int16' mangled-name='nvpair_value_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int16'> - <parameter type-id='dace003f' name='nvp'/> - <parameter type-id='f76f73d0' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_uint16' mangled-name='nvpair_value_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint16'> - <parameter type-id='dace003f' name='nvp'/> - <parameter type-id='8a121f49' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_int32' mangled-name='nvpair_value_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int32'> - <parameter type-id='dace003f' name='nvp'/> - <parameter type-id='4aafb922' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_uint32' mangled-name='nvpair_value_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint32'> - <parameter type-id='dace003f' name='nvp'/> - <parameter type-id='90421557' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_int64' mangled-name='nvpair_value_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int64'> - <parameter type-id='dace003f' name='nvp'/> - <parameter type-id='cb785ebf' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_uint64' mangled-name='nvpair_value_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint64'> - <parameter type-id='dace003f' name='nvp'/> - <parameter type-id='5d6479ae' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_double' mangled-name='nvpair_value_double' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_double'> - <parameter type-id='dace003f' name='nvp'/> - <parameter type-id='7408d286' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_string' mangled-name='nvpair_value_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_string'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='9b23c9ad' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_nvlist' mangled-name='nvpair_value_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_nvlist'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='857bb57e' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_boolean_array' mangled-name='nvpair_value_boolean_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_boolean_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='03829398' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_byte_array' mangled-name='nvpair_value_byte_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_byte_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='3b0247c7' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_int8_array' mangled-name='nvpair_value_int8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int8_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='ee181ab9' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_uint8_array' mangled-name='nvpair_value_uint8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint8_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='d8774064' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_int16_array' mangled-name='nvpair_value_int16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int16_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='7e73928e' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_uint16_array' mangled-name='nvpair_value_uint16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint16_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='bd8768d9' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_int32_array' mangled-name='nvpair_value_int32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int32_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='9aa04798' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_uint32_array' mangled-name='nvpair_value_uint32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint32_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='9507d3c7' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_int64_array' mangled-name='nvpair_value_int64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int64_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='e37ce48f' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_uint64_array' mangled-name='nvpair_value_uint64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint64_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='892b4acc' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_string_array' mangled-name='nvpair_value_string_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_string_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='c0563f85' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_nvlist_array' mangled-name='nvpair_value_nvlist_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_nvlist_array'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='75be733c' name='val'/> - <parameter type-id='4dd26a40' name='nelem'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvpair_value_hrtime' mangled-name='nvpair_value_hrtime' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_hrtime'> - <parameter type-id='3fa542f0' name='nvp'/> - <parameter type-id='e379e62d' name='val'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_add_nvpair' mangled-name='nvlist_add_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_nvpair'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='3fa542f0' name='nvp'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_merge' mangled-name='nvlist_merge' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_merge'> - <parameter type-id='5ce45b60' name='dst'/> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='95e97e5e' name='flag'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_size' mangled-name='nvlist_size' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_size'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='78c01427' name='size'/> - <parameter type-id='95e97e5e' name='encoding'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_pack' mangled-name='nvlist_pack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_pack'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='9b23c9ad' name='bufp'/> - <parameter type-id='78c01427' name='buflen'/> - <parameter type-id='95e97e5e' name='encoding'/> - <parameter type-id='95e97e5e' name='kmflag'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_xpack' mangled-name='nvlist_xpack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_xpack'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='9b23c9ad' name='bufp'/> - <parameter type-id='78c01427' name='buflen'/> - <parameter type-id='95e97e5e' name='encoding'/> - <parameter type-id='11871392' name='nva'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_unpack' mangled-name='nvlist_unpack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_unpack'> - <parameter type-id='26a90f95' name='buf'/> - <parameter type-id='b59d7dce' name='buflen'/> - <parameter type-id='857bb57e' name='nvlp'/> - <parameter type-id='95e97e5e' name='kmflag'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='nvlist_xunpack' mangled-name='nvlist_xunpack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_xunpack'> - <parameter type-id='26a90f95' name='buf'/> - <parameter type-id='b59d7dce' name='buflen'/> - <parameter type-id='857bb57e' name='nvlp'/> - <parameter type-id='11871392' name='nva'/> - <return type-id='95e97e5e'/> - </function-decl> - </abi-instr> - <abi-instr address-size='64' path='../../module/nvpair/nvpair_alloc_fixed.c' language='LANG_C99'> - <qualified-type-def type-id='ee1d4944' const='yes' id='4b95388f'/> - <var-decl name='nv_fixed_ops' type-id='4b95388f' mangled-name='nv_fixed_ops' visibility='default' elf-symbol-id='nv_fixed_ops'/> - </abi-instr> - <abi-instr address-size='64' path='libnvpair.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libnvpair/libnvpair.c' language='LANG_C99'> <type-decl name='char' size-in-bits='8' id='a84c031d'/> <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='8' id='89feb1ec'> <subrange length='1' type-id='7359adad' id='52f813b4'/> @@ -1341,6 +243,9 @@ <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='160' id='664ac0b7'> <subrange length='20' type-id='7359adad' id='fdca39cf'/> </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='infinite' id='e84913bd'> + <subrange length='infinite' type-id='7359adad' id='031f2035'/> + </array-type-def> <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> @@ -1419,6 +324,9 @@ <data-member access='public' layout-offset-in-bits='96'> <var-decl name='nvp_type' type-id='8d0687d2' visibility='default'/> </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='nvp_name' type-id='e84913bd' visibility='default'/> + </data-member> </class-decl> <typedef-decl name='nvpair_t' type-id='1c34e459' id='57928edf'/> <class-decl name='nvlist' size-in-bits='192' is-struct='yes' visibility='default' id='ac266fd9'> @@ -1448,6 +356,173 @@ <typedef-decl name='uchar_t' type-id='002ac4a6' id='d8bf0010'/> <typedef-decl name='uint_t' type-id='f0981eeb' id='3502e3ff'/> <typedef-decl name='hrtime_t' type-id='1eb56b1e' id='cebdd548'/> + <typedef-decl name='__re_long_size_t' type-id='7359adad' id='ba516949'/> + <typedef-decl name='reg_syntax_t' type-id='7359adad' id='1b72c3b3'/> + <class-decl name='re_pattern_buffer' size-in-bits='512' is-struct='yes' visibility='default' id='19fc9a8c'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='buffer' type-id='33976309' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='allocated' type-id='ba516949' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='used' type-id='ba516949' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='syntax' type-id='1b72c3b3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='fastmap' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='translate' type-id='cf536864' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='re_nsub' type-id='b59d7dce' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='can_be_null' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='449'> + <var-decl name='regs_allocated' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='451'> + <var-decl name='fastmap_accurate' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='452'> + <var-decl name='no_sub' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='453'> + <var-decl name='not_bol' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='454'> + <var-decl name='not_eol' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='455'> + <var-decl name='newline_anchor' type-id='f0981eeb' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='regex_t' type-id='19fc9a8c' id='aca3bac8'/> + <typedef-decl name='regoff_t' type-id='95e97e5e' id='54a2a2a8'/> + <class-decl name='regmatch_t' size-in-bits='64' is-struct='yes' naming-typedef-id='1b941664' visibility='default' id='4f932615'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='rm_so' type-id='54a2a2a8' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='rm_eo' type-id='54a2a2a8' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='regmatch_t' type-id='4f932615' id='1b941664'/> + <typedef-decl name='int8_t' type-id='2171a512' id='ee31ee44'/> + <typedef-decl name='int16_t' type-id='03896e23' id='23bd8cb5'/> + <typedef-decl name='int32_t' type-id='33f57a65' id='3ff5601b'/> + <typedef-decl name='int64_t' type-id='0c9942d2' id='9da381c4'/> + <typedef-decl name='uint8_t' type-id='c51d6389' id='b96825af'/> + <typedef-decl name='uint16_t' type-id='253c2d2a' id='149c6638'/> + <typedef-decl name='uint32_t' type-id='62f1140c' id='8f92235e'/> + <typedef-decl name='uint64_t' type-id='8910171f' id='9c313c2d'/> + <typedef-decl name='__int8_t' type-id='28577a57' id='2171a512'/> + <typedef-decl name='__uint8_t' type-id='002ac4a6' id='c51d6389'/> + <typedef-decl name='__int16_t' type-id='a2185560' id='03896e23'/> + <typedef-decl name='__uint16_t' type-id='8efea9e5' id='253c2d2a'/> + <typedef-decl name='__int32_t' type-id='95e97e5e' id='33f57a65'/> + <typedef-decl name='__uint32_t' type-id='f0981eeb' id='62f1140c'/> + <typedef-decl name='__int64_t' type-id='bd54fe1a' id='0c9942d2'/> + <typedef-decl name='__uint64_t' type-id='7359adad' id='8910171f'/> + <typedef-decl name='__off_t' type-id='bd54fe1a' id='79989e9c'/> + <typedef-decl name='__off64_t' type-id='bd54fe1a' id='724e4de6'/> + <typedef-decl name='FILE' type-id='ec1ed955' id='aa12d1ba'/> + <typedef-decl name='_IO_lock_t' type-id='48b5725f' id='bb4788fa'/> + <class-decl name='_IO_FILE' size-in-bits='1728' is-struct='yes' visibility='default' id='ec1ed955'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='_flags' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='_IO_read_ptr' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='_IO_read_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='_IO_read_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='_IO_write_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='_IO_write_ptr' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='_IO_write_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='_IO_buf_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='_IO_buf_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='_IO_save_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='640'> + <var-decl name='_IO_backup_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='704'> + <var-decl name='_IO_save_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='768'> + <var-decl name='_markers' type-id='e4c6fa61' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='832'> + <var-decl name='_chain' type-id='dca988a5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='896'> + <var-decl name='_fileno' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='928'> + <var-decl name='_flags2' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='960'> + <var-decl name='_old_offset' type-id='79989e9c' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1024'> + <var-decl name='_cur_column' type-id='8efea9e5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1040'> + <var-decl name='_vtable_offset' type-id='28577a57' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1048'> + <var-decl name='_shortbuf' type-id='89feb1ec' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1088'> + <var-decl name='_lock' type-id='cecf4ea7' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1152'> + <var-decl name='_offset' type-id='724e4de6' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1216'> + <var-decl name='_codecvt' type-id='570f8c59' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1280'> + <var-decl name='_wide_data' type-id='c65a1f29' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1344'> + <var-decl name='_freeres_list' type-id='dca988a5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1408'> + <var-decl name='_freeres_buf' type-id='eaa32e2f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1472'> + <var-decl name='__pad5' type-id='b59d7dce' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1536'> + <var-decl name='_mode' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1568'> + <var-decl name='_unused2' type-id='664ac0b7' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='size_t' type-id='7359adad' id='b59d7dce'/> <class-decl name='nvlist_printops' size-in-bits='3456' is-struct='yes' visibility='default' id='ebc6735b'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='print_boolean' type-id='e7f43f72' visibility='default'/> @@ -1629,7 +704,7 @@ </class-decl> <class-decl name='__anonymous_struct__12' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f7e'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='op' type-id='c0d0f877' visibility='default'/> + <var-decl name='op' type-id='bfc48fe4' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> <var-decl name='arg' type-id='eaa32e2f' visibility='default'/> @@ -1733,7 +808,7 @@ </class-decl> <class-decl name='__anonymous_struct__25' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f8b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='op' type-id='de20bf07' visibility='default'/> + <var-decl name='op' type-id='337f4a72' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> <var-decl name='arg' type-id='eaa32e2f' visibility='default'/> @@ -1779,177 +854,31 @@ <var-decl name='nvprt_custops' type-id='7be54adb' visibility='default'/> </data-member> </class-decl> - <typedef-decl name='__re_long_size_t' type-id='7359adad' id='ba516949'/> - <typedef-decl name='reg_syntax_t' type-id='7359adad' id='1b72c3b3'/> - <class-decl name='re_pattern_buffer' size-in-bits='512' is-struct='yes' visibility='default' id='19fc9a8c'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='buffer' type-id='33976309' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='allocated' type-id='ba516949' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='used' type-id='ba516949' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='syntax' type-id='1b72c3b3' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='fastmap' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='translate' type-id='cf536864' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='re_nsub' type-id='b59d7dce' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='can_be_null' type-id='f0981eeb' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='449'> - <var-decl name='regs_allocated' type-id='f0981eeb' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='451'> - <var-decl name='fastmap_accurate' type-id='f0981eeb' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='452'> - <var-decl name='no_sub' type-id='f0981eeb' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='453'> - <var-decl name='not_bol' type-id='f0981eeb' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='454'> - <var-decl name='not_eol' type-id='f0981eeb' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='455'> - <var-decl name='newline_anchor' type-id='f0981eeb' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='regex_t' type-id='19fc9a8c' id='aca3bac8'/> - <typedef-decl name='int8_t' type-id='2171a512' id='ee31ee44'/> - <typedef-decl name='int16_t' type-id='03896e23' id='23bd8cb5'/> - <typedef-decl name='int32_t' type-id='33f57a65' id='3ff5601b'/> - <typedef-decl name='int64_t' type-id='0c9942d2' id='9da381c4'/> - <typedef-decl name='uint8_t' type-id='c51d6389' id='b96825af'/> - <typedef-decl name='uint16_t' type-id='253c2d2a' id='149c6638'/> - <typedef-decl name='uint32_t' type-id='62f1140c' id='8f92235e'/> - <typedef-decl name='uint64_t' type-id='8910171f' id='9c313c2d'/> - <typedef-decl name='__int8_t' type-id='28577a57' id='2171a512'/> - <typedef-decl name='__uint8_t' type-id='002ac4a6' id='c51d6389'/> - <typedef-decl name='__int16_t' type-id='a2185560' id='03896e23'/> - <typedef-decl name='__uint16_t' type-id='8efea9e5' id='253c2d2a'/> - <typedef-decl name='__int32_t' type-id='95e97e5e' id='33f57a65'/> - <typedef-decl name='__uint32_t' type-id='f0981eeb' id='62f1140c'/> - <typedef-decl name='__int64_t' type-id='bd54fe1a' id='0c9942d2'/> - <typedef-decl name='__uint64_t' type-id='7359adad' id='8910171f'/> - <typedef-decl name='__off_t' type-id='bd54fe1a' id='79989e9c'/> - <typedef-decl name='__off64_t' type-id='bd54fe1a' id='724e4de6'/> - <typedef-decl name='FILE' type-id='ec1ed955' id='aa12d1ba'/> - <typedef-decl name='_IO_lock_t' type-id='48b5725f' id='bb4788fa'/> - <class-decl name='_IO_FILE' size-in-bits='1728' is-struct='yes' visibility='default' id='ec1ed955'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='_flags' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='_IO_read_ptr' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='_IO_read_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='_IO_read_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='_IO_write_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='_IO_write_ptr' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='_IO_write_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='_IO_buf_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='_IO_buf_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='_IO_save_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='_IO_backup_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='_IO_save_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='_markers' type-id='e4c6fa61' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='_chain' type-id='dca988a5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='896'> - <var-decl name='_fileno' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='928'> - <var-decl name='_flags2' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='_old_offset' type-id='79989e9c' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1024'> - <var-decl name='_cur_column' type-id='8efea9e5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1040'> - <var-decl name='_vtable_offset' type-id='28577a57' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1048'> - <var-decl name='_shortbuf' type-id='89feb1ec' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1088'> - <var-decl name='_lock' type-id='cecf4ea7' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1152'> - <var-decl name='_offset' type-id='724e4de6' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1216'> - <var-decl name='_codecvt' type-id='570f8c59' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='_wide_data' type-id='c65a1f29' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='_freeres_list' type-id='dca988a5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='_freeres_buf' type-id='eaa32e2f' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='__pad5' type-id='b59d7dce' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='_mode' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1568'> - <var-decl name='_unused2' type-id='664ac0b7' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='size_t' type-id='7359adad' id='b59d7dce'/> <pointer-type-def type-id='aa12d1ba' size-in-bits='64' id='822cd80b'/> + <qualified-type-def type-id='822cd80b' restrict='yes' id='e75a27e9'/> <pointer-type-def type-id='ec1ed955' size-in-bits='64' id='dca988a5'/> <pointer-type-def type-id='a4036571' size-in-bits='64' id='570f8c59'/> <pointer-type-def type-id='bb4788fa' size-in-bits='64' id='cecf4ea7'/> <pointer-type-def type-id='010ae0b9' size-in-bits='64' id='e4c6fa61'/> <pointer-type-def type-id='79bd3751' size-in-bits='64' id='c65a1f29'/> <pointer-type-def type-id='c19b74c3' size-in-bits='64' id='37e3bd22'/> + <pointer-type-def type-id='37e3bd22' size-in-bits='64' id='03829398'/> <pointer-type-def type-id='a84c031d' size-in-bits='64' id='26a90f95'/> - <pointer-type-def type-id='26a90f95' size-in-bits='64' id='9b23c9ad'/> <qualified-type-def type-id='a84c031d' const='yes' id='9b45d938'/> <pointer-type-def type-id='9b45d938' size-in-bits='64' id='80f4b756'/> + <qualified-type-def type-id='80f4b756' restrict='yes' id='9d26089a'/> + <pointer-type-def type-id='80f4b756' size-in-bits='64' id='7d3cd834'/> + <pointer-type-def type-id='7d3cd834' size-in-bits='64' id='44c8373a'/> + <qualified-type-def type-id='57928edf' const='yes' id='642ee20f'/> + <pointer-type-def type-id='642ee20f' size-in-bits='64' id='dace003f'/> + <qualified-type-def type-id='aca3bac8' const='yes' id='2498fd78'/> + <pointer-type-def type-id='2498fd78' size-in-bits='64' id='eed6c816'/> + <qualified-type-def type-id='eed6c816' restrict='yes' id='a431a9da'/> + <pointer-type-def type-id='a0eb0f08' size-in-bits='64' id='7408d286'/> + <pointer-type-def type-id='cebdd548' size-in-bits='64' id='e379e62d'/> <pointer-type-def type-id='9f88f76e' size-in-bits='64' id='7ef0e988'/> - <pointer-type-def type-id='c5bb1a2b' size-in-bits='64' id='c0d0f877'/> - <pointer-type-def type-id='573fea1b' size-in-bits='64' id='de20bf07'/> + <pointer-type-def type-id='889f3b42' size-in-bits='64' id='bfc48fe4'/> + <pointer-type-def type-id='49055dd8' size-in-bits='64' id='337f4a72'/> <pointer-type-def type-id='70284cc6' size-in-bits='64' id='3be4d568'/> <pointer-type-def type-id='700c3bca' size-in-bits='64' id='6d994334'/> <pointer-type-def type-id='18ac1860' size-in-bits='64' id='506ab59a'/> @@ -1975,8 +904,8 @@ <pointer-type-def type-id='3bd73b0c' size-in-bits='64' id='7e85a9b6'/> <pointer-type-def type-id='0d445e26' size-in-bits='64' id='330cc0d0'/> <pointer-type-def type-id='e4b89f30' size-in-bits='64' id='ed8aa8ba'/> - <pointer-type-def type-id='be7f4941' size-in-bits='64' id='2809de35'/> - <pointer-type-def type-id='fe5ae69d' size-in-bits='64' id='90d5edb9'/> + <pointer-type-def type-id='78e3bec8' size-in-bits='64' id='b38a1022'/> + <pointer-type-def type-id='a5193bb2' size-in-bits='64' id='6263eda4'/> <pointer-type-def type-id='2783af3c' size-in-bits='64' id='e44553b6'/> <pointer-type-def type-id='33c6e3d8' size-in-bits='64' id='1263777a'/> <pointer-type-def type-id='dadb9eca' size-in-bits='64' id='cbda43ac'/> @@ -2002,27 +931,254 @@ <pointer-type-def type-id='b2fbf64a' size-in-bits='64' id='470a7fd4'/> <pointer-type-def type-id='cc22d314' size-in-bits='64' id='eddda806'/> <pointer-type-def type-id='23bd8cb5' size-in-bits='64' id='f76f73d0'/> + <pointer-type-def type-id='f76f73d0' size-in-bits='64' id='7e73928e'/> <pointer-type-def type-id='3ff5601b' size-in-bits='64' id='4aafb922'/> + <pointer-type-def type-id='4aafb922' size-in-bits='64' id='9aa04798'/> <pointer-type-def type-id='9da381c4' size-in-bits='64' id='cb785ebf'/> + <pointer-type-def type-id='cb785ebf' size-in-bits='64' id='e37ce48f'/> <pointer-type-def type-id='ee31ee44' size-in-bits='64' id='256d5229'/> + <pointer-type-def type-id='256d5229' size-in-bits='64' id='ee181ab9'/> <pointer-type-def type-id='ebc6735b' size-in-bits='64' id='7be54adb'/> <pointer-type-def type-id='d2e8bad9' size-in-bits='64' id='196db161'/> <pointer-type-def type-id='8e8d4be3' size-in-bits='64' id='5ce45b60'/> <pointer-type-def type-id='5ce45b60' size-in-bits='64' id='857bb57e'/> + <pointer-type-def type-id='857bb57e' size-in-bits='64' id='75be733c'/> <pointer-type-def type-id='57928edf' size-in-bits='64' id='3fa542f0'/> <pointer-type-def type-id='b48d2441' size-in-bits='64' id='33976309'/> <pointer-type-def type-id='aca3bac8' size-in-bits='64' id='d33f11cb'/> + <pointer-type-def type-id='1b941664' size-in-bits='64' id='7e2979d5'/> + <qualified-type-def type-id='7e2979d5' restrict='yes' id='fc212857'/> <pointer-type-def type-id='d8bf0010' size-in-bits='64' id='45b65157'/> + <pointer-type-def type-id='45b65157' size-in-bits='64' id='3b0247c7'/> <pointer-type-def type-id='149c6638' size-in-bits='64' id='8a121f49'/> + <pointer-type-def type-id='8a121f49' size-in-bits='64' id='bd8768d9'/> <pointer-type-def type-id='8f92235e' size-in-bits='64' id='90421557'/> + <pointer-type-def type-id='90421557' size-in-bits='64' id='9507d3c7'/> <pointer-type-def type-id='9c313c2d' size-in-bits='64' id='5d6479ae'/> + <pointer-type-def type-id='5d6479ae' size-in-bits='64' id='892b4acc'/> <pointer-type-def type-id='b96825af' size-in-bits='64' id='ae3e8ca6'/> + <pointer-type-def type-id='ae3e8ca6' size-in-bits='64' id='d8774064'/> + <pointer-type-def type-id='3502e3ff' size-in-bits='64' id='4dd26a40'/> <pointer-type-def type-id='002ac4a6' size-in-bits='64' id='cf536864'/> <pointer-type-def type-id='48b5725f' size-in-bits='64' id='eaa32e2f'/> <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> <class-decl name='re_dfa_t' is-struct='yes' visibility='default' is-declaration-only='yes' id='b48d2441'/> + <function-decl name='nvlist_next_nvpair' mangled-name='nvlist_next_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_next_nvpair'> + <parameter type-id='5ce45b60'/> + <parameter type-id='dace003f'/> + <return type-id='3fa542f0'/> + </function-decl> + <function-decl name='nvpair_name' mangled-name='nvpair_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_name'> + <parameter type-id='dace003f'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='nvpair_type' mangled-name='nvpair_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_type'> + <parameter type-id='dace003f'/> + <return type-id='8d0687d2'/> + </function-decl> + <function-decl name='nvpair_type_is_array' mangled-name='nvpair_type_is_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_type_is_array'> + <parameter type-id='dace003f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_boolean_value' mangled-name='nvpair_value_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_boolean_value'> + <parameter type-id='dace003f'/> + <parameter type-id='37e3bd22'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_byte' mangled-name='nvpair_value_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_byte'> + <parameter type-id='dace003f'/> + <parameter type-id='45b65157'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_int8' mangled-name='nvpair_value_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int8'> + <parameter type-id='dace003f'/> + <parameter type-id='256d5229'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_uint8' mangled-name='nvpair_value_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint8'> + <parameter type-id='dace003f'/> + <parameter type-id='ae3e8ca6'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_int16' mangled-name='nvpair_value_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int16'> + <parameter type-id='dace003f'/> + <parameter type-id='f76f73d0'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_uint16' mangled-name='nvpair_value_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint16'> + <parameter type-id='dace003f'/> + <parameter type-id='8a121f49'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_int32' mangled-name='nvpair_value_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int32'> + <parameter type-id='dace003f'/> + <parameter type-id='4aafb922'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_uint32' mangled-name='nvpair_value_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint32'> + <parameter type-id='dace003f'/> + <parameter type-id='90421557'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_int64' mangled-name='nvpair_value_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int64'> + <parameter type-id='dace003f'/> + <parameter type-id='cb785ebf'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_uint64' mangled-name='nvpair_value_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint64'> + <parameter type-id='dace003f'/> + <parameter type-id='5d6479ae'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_string' mangled-name='nvpair_value_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_string'> + <parameter type-id='dace003f'/> + <parameter type-id='7d3cd834'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_nvlist' mangled-name='nvpair_value_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_nvlist'> + <parameter type-id='3fa542f0'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_boolean_array' mangled-name='nvpair_value_boolean_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_boolean_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='03829398'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_byte_array' mangled-name='nvpair_value_byte_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_byte_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='3b0247c7'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_int8_array' mangled-name='nvpair_value_int8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int8_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='ee181ab9'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_uint8_array' mangled-name='nvpair_value_uint8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint8_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='d8774064'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_int16_array' mangled-name='nvpair_value_int16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int16_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='7e73928e'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_uint16_array' mangled-name='nvpair_value_uint16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint16_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='bd8768d9'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_int32_array' mangled-name='nvpair_value_int32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int32_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='9aa04798'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_uint32_array' mangled-name='nvpair_value_uint32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint32_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='9507d3c7'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_int64_array' mangled-name='nvpair_value_int64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_int64_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='e37ce48f'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_uint64_array' mangled-name='nvpair_value_uint64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_uint64_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='892b4acc'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_string_array' mangled-name='nvpair_value_string_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_string_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='44c8373a'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_nvlist_array' mangled-name='nvpair_value_nvlist_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_nvlist_array'> + <parameter type-id='3fa542f0'/> + <parameter type-id='75be733c'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_hrtime' mangled-name='nvpair_value_hrtime' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_hrtime'> + <parameter type-id='3fa542f0'/> + <parameter type-id='e379e62d'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_double' mangled-name='nvpair_value_double' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_double'> + <parameter type-id='dace003f'/> + <parameter type-id='7408d286'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='dcgettext' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='regexec' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a431a9da'/> + <parameter type-id='9d26089a'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='fc212857'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='malloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='calloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='strcmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strcspn' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='strspn' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='__fprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__printf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='nvlist_prtctl_setdest' mangled-name='nvlist_prtctl_setdest' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_prtctl_setdest'> <parameter type-id='b0c1ff8d' name='pctl'/> <parameter type-id='822cd80b' name='fp'/> @@ -2130,7 +1286,7 @@ </function-decl> <function-decl name='nvlist_prtctlop_string' mangled-name='nvlist_prtctlop_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_prtctlop_string'> <parameter type-id='b0c1ff8d' name='pctl'/> - <parameter type-id='2809de35' name='func'/> + <parameter type-id='b38a1022' name='func'/> <parameter type-id='eaa32e2f' name='private'/> <return type-id='48b5725f'/> </function-decl> @@ -2208,7 +1364,7 @@ </function-decl> <function-decl name='nvlist_prtctlop_string_array' mangled-name='nvlist_prtctlop_string_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_prtctlop_string_array'> <parameter type-id='b0c1ff8d' name='pctl'/> - <parameter type-id='90d5edb9' name='func'/> + <parameter type-id='6263eda4' name='func'/> <parameter type-id='eaa32e2f' name='private'/> <return type-id='48b5725f'/> </function-decl> @@ -2243,16 +1399,16 @@ <function-decl name='nvpair_value_match_regex' mangled-name='nvpair_value_match_regex' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_match_regex'> <parameter type-id='3fa542f0' name='nvp'/> <parameter type-id='95e97e5e' name='ai'/> - <parameter type-id='26a90f95' name='value'/> + <parameter type-id='80f4b756' name='value'/> <parameter type-id='d33f11cb' name='value_regex'/> - <parameter type-id='9b23c9ad' name='ep'/> + <parameter type-id='7d3cd834' name='ep'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='nvpair_value_match' mangled-name='nvpair_value_match' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvpair_value_match'> <parameter type-id='3fa542f0' name='nvp'/> <parameter type-id='95e97e5e' name='ai'/> - <parameter type-id='26a90f95' name='value'/> - <parameter type-id='9b23c9ad' name='ep'/> + <parameter type-id='80f4b756' name='value'/> + <parameter type-id='7d3cd834' name='ep'/> <return type-id='95e97e5e'/> </function-decl> <function-type size-in-bits='64' id='9f88f76e'> @@ -2264,20 +1420,20 @@ <parameter type-id='3502e3ff'/> <return type-id='95e97e5e'/> </function-type> - <function-type size-in-bits='64' id='c5bb1a2b'> + <function-type size-in-bits='64' id='889f3b42'> <parameter type-id='196db161'/> <parameter type-id='eaa32e2f'/> <parameter type-id='5ce45b60'/> <parameter type-id='80f4b756'/> - <parameter type-id='26a90f95'/> + <parameter type-id='80f4b756'/> <return type-id='95e97e5e'/> </function-type> - <function-type size-in-bits='64' id='573fea1b'> + <function-type size-in-bits='64' id='49055dd8'> <parameter type-id='196db161'/> <parameter type-id='eaa32e2f'/> <parameter type-id='5ce45b60'/> <parameter type-id='80f4b756'/> - <parameter type-id='9b23c9ad'/> + <parameter type-id='7d3cd834'/> <parameter type-id='3502e3ff'/> <return type-id='95e97e5e'/> </function-type> @@ -2492,20 +1648,20 @@ <parameter type-id='3502e3ff'/> <return type-id='95e97e5e'/> </function-type> - <function-type size-in-bits='64' id='be7f4941'> + <function-type size-in-bits='64' id='78e3bec8'> <parameter type-id='b0c1ff8d'/> <parameter type-id='eaa32e2f'/> <parameter type-id='5ce45b60'/> <parameter type-id='80f4b756'/> - <parameter type-id='26a90f95'/> + <parameter type-id='80f4b756'/> <return type-id='95e97e5e'/> </function-type> - <function-type size-in-bits='64' id='fe5ae69d'> + <function-type size-in-bits='64' id='a5193bb2'> <parameter type-id='b0c1ff8d'/> <parameter type-id='eaa32e2f'/> <parameter type-id='5ce45b60'/> <parameter type-id='80f4b756'/> - <parameter type-id='9b23c9ad'/> + <parameter type-id='7d3cd834'/> <parameter type-id='3502e3ff'/> <return type-id='95e97e5e'/> </function-type> @@ -2712,14 +1868,106 @@ <return type-id='95e97e5e'/> </function-type> </abi-instr> - <abi-instr address-size='64' path='libnvpair_json.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libnvpair/libnvpair_json.c' language='LANG_C99'> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='32' id='8e0573fd'> + <subrange length='4' type-id='7359adad' id='16fe7105'/> + </array-type-def> + <class-decl name='__mbstate_t' size-in-bits='64' is-struct='yes' naming-typedef-id='55e5b2b5' visibility='default' id='87447a2e'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='__count' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='__value' type-id='ac5ab595' visibility='default'/> + </data-member> + </class-decl> + <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' id='ac5ab595'> + <data-member access='public'> + <var-decl name='__wch' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='__wchb' type-id='8e0573fd' visibility='default'/> + </data-member> + </union-decl> + <typedef-decl name='__mbstate_t' type-id='87447a2e' id='55e5b2b5'/> + <typedef-decl name='mbstate_t' type-id='55e5b2b5' id='3d7d8cbf'/> + <typedef-decl name='wchar_t' type-id='95e97e5e' id='928221d2'/> + <pointer-type-def type-id='3d7d8cbf' size-in-bits='64' id='a68021ce'/> + <qualified-type-def type-id='a68021ce' restrict='yes' id='03aaab72'/> + <pointer-type-def type-id='928221d2' size-in-bits='64' id='323d93c1'/> + <qualified-type-def type-id='323d93c1' restrict='yes' id='f1358bc3'/> + <function-decl name='fnvpair_value_boolean_value' mangled-name='fnvpair_value_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_boolean_value'> + <parameter type-id='dace003f'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='fnvpair_value_byte' mangled-name='fnvpair_value_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_byte'> + <parameter type-id='dace003f'/> + <return type-id='d8bf0010'/> + </function-decl> + <function-decl name='fnvpair_value_int8' mangled-name='fnvpair_value_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_int8'> + <parameter type-id='dace003f'/> + <return type-id='ee31ee44'/> + </function-decl> + <function-decl name='fnvpair_value_int16' mangled-name='fnvpair_value_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_int16'> + <parameter type-id='dace003f'/> + <return type-id='23bd8cb5'/> + </function-decl> + <function-decl name='fnvpair_value_int32' mangled-name='fnvpair_value_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_int32'> + <parameter type-id='dace003f'/> + <return type-id='3ff5601b'/> + </function-decl> + <function-decl name='fnvpair_value_int64' mangled-name='fnvpair_value_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_int64'> + <parameter type-id='dace003f'/> + <return type-id='9da381c4'/> + </function-decl> + <function-decl name='fnvpair_value_uint8' mangled-name='fnvpair_value_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_uint8'> + <parameter type-id='dace003f'/> + <return type-id='b96825af'/> + </function-decl> + <function-decl name='fnvpair_value_uint16' mangled-name='fnvpair_value_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_uint16'> + <parameter type-id='dace003f'/> + <return type-id='149c6638'/> + </function-decl> + <function-decl name='fnvpair_value_uint32' mangled-name='fnvpair_value_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_uint32'> + <parameter type-id='dace003f'/> + <return type-id='8f92235e'/> + </function-decl> + <function-decl name='fnvpair_value_uint64' mangled-name='fnvpair_value_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_uint64'> + <parameter type-id='dace003f'/> + <return type-id='9c313c2d'/> + </function-decl> + <function-decl name='fnvpair_value_string' mangled-name='fnvpair_value_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_string'> + <parameter type-id='dace003f'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='fnvpair_value_nvlist' mangled-name='fnvpair_value_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvpair_value_nvlist'> + <parameter type-id='3fa542f0'/> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='libspl_assertf' mangled-name='libspl_assertf' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_assertf'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__ctype_get_mb_cur_max' visibility='default' binding='global' size-in-bits='64'> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='mbrtowc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='f1358bc3'/> + <parameter type-id='9d26089a'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='03aaab72'/> + <return type-id='b59d7dce'/> + </function-decl> <function-decl name='nvlist_print_json' mangled-name='nvlist_print_json' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_print_json'> <parameter type-id='822cd80b' name='fp'/> <parameter type-id='5ce45b60' name='nvl'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='nvpair_alloc_system.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libnvpair/nvpair_alloc_system.c' language='LANG_C99'> <class-decl name='__va_list_tag' size-in-bits='192' is-struct='yes' visibility='default' id='d5027220'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='gp_offset' type-id='f0981eeb' visibility='default'/> @@ -2792,18 +2040,1126 @@ <return type-id='eaa32e2f'/> </function-type> </abi-instr> - <abi-instr address-size='64' path='assert.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/assert.c' language='LANG_C99'> + <function-decl name='abort' visibility='default' binding='global' size-in-bits='64'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__vfprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter type-id='b7f2d5e6'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='libspl_set_assert_ok' mangled-name='libspl_set_assert_ok' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_set_assert_ok'> <parameter type-id='c19b74c3' name='val'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='libspl_assertf' mangled-name='libspl_assertf' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_assertf'> - <parameter type-id='80f4b756' name='file'/> - <parameter type-id='80f4b756' name='func'/> - <parameter type-id='95e97e5e' name='line'/> - <parameter type-id='80f4b756' name='format'/> + </abi-instr> + <abi-instr address-size='64' path='module/nvpair/fnvpair.c' language='LANG_C99'> + <function-decl name='fnvlist_alloc' mangled-name='fnvlist_alloc' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_alloc'> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='fnvlist_free' mangled-name='fnvlist_free' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_free'> + <parameter type-id='5ce45b60' name='nvl'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_size' mangled-name='fnvlist_size' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_size'> + <parameter type-id='5ce45b60' name='nvl'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='fnvlist_pack' mangled-name='fnvlist_pack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_pack'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='78c01427' name='sizep'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='fnvlist_pack_free' mangled-name='fnvlist_pack_free' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_pack_free'> + <parameter type-id='26a90f95' name='pack'/> + <parameter type-id='b59d7dce' name='size'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_unpack' mangled-name='fnvlist_unpack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_unpack'> + <parameter type-id='26a90f95' name='buf'/> + <parameter type-id='b59d7dce' name='buflen'/> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='fnvlist_dup' mangled-name='fnvlist_dup' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_dup'> + <parameter type-id='22cce67b' name='nvl'/> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='fnvlist_merge' mangled-name='fnvlist_merge' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_merge'> + <parameter type-id='5ce45b60' name='dst'/> + <parameter type-id='5ce45b60' name='src'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_num_pairs' mangled-name='fnvlist_num_pairs' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_num_pairs'> + <parameter type-id='5ce45b60' name='nvl'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='fnvlist_add_boolean' mangled-name='fnvlist_add_boolean' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_boolean'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_boolean_value' mangled-name='fnvlist_add_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_boolean_value'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='c19b74c3' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_byte' mangled-name='fnvlist_add_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_byte'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='d8bf0010' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_int8' mangled-name='fnvlist_add_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int8'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='ee31ee44' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint8' mangled-name='fnvlist_add_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint8'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='b96825af' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_int16' mangled-name='fnvlist_add_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int16'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='23bd8cb5' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint16' mangled-name='fnvlist_add_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint16'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='149c6638' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_int32' mangled-name='fnvlist_add_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int32'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='3ff5601b' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint32' mangled-name='fnvlist_add_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint32'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='8f92235e' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_int64' mangled-name='fnvlist_add_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int64'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='9da381c4' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint64' mangled-name='fnvlist_add_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint64'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='9c313c2d' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_string' mangled-name='fnvlist_add_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_string'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='80f4b756' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_nvlist' mangled-name='fnvlist_add_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_nvlist'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='5ce45b60' name='val'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_nvpair' mangled-name='fnvlist_add_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_nvpair'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='3fa542f0' name='pair'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_boolean_array' mangled-name='fnvlist_add_boolean_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_boolean_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='c5f6c15b' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_byte_array' mangled-name='fnvlist_add_byte_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_byte_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='d1db479e' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_int8_array' mangled-name='fnvlist_add_int8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int8_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='a06445da' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint8_array' mangled-name='fnvlist_add_uint8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint8_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='9f7200cf' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_int16_array' mangled-name='fnvlist_add_int16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int16_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='a3eb883d' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint16_array' mangled-name='fnvlist_add_uint16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint16_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='1b7d11c6' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_int32_array' mangled-name='fnvlist_add_int32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int32_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='1f526493' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint32_array' mangled-name='fnvlist_add_uint32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint32_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='a6798dcc' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_int64_array' mangled-name='fnvlist_add_int64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_int64_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='505bed1a' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint64_array' mangled-name='fnvlist_add_uint64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_uint64_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='713a56f5' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_string_array' mangled-name='fnvlist_add_string_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_string_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='13956559' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_nvlist_array' mangled-name='fnvlist_add_nvlist_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_add_nvlist_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='3bbfee2e' name='val'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_remove' mangled-name='fnvlist_remove' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_remove'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_remove_nvpair' mangled-name='fnvlist_remove_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_remove_nvpair'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='3fa542f0' name='pair'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_lookup_nvpair' mangled-name='fnvlist_lookup_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_nvpair'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='3fa542f0'/> + </function-decl> + <function-decl name='fnvlist_lookup_boolean' mangled-name='fnvlist_lookup_boolean' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_boolean'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='fnvlist_lookup_boolean_value' mangled-name='fnvlist_lookup_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_boolean_value'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='fnvlist_lookup_byte' mangled-name='fnvlist_lookup_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_byte'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='d8bf0010'/> + </function-decl> + <function-decl name='fnvlist_lookup_int8' mangled-name='fnvlist_lookup_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int8'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='ee31ee44'/> + </function-decl> + <function-decl name='fnvlist_lookup_int16' mangled-name='fnvlist_lookup_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int16'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='23bd8cb5'/> + </function-decl> + <function-decl name='fnvlist_lookup_int32' mangled-name='fnvlist_lookup_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int32'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='3ff5601b'/> + </function-decl> + <function-decl name='fnvlist_lookup_int64' mangled-name='fnvlist_lookup_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int64'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='9da381c4'/> + </function-decl> + <function-decl name='fnvlist_lookup_uint8' mangled-name='fnvlist_lookup_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint8'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='b96825af'/> + </function-decl> + <function-decl name='fnvlist_lookup_uint16' mangled-name='fnvlist_lookup_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint16'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='149c6638'/> + </function-decl> + <function-decl name='fnvlist_lookup_uint32' mangled-name='fnvlist_lookup_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint32'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='8f92235e'/> + </function-decl> + <function-decl name='fnvlist_lookup_uint64' mangled-name='fnvlist_lookup_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint64'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='9c313c2d'/> + </function-decl> + <function-decl name='fnvlist_lookup_string' mangled-name='fnvlist_lookup_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_string'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='fnvlist_lookup_nvlist' mangled-name='fnvlist_lookup_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_nvlist'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='fnvlist_lookup_boolean_array' mangled-name='fnvlist_lookup_boolean_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_boolean_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='37e3bd22'/> + </function-decl> + <function-decl name='fnvlist_lookup_byte_array' mangled-name='fnvlist_lookup_byte_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_byte_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='45b65157'/> + </function-decl> + <function-decl name='fnvlist_lookup_int8_array' mangled-name='fnvlist_lookup_int8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int8_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='256d5229'/> + </function-decl> + <function-decl name='fnvlist_lookup_uint8_array' mangled-name='fnvlist_lookup_uint8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint8_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='ae3e8ca6'/> + </function-decl> + <function-decl name='fnvlist_lookup_int16_array' mangled-name='fnvlist_lookup_int16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int16_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='f76f73d0'/> + </function-decl> + <function-decl name='fnvlist_lookup_uint16_array' mangled-name='fnvlist_lookup_uint16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint16_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='8a121f49'/> + </function-decl> + <function-decl name='fnvlist_lookup_int32_array' mangled-name='fnvlist_lookup_int32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int32_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='4aafb922'/> + </function-decl> + <function-decl name='fnvlist_lookup_uint32_array' mangled-name='fnvlist_lookup_uint32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint32_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='90421557'/> + </function-decl> + <function-decl name='fnvlist_lookup_int64_array' mangled-name='fnvlist_lookup_int64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_int64_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='cb785ebf'/> + </function-decl> + <function-decl name='fnvlist_lookup_uint64_array' mangled-name='fnvlist_lookup_uint64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fnvlist_lookup_uint64_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='5d6479ae'/> + </function-decl> + </abi-instr> + <abi-instr address-size='64' path='module/nvpair/nvpair.c' language='LANG_C99'> + <typedef-decl name='bool_t' type-id='3ff5601b' id='310a70df'/> + <enum-decl name='xdr_op' id='6badf1b8'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='XDR_ENCODE' value='0'/> + <enumerator name='XDR_DECODE' value='1'/> + <enumerator name='XDR_FREE' value='2'/> + </enum-decl> + <class-decl name='__rpc_xdr' size-in-bits='384' is-struct='yes' visibility='default' id='755707df'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='x_op' type-id='6badf1b8' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='x_ops' type-id='3457e9c5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='x_public' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='x_private' type-id='eaa32e2f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='x_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='x_handy' type-id='48f7c3f5' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='xdr_ops' size-in-bits='576' is-struct='yes' visibility='default' id='ea1474f2'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='x_getlong' type-id='a4e6dd3f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='x_putlong' type-id='d447b08c' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='x_getbytes' type-id='b0b6ccaa' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='x_putbytes' type-id='581c24b7' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='x_getpostn' type-id='1c77bdb0' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='x_setpostn' type-id='13fdb43e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='x_inline' type-id='788e1f25' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='x_destroy' type-id='d781e3b2' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='x_control' type-id='733fc725' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='XDR' type-id='755707df' id='bc407f0e'/> + <typedef-decl name='xdrproc_t' type-id='94d188f0' id='c28db3e9'/> + <typedef-decl name='__u_short' type-id='8efea9e5' id='46c660f8'/> + <typedef-decl name='__u_int' type-id='f0981eeb' id='8ae6822f'/> + <typedef-decl name='__quad_t' type-id='bd54fe1a' id='2632227a'/> + <typedef-decl name='__u_quad_t' type-id='7359adad' id='5f3d50a6'/> + <typedef-decl name='u_short' type-id='46c660f8' id='32580e96'/> + <typedef-decl name='u_int' type-id='8ae6822f' id='48f7c3f5'/> + <typedef-decl name='quad_t' type-id='2632227a' id='f5ef0660'/> + <typedef-decl name='u_quad_t' type-id='5f3d50a6' id='bd226ac0'/> + <pointer-type-def type-id='bc407f0e' size-in-bits='64' id='17fd1621'/> + <pointer-type-def type-id='755707df' size-in-bits='64' id='812c6697'/> + <pointer-type-def type-id='26a90f95' size-in-bits='64' id='9b23c9ad'/> + <qualified-type-def type-id='9b23c9ad' restrict='yes' id='8c85230f'/> + <pointer-type-def type-id='9b23c9ad' size-in-bits='64' id='c0563f85'/> + <qualified-type-def type-id='c19b74c3' const='yes' id='12373e33'/> + <pointer-type-def type-id='12373e33' size-in-bits='64' id='c5f6c15b'/> + <qualified-type-def type-id='80f4b756' const='yes' id='b99c00c9'/> + <pointer-type-def type-id='b99c00c9' size-in-bits='64' id='13956559'/> + <qualified-type-def type-id='23bd8cb5' const='yes' id='75f7b0c5'/> + <pointer-type-def type-id='75f7b0c5' size-in-bits='64' id='a3eb883d'/> + <qualified-type-def type-id='3ff5601b' const='yes' id='922df12b'/> + <pointer-type-def type-id='922df12b' size-in-bits='64' id='1f526493'/> + <qualified-type-def type-id='9da381c4' const='yes' id='f07b7694'/> + <pointer-type-def type-id='f07b7694' size-in-bits='64' id='505bed1a'/> + <qualified-type-def type-id='ee31ee44' const='yes' id='721c32d4'/> + <pointer-type-def type-id='721c32d4' size-in-bits='64' id='a06445da'/> + <qualified-type-def type-id='bd54fe1a' const='yes' id='9cb2385f'/> + <pointer-type-def type-id='9cb2385f' size-in-bits='64' id='218ee02f'/> + <qualified-type-def type-id='8e8d4be3' const='yes' id='693c3853'/> + <pointer-type-def type-id='693c3853' size-in-bits='64' id='22cce67b'/> + <qualified-type-def type-id='22cce67b' const='yes' id='d2816df0'/> + <pointer-type-def type-id='d2816df0' size-in-bits='64' id='3bbfee2e'/> + <qualified-type-def type-id='d8bf0010' const='yes' id='a9125480'/> + <pointer-type-def type-id='a9125480' size-in-bits='64' id='d1db479e'/> + <qualified-type-def type-id='149c6638' const='yes' id='b01a5ac8'/> + <pointer-type-def type-id='b01a5ac8' size-in-bits='64' id='1b7d11c6'/> + <qualified-type-def type-id='8f92235e' const='yes' id='b9930aae'/> + <pointer-type-def type-id='b9930aae' size-in-bits='64' id='a6798dcc'/> + <qualified-type-def type-id='9c313c2d' const='yes' id='c3b7ba7d'/> + <pointer-type-def type-id='c3b7ba7d' size-in-bits='64' id='713a56f5'/> + <qualified-type-def type-id='b96825af' const='yes' id='2b61797f'/> + <pointer-type-def type-id='2b61797f' size-in-bits='64' id='9f7200cf'/> + <qualified-type-def type-id='ea1474f2' const='yes' id='485ede6d'/> + <pointer-type-def type-id='485ede6d' size-in-bits='64' id='3457e9c5'/> + <pointer-type-def type-id='95e97e5e' size-in-bits='64' id='7292109c'/> + <pointer-type-def type-id='441e0c31' size-in-bits='64' id='788e1f25'/> + <pointer-type-def type-id='bd54fe1a' size-in-bits='64' id='3ccc2590'/> + <pointer-type-def type-id='3fa542f0' size-in-bits='64' id='0b283d2e'/> + <pointer-type-def type-id='f5ef0660' size-in-bits='64' id='de23782d'/> + <pointer-type-def type-id='a2185560' size-in-bits='64' id='764e437e'/> + <pointer-type-def type-id='b59d7dce' size-in-bits='64' id='78c01427'/> + <pointer-type-def type-id='e80b47fe' size-in-bits='64' id='94d188f0'/> + <pointer-type-def type-id='1c7a4858' size-in-bits='64' id='b0b6ccaa'/> + <pointer-type-def type-id='f6358b93' size-in-bits='64' id='581c24b7'/> + <pointer-type-def type-id='45354e42' size-in-bits='64' id='d447b08c'/> + <pointer-type-def type-id='0760d6d1' size-in-bits='64' id='733fc725'/> + <pointer-type-def type-id='be0f9e0b' size-in-bits='64' id='a4e6dd3f'/> + <pointer-type-def type-id='16eb5704' size-in-bits='64' id='13fdb43e'/> + <pointer-type-def type-id='46870456' size-in-bits='64' id='1c77bdb0'/> + <pointer-type-def type-id='48f7c3f5' size-in-bits='64' id='b4c2e924'/> + <pointer-type-def type-id='bd226ac0' size-in-bits='64' id='fce59795'/> + <pointer-type-def type-id='32580e96' size-in-bits='64' id='ede2c2f5'/> + <pointer-type-def type-id='c87cb1d0' size-in-bits='64' id='d781e3b2'/> + <function-decl name='strtol' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='8c85230f'/> + <parameter type-id='95e97e5e'/> + <return type-id='bd54fe1a'/> + </function-decl> + <function-decl name='strncmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strchr' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strlen' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='xdr_int' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='7292109c'/> + <return type-id='310a70df'/> + </function-decl> + <function-decl name='xdr_u_int' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='b4c2e924'/> + <return type-id='310a70df'/> + </function-decl> + <function-decl name='xdr_short' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='764e437e'/> + <return type-id='310a70df'/> + </function-decl> + <function-decl name='xdr_u_short' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='ede2c2f5'/> + <return type-id='310a70df'/> + </function-decl> + <function-decl name='xdr_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='9b23c9ad'/> + <parameter type-id='b4c2e924'/> + <parameter type-id='48f7c3f5'/> + <parameter type-id='48f7c3f5'/> + <parameter type-id='c28db3e9'/> + <return type-id='310a70df'/> + </function-decl> + <function-decl name='xdr_opaque' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='26a90f95'/> + <parameter type-id='48f7c3f5'/> + <return type-id='310a70df'/> + </function-decl> + <function-decl name='xdr_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='9b23c9ad'/> + <parameter type-id='48f7c3f5'/> + <return type-id='310a70df'/> + </function-decl> + <function-decl name='xdr_char' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='26a90f95'/> + <return type-id='310a70df'/> + </function-decl> + <function-decl name='xdr_double' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='7408d286'/> + <return type-id='310a70df'/> + </function-decl> + <function-decl name='xdr_longlong_t' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='de23782d'/> + <return type-id='310a70df'/> + </function-decl> + <function-decl name='xdr_u_longlong_t' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='fce59795'/> + <return type-id='310a70df'/> + </function-decl> + <function-decl name='xdrmem_create' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='17fd1621'/> + <parameter type-id='26a90f95'/> + <parameter type-id='48f7c3f5'/> + <parameter type-id='6badf1b8'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='nv_alloc_init' mangled-name='nv_alloc_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nv_alloc_init'> + <parameter type-id='11871392' name='nva'/> + <parameter type-id='ee1d4944' name='nvo'/> <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nv_alloc_reset' mangled-name='nv_alloc_reset' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nv_alloc_reset'> + <parameter type-id='11871392' name='nva'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='nv_alloc_fini' mangled-name='nv_alloc_fini' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nv_alloc_fini'> + <parameter type-id='11871392' name='nva'/> <return type-id='48b5725f'/> </function-decl> + <function-decl name='nvlist_lookup_nv_alloc' mangled-name='nvlist_lookup_nv_alloc' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_nv_alloc'> + <parameter type-id='5ce45b60' name='nvl'/> + <return type-id='11871392'/> + </function-decl> + <function-decl name='nvlist_nvflag' mangled-name='nvlist_nvflag' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_nvflag'> + <parameter type-id='5ce45b60' name='nvl'/> + <return type-id='3502e3ff'/> + </function-decl> + <function-decl name='nvlist_alloc' mangled-name='nvlist_alloc' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_alloc'> + <parameter type-id='857bb57e' name='nvlp'/> + <parameter type-id='3502e3ff' name='nvflag'/> + <parameter type-id='95e97e5e' name='kmflag'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_xalloc' mangled-name='nvlist_xalloc' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_xalloc'> + <parameter type-id='857bb57e' name='nvlp'/> + <parameter type-id='3502e3ff' name='nvflag'/> + <parameter type-id='11871392' name='nva'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_free' mangled-name='nvlist_free' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_free'> + <parameter type-id='5ce45b60' name='nvl'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='nvlist_dup' mangled-name='nvlist_dup' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_dup'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='857bb57e' name='nvlp'/> + <parameter type-id='95e97e5e' name='kmflag'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_xdup' mangled-name='nvlist_xdup' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_xdup'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='857bb57e' name='nvlp'/> + <parameter type-id='11871392' name='nva'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_remove_all' mangled-name='nvlist_remove_all' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_remove_all'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_remove' mangled-name='nvlist_remove' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_remove'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='8d0687d2' name='type'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_remove_nvpair' mangled-name='nvlist_remove_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_remove_nvpair'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='3fa542f0' name='nvp'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_boolean' mangled-name='nvlist_add_boolean' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_boolean'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_boolean_value' mangled-name='nvlist_add_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_boolean_value'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='c19b74c3' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_byte' mangled-name='nvlist_add_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_byte'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='d8bf0010' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int8' mangled-name='nvlist_add_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int8'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='ee31ee44' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint8' mangled-name='nvlist_add_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint8'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='b96825af' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int16' mangled-name='nvlist_add_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int16'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='23bd8cb5' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint16' mangled-name='nvlist_add_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint16'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='149c6638' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int32' mangled-name='nvlist_add_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int32'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='3ff5601b' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint32' mangled-name='nvlist_add_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint32'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='8f92235e' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int64' mangled-name='nvlist_add_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int64'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='9da381c4' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint64' mangled-name='nvlist_add_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint64'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='9c313c2d' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_double' mangled-name='nvlist_add_double' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_double'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='a0eb0f08' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_string' mangled-name='nvlist_add_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_string'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='80f4b756' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_boolean_array' mangled-name='nvlist_add_boolean_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_boolean_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='c5f6c15b' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_byte_array' mangled-name='nvlist_add_byte_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_byte_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='d1db479e' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int8_array' mangled-name='nvlist_add_int8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int8_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='a06445da' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint8_array' mangled-name='nvlist_add_uint8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint8_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='9f7200cf' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int16_array' mangled-name='nvlist_add_int16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int16_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='a3eb883d' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint16_array' mangled-name='nvlist_add_uint16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint16_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='1b7d11c6' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int32_array' mangled-name='nvlist_add_int32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int32_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='1f526493' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint32_array' mangled-name='nvlist_add_uint32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint32_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='a6798dcc' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int64_array' mangled-name='nvlist_add_int64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_int64_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='505bed1a' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint64_array' mangled-name='nvlist_add_uint64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_uint64_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='713a56f5' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_string_array' mangled-name='nvlist_add_string_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_string_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='13956559' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_hrtime' mangled-name='nvlist_add_hrtime' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_hrtime'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='cebdd548' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_nvlist' mangled-name='nvlist_add_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_nvlist'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='22cce67b' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_nvlist_array' mangled-name='nvlist_add_nvlist_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_nvlist_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='3bbfee2e' name='a'/> + <parameter type-id='3502e3ff' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_prev_nvpair' mangled-name='nvlist_prev_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_prev_nvpair'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='dace003f' name='nvp'/> + <return type-id='3fa542f0'/> + </function-decl> + <function-decl name='nvlist_empty' mangled-name='nvlist_empty' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_empty'> + <parameter type-id='22cce67b' name='nvl'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='nvlist_lookup_boolean' mangled-name='nvlist_lookup_boolean' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_boolean'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_boolean_value' mangled-name='nvlist_lookup_boolean_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_boolean_value'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='37e3bd22' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_byte' mangled-name='nvlist_lookup_byte' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_byte'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='45b65157' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_int8' mangled-name='nvlist_lookup_int8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int8'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='256d5229' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_uint8' mangled-name='nvlist_lookup_uint8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint8'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='ae3e8ca6' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_int16' mangled-name='nvlist_lookup_int16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int16'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='f76f73d0' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_uint16' mangled-name='nvlist_lookup_uint16' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint16'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='8a121f49' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_int32' mangled-name='nvlist_lookup_int32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int32'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='4aafb922' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_uint32' mangled-name='nvlist_lookup_uint32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint32'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='90421557' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_int64' mangled-name='nvlist_lookup_int64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int64'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='cb785ebf' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_uint64' mangled-name='nvlist_lookup_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint64'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='5d6479ae' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_double' mangled-name='nvlist_lookup_double' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_double'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='7408d286' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_string' mangled-name='nvlist_lookup_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_string'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='7d3cd834' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_nvlist' mangled-name='nvlist_lookup_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_nvlist'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='857bb57e' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_boolean_array' mangled-name='nvlist_lookup_boolean_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_boolean_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='03829398' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_byte_array' mangled-name='nvlist_lookup_byte_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_byte_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='3b0247c7' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_int8_array' mangled-name='nvlist_lookup_int8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int8_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='ee181ab9' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_uint8_array' mangled-name='nvlist_lookup_uint8_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint8_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='d8774064' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_int16_array' mangled-name='nvlist_lookup_int16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int16_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='7e73928e' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_uint16_array' mangled-name='nvlist_lookup_uint16_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint16_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='bd8768d9' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_int32_array' mangled-name='nvlist_lookup_int32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int32_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='9aa04798' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_uint32_array' mangled-name='nvlist_lookup_uint32_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint32_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='9507d3c7' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_int64_array' mangled-name='nvlist_lookup_int64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_int64_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='e37ce48f' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_uint64_array' mangled-name='nvlist_lookup_uint64_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_uint64_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='892b4acc' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_string_array' mangled-name='nvlist_lookup_string_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_string_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='c0563f85' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_nvlist_array' mangled-name='nvlist_lookup_nvlist_array' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_nvlist_array'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='75be733c' name='a'/> + <parameter type-id='4dd26a40' name='n'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_hrtime' mangled-name='nvlist_lookup_hrtime' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_hrtime'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='e379e62d' name='val'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_pairs' mangled-name='nvlist_lookup_pairs' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_pairs'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='95e97e5e' name='flag'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_nvpair' mangled-name='nvlist_lookup_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_nvpair'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='0b283d2e' name='ret'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_nvpair_embedded_index' mangled-name='nvlist_lookup_nvpair_embedded_index' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_lookup_nvpair_embedded_index'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='0b283d2e' name='ret'/> + <parameter type-id='7292109c' name='ip'/> + <parameter type-id='7d3cd834' name='ep'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_exists' mangled-name='nvlist_exists' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_exists'> + <parameter type-id='22cce67b' name='nvl'/> + <parameter type-id='80f4b756' name='name'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='nvlist_add_nvpair' mangled-name='nvlist_add_nvpair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_add_nvpair'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='3fa542f0' name='nvp'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_merge' mangled-name='nvlist_merge' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_merge'> + <parameter type-id='5ce45b60' name='dst'/> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='95e97e5e' name='flag'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_size' mangled-name='nvlist_size' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_size'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='78c01427' name='size'/> + <parameter type-id='95e97e5e' name='encoding'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_pack' mangled-name='nvlist_pack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_pack'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='9b23c9ad' name='bufp'/> + <parameter type-id='78c01427' name='buflen'/> + <parameter type-id='95e97e5e' name='encoding'/> + <parameter type-id='95e97e5e' name='kmflag'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_xpack' mangled-name='nvlist_xpack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_xpack'> + <parameter type-id='5ce45b60' name='nvl'/> + <parameter type-id='9b23c9ad' name='bufp'/> + <parameter type-id='78c01427' name='buflen'/> + <parameter type-id='95e97e5e' name='encoding'/> + <parameter type-id='11871392' name='nva'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_unpack' mangled-name='nvlist_unpack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_unpack'> + <parameter type-id='26a90f95' name='buf'/> + <parameter type-id='b59d7dce' name='buflen'/> + <parameter type-id='857bb57e' name='nvlp'/> + <parameter type-id='95e97e5e' name='kmflag'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_xunpack' mangled-name='nvlist_xunpack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_xunpack'> + <parameter type-id='26a90f95' name='buf'/> + <parameter type-id='b59d7dce' name='buflen'/> + <parameter type-id='857bb57e' name='nvlp'/> + <parameter type-id='11871392' name='nva'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-type size-in-bits='64' id='441e0c31'> + <parameter type-id='812c6697'/> + <parameter type-id='48f7c3f5'/> + <return type-id='4aafb922'/> + </function-type> + <function-type size-in-bits='64' id='e80b47fe'> + <parameter type-id='17fd1621'/> + <parameter is-variadic='yes'/> + <return type-id='310a70df'/> + </function-type> + <function-type size-in-bits='64' id='1c7a4858'> + <parameter type-id='812c6697'/> + <parameter type-id='26a90f95'/> + <parameter type-id='48f7c3f5'/> + <return type-id='310a70df'/> + </function-type> + <function-type size-in-bits='64' id='f6358b93'> + <parameter type-id='812c6697'/> + <parameter type-id='80f4b756'/> + <parameter type-id='48f7c3f5'/> + <return type-id='310a70df'/> + </function-type> + <function-type size-in-bits='64' id='45354e42'> + <parameter type-id='812c6697'/> + <parameter type-id='218ee02f'/> + <return type-id='310a70df'/> + </function-type> + <function-type size-in-bits='64' id='0760d6d1'> + <parameter type-id='812c6697'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='eaa32e2f'/> + <return type-id='310a70df'/> + </function-type> + <function-type size-in-bits='64' id='be0f9e0b'> + <parameter type-id='812c6697'/> + <parameter type-id='3ccc2590'/> + <return type-id='310a70df'/> + </function-type> + <function-type size-in-bits='64' id='16eb5704'> + <parameter type-id='812c6697'/> + <parameter type-id='48f7c3f5'/> + <return type-id='310a70df'/> + </function-type> + <function-type size-in-bits='64' id='46870456'> + <parameter type-id='812c6697'/> + <return type-id='48f7c3f5'/> + </function-type> + <function-type size-in-bits='64' id='c87cb1d0'> + <parameter type-id='812c6697'/> + <return type-id='48b5725f'/> + </function-type> + </abi-instr> + <abi-instr address-size='64' path='module/nvpair/nvpair_alloc_fixed.c' language='LANG_C99'> + <qualified-type-def type-id='ee1d4944' const='yes' id='4b95388f'/> + <var-decl name='nv_fixed_ops' type-id='4b95388f' mangled-name='nv_fixed_ops' visibility='default' elf-symbol-id='nv_fixed_ops'/> </abi-instr> </abi-corpus> diff --git a/lib/libnvpair/libnvpair.c b/lib/libnvpair/libnvpair.c index 0123bb772048..7141c437b810 100644 --- a/lib/libnvpair/libnvpair.c +++ b/lib/libnvpair/libnvpair.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -70,7 +70,7 @@ struct nvlist_printops { DEFINEOP(print_int64, int64_t); DEFINEOP(print_uint64, uint64_t); DEFINEOP(print_double, double); - DEFINEOP(print_string, char *); + DEFINEOP(print_string, const char *); DEFINEOP(print_hrtime, hrtime_t); DEFINEOP(print_nvlist, nvlist_t *); DEFINEARROP(print_boolean_array, boolean_t *); @@ -83,7 +83,7 @@ struct nvlist_printops { DEFINEARROP(print_uint32_array, uint32_t *); DEFINEARROP(print_int64_array, int64_t *); DEFINEARROP(print_uint64_array, uint64_t *); - DEFINEARROP(print_string_array, char **); + DEFINEARROP(print_string_array, const char **); DEFINEARROP(print_nvlist_array, nvlist_t **); }; @@ -199,6 +199,17 @@ nvprint_##type_and_variant(nvlist_prtctl_t pctl, void *private, \ return (1); \ } +/* + * Workaround for GCC 12+ with UBSan enabled deficencies. + * + * GCC 12+ invoked with -fsanitize=undefined incorrectly reports the code + * below as violating -Wformat-overflow. + */ +#if defined(__GNUC__) && !defined(__clang__) && \ + defined(ZFS_UBSAN_ENABLED) && defined(HAVE_FORMAT_OVERFLOW) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-overflow" +#endif NVLIST_PRTFUNC(boolean, int, int, "%d") NVLIST_PRTFUNC(boolean_value, boolean_t, int, "%d") NVLIST_PRTFUNC(byte, uchar_t, uchar_t, "0x%2.2x") @@ -211,8 +222,12 @@ NVLIST_PRTFUNC(uint32, uint32_t, uint32_t, "0x%x") NVLIST_PRTFUNC(int64, int64_t, longlong_t, "%lld") NVLIST_PRTFUNC(uint64, uint64_t, u_longlong_t, "0x%llx") NVLIST_PRTFUNC(double, double, double, "0x%f") -NVLIST_PRTFUNC(string, char *, char *, "%s") +NVLIST_PRTFUNC(string, const char *, const char *, "%s") NVLIST_PRTFUNC(hrtime, hrtime_t, hrtime_t, "0x%llx") +#if defined(__GNUC__) && !defined(__clang__) && \ + defined(ZFS_UBSAN_ENABLED) && defined(HAVE_FORMAT_OVERFLOW) +#pragma GCC diagnostic pop +#endif /* * Generate functions to print array-valued nvlist members. @@ -251,7 +266,7 @@ NVLIST_ARRPRTFUNC(int32_array, int32_t, int32_t, "%d") NVLIST_ARRPRTFUNC(uint32_array, uint32_t, uint32_t, "0x%x") NVLIST_ARRPRTFUNC(int64_array, int64_t, longlong_t, "%lld") NVLIST_ARRPRTFUNC(uint64_array, uint64_t, u_longlong_t, "0x%llx") -NVLIST_ARRPRTFUNC(string_array, char *, char *, "%s") +NVLIST_ARRPRTFUNC(string_array, const char *, const char *, "%s") static int nvprint_nvlist(nvlist_prtctl_t pctl, void *private, @@ -368,7 +383,7 @@ nvlist_prtctl_setfmt(nvlist_prtctl_t pctl, enum nvlist_prtctl_fmt which, pctl->nvprt_btwnarrfmt_nl = 0; } else { pctl->nvprt_btwnarrfmt = fmt; - pctl->nvprt_btwnarrfmt_nl = (strstr(fmt, "\n") != NULL); + pctl->nvprt_btwnarrfmt_nl = (strchr(fmt, '\n') != NULL); } break; @@ -383,13 +398,13 @@ nvlist_prtctl_dofmt(nvlist_prtctl_t pctl, enum nvlist_prtctl_fmt which, ...) { FILE *fp = pctl->nvprt_fp; va_list ap; - char *name; + const char *name; va_start(ap, which); switch (which) { case NVLIST_FMT_MEMBER_NAME: - name = va_arg(ap, char *); + name = va_arg(ap, const char *); (void) fprintf(fp, pctl->nvprt_nmfmt, name); break; @@ -438,7 +453,7 @@ NVLIST_PRINTCTL_REPLACE(uint32, uint32_t) NVLIST_PRINTCTL_REPLACE(int64, int64_t) NVLIST_PRINTCTL_REPLACE(uint64, uint64_t) NVLIST_PRINTCTL_REPLACE(double, double) -NVLIST_PRINTCTL_REPLACE(string, char *) +NVLIST_PRINTCTL_REPLACE(string, const char *) NVLIST_PRINTCTL_REPLACE(hrtime, hrtime_t) NVLIST_PRINTCTL_REPLACE(nvlist, nvlist_t *) @@ -462,7 +477,7 @@ NVLIST_PRINTCTL_AREPLACE(int32_array, int32_t *) NVLIST_PRINTCTL_AREPLACE(uint32_array, uint32_t *) NVLIST_PRINTCTL_AREPLACE(int64_array, int64_t *) NVLIST_PRINTCTL_AREPLACE(uint64_array, uint64_t *) -NVLIST_PRINTCTL_AREPLACE(string_array, char **) +NVLIST_PRINTCTL_AREPLACE(string_array, const char **) NVLIST_PRINTCTL_AREPLACE(nvlist_array, nvlist_t **) /* @@ -565,7 +580,7 @@ static void nvlist_print_with_indent(nvlist_t *nvl, nvlist_prtctl_t pctl) { FILE *fp = pctl->nvprt_fp; - char *name; + const char *name; uint_t nelem; nvpair_t *nvp; @@ -655,7 +670,7 @@ nvlist_print_with_indent(nvlist_t *nvl, nvlist_prtctl_t pctl) break; } case DATA_TYPE_STRING: { - char *val; + const char *val; (void) nvpair_value_string(nvp, &val); RENDER(pctl, string, nvl, name, val); break; @@ -721,7 +736,7 @@ nvlist_print_with_indent(nvlist_t *nvl, nvlist_prtctl_t pctl) break; } case DATA_TYPE_STRING_ARRAY: { - char **val; + const char **val; (void) nvpair_value_string_array(nvp, &val, &nelem); ARENDER(pctl, string_array, nvl, name, val, nelem); break; @@ -851,7 +866,7 @@ dump_nvlist(nvlist_t *list, int indent) break; case DATA_TYPE_STRING: - NVP(elem, string, char *, char *, "'%s'"); + NVP(elem, string, const char *, const char *, "'%s'"); break; case DATA_TYPE_BYTE_ARRAY: @@ -892,7 +907,8 @@ dump_nvlist(nvlist_t *list, int indent) break; case DATA_TYPE_STRING_ARRAY: - NVPA(elem, string_array, char *, char *, "'%s'"); + NVPA(elem, string_array, const char *, const char *, + "'%s'"); break; case DATA_TYPE_NVLIST: @@ -946,11 +962,11 @@ dump_nvlist(nvlist_t *list, int indent) */ int nvpair_value_match_regex(nvpair_t *nvp, int ai, - char *value, regex_t *value_regex, char **ep) + const char *value, regex_t *value_regex, const char **ep) { - char *evalue; - uint_t a_len; - int sr; + const char *evalue; + uint_t a_len; + int sr; if (ep) *ep = NULL; @@ -978,7 +994,7 @@ nvpair_value_match_regex(nvpair_t *nvp, int ai, sr = EOF; switch (nvpair_type(nvp)) { case DATA_TYPE_STRING: { - char *val; + const char *val; /* check string value for match */ if (nvpair_value_string(nvp, &val) == 0) { @@ -994,7 +1010,7 @@ nvpair_value_match_regex(nvpair_t *nvp, int ai, break; } case DATA_TYPE_STRING_ARRAY: { - char **val_array; + const char **val_array; /* check indexed string value of array for match */ if ((nvpair_value_string_array(nvp, &val_array, &a_len) == 0) && @@ -1270,7 +1286,7 @@ nvpair_value_match_regex(nvpair_t *nvp, int ai, } int -nvpair_value_match(nvpair_t *nvp, int ai, char *value, char **ep) +nvpair_value_match(nvpair_t *nvp, int ai, const char *value, const char **ep) { return (nvpair_value_match_regex(nvp, ai, value, NULL, ep)); } diff --git a/lib/libnvpair/libnvpair_json.c b/lib/libnvpair/libnvpair_json.c index 19acea8f5094..b8029dd4d271 100644 --- a/lib/libnvpair/libnvpair_json.c +++ b/lib/libnvpair/libnvpair_json.c @@ -134,7 +134,7 @@ nvlist_print_json(FILE *fp, nvlist_t *nvl) switch (type) { case DATA_TYPE_STRING: { - char *string = fnvpair_value_string(curr); + const char *string = fnvpair_value_string(curr); if (nvlist_print_json_string(fp, string) == -1) return (-1); break; @@ -220,7 +220,7 @@ nvlist_print_json(FILE *fp, nvlist_t *nvl) } case DATA_TYPE_STRING_ARRAY: { - char **val; + const char **val; uint_t valsz, i; VERIFY0(nvpair_value_string_array(curr, &val, &valsz)); FPRINTF(fp, "["); diff --git a/lib/libnvpair/nvpair_alloc_system.c b/lib/libnvpair/nvpair_alloc_system.c index 59806ea4dc93..ade10f58f605 100644 --- a/lib/libnvpair/nvpair_alloc_system.c +++ b/lib/libnvpair/nvpair_alloc_system.c @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libshare/libshare.c b/lib/libshare/libshare.c index 09529e5b4106..d50b4550d6d0 100644 --- a/lib/libshare/libshare.c +++ b/lib/libshare/libshare.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -22,7 +22,7 @@ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011 Gunnar Beutner - * Copyright (c) 2018, 2020 by Delphix. All rights reserved. + * Copyright (c) 2018, 2022 by Delphix. All rights reserved. */ #include <stdio.h> @@ -96,6 +96,16 @@ sa_commit_shares(enum sa_protocol protocol) fstypes[protocol]->commit_shares(); } +void +sa_truncate_shares(enum sa_protocol protocol) +{ + /* CSTYLED */ + VALIDATE_PROTOCOL(protocol, ); + + if (fstypes[protocol]->truncate_shares != NULL) + fstypes[protocol]->truncate_shares(); +} + int sa_validate_shareopts(const char *options, enum sa_protocol protocol) { diff --git a/lib/libshare/libshare_impl.h b/lib/libshare/libshare_impl.h index 110fe93d250f..d8c924757fe1 100644 --- a/lib/libshare/libshare_impl.h +++ b/lib/libshare/libshare_impl.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -22,7 +22,7 @@ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011 Gunnar Beutner - * Copyright (c) 2019, 2020 by Delphix. All rights reserved. + * Copyright (c) 2019, 2022 by Delphix. All rights reserved. */ #ifndef _LIBSPL_LIBSHARE_IMPL_H #define _LIBSPL_LIBSHARE_IMPL_H @@ -39,6 +39,7 @@ typedef struct { boolean_t (*const is_shared)(sa_share_impl_t share); int (*const validate_shareopts)(const char *shareopts); int (*const commit_shares)(void); + void (*const truncate_shares)(void); } sa_fstype_t; extern const sa_fstype_t libshare_nfs_type, libshare_smb_type; diff --git a/lib/libshare/nfs.c b/lib/libshare/nfs.c index 2146346cf08c..77ed14f322ed 100644 --- a/lib/libshare/nfs.c +++ b/lib/libshare/nfs.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -28,6 +28,8 @@ #include <stdio.h> #include <errno.h> #include <libshare.h> +#include <unistd.h> +#include <libzutil.h> #include "nfs.h" @@ -44,7 +46,8 @@ nfs_exports_lock(const char *name, int *nfs_lock_fd) *nfs_lock_fd = open(name, O_RDWR | O_CREAT | O_CLOEXEC, 0600); if (*nfs_lock_fd == -1) { err = errno; - fprintf(stderr, "failed to lock %s: %s\n", name, strerror(err)); + fprintf(stderr, "failed to lock %s: %s\n", name, + zfs_strerror(err)); return (err); } @@ -52,7 +55,8 @@ nfs_exports_lock(const char *name, int *nfs_lock_fd) ; if (err != 0) { err = errno; - fprintf(stderr, "failed to lock %s: %s\n", name, strerror(err)); + fprintf(stderr, "failed to lock %s: %s\n", name, + zfs_strerror(err)); (void) close(*nfs_lock_fd); *nfs_lock_fd = -1; return (err); @@ -68,7 +72,7 @@ nfs_exports_unlock(const char *name, int *nfs_lock_fd) if (flock(*nfs_lock_fd, LOCK_UN) != 0) fprintf(stderr, "failed to unlock %s: %s\n", - name, strerror(errno)); + name, zfs_strerror(errno)); (void) close(*nfs_lock_fd); *nfs_lock_fd = -1; @@ -90,24 +94,25 @@ nfs_init_tmpfile(const char *prefix, const char *mdir, struct tmpfile *tmpf) mkdir(mdir, 0755) < 0 && errno != EEXIST) { fprintf(stderr, "failed to create %s: %s\n", - mdir, strerror(errno)); + // cppcheck-suppress uninitvar + mdir, zfs_strerror(errno)); return (B_FALSE); } - strcpy(tmpf->name, prefix); - strcat(tmpf->name, ".XXXXXXXX"); + strlcpy(tmpf->name, prefix, sizeof (tmpf->name)); + strlcat(tmpf->name, ".XXXXXXXX", sizeof (tmpf->name)); int fd = mkostemp(tmpf->name, O_CLOEXEC); if (fd == -1) { fprintf(stderr, "Unable to create temporary file: %s", - strerror(errno)); + zfs_strerror(errno)); return (B_FALSE); } tmpf->fp = fdopen(fd, "w+"); if (tmpf->fp == NULL) { fprintf(stderr, "Unable to reopen temporary file: %s", - strerror(errno)); + zfs_strerror(errno)); close(fd); return (B_FALSE); } @@ -127,14 +132,14 @@ nfs_fini_tmpfile(const char *exports, struct tmpfile *tmpf) { if (fflush(tmpf->fp) != 0) { fprintf(stderr, "Failed to write to temporary file: %s\n", - strerror(errno)); + zfs_strerror(errno)); nfs_abort_tmpfile(tmpf); return (SA_SYSTEM_ERR); } if (rename(tmpf->name, exports) == -1) { fprintf(stderr, "Unable to rename %s -> %s: %s\n", - tmpf->name, exports, strerror(errno)); + tmpf->name, exports, zfs_strerror(errno)); nfs_abort_tmpfile(tmpf); return (SA_SYSTEM_ERR); } @@ -211,7 +216,7 @@ nfs_process_exports(const char *exports, const char *mountpoint, if (fclose(oldfp) != 0) { fprintf(stderr, "Unable to close file %s: %s\n", - exports, strerror(errno)); + exports, zfs_strerror(errno)); error = error != SA_OK ? error : SA_SYSTEM_ERR; } } @@ -281,6 +286,17 @@ fullerr: return (error); } +void +nfs_reset_shares(const char *lockfile, const char *exports) +{ + int nfs_lock_fd = -1; + + if (nfs_exports_lock(lockfile, &nfs_lock_fd) == 0) { + (void) ! truncate(exports, 0); + nfs_exports_unlock(lockfile, &nfs_lock_fd); + } +} + static boolean_t nfs_is_shared_cb(void *userdata, char *line, boolean_t found_mountpoint) { diff --git a/lib/libshare/nfs.h b/lib/libshare/nfs.h index 24ae1f8adb85..f4340b18f89c 100644 --- a/lib/libshare/nfs.h +++ b/lib/libshare/nfs.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -22,6 +22,7 @@ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011 Gunnar Beutner + * Copyright (c) 2022 by Delphix. All rights reserved. */ #include "libshare_impl.h" @@ -33,3 +34,4 @@ boolean_t nfs_is_shared_impl(const char *exports, sa_share_impl_t impl_share); int nfs_toggle_share(const char *lockfile, const char *exports, const char *expdir, sa_share_impl_t impl_share, int(*cbk)(sa_share_impl_t impl_share, FILE *tmpfile)); +void nfs_reset_shares(const char *lockfile, const char *exports); diff --git a/lib/libshare/os/freebsd/nfs.c b/lib/libshare/os/freebsd/nfs.c index 78977a25f4f5..d4cdb07a4947 100644 --- a/lib/libshare/os/freebsd/nfs.c +++ b/lib/libshare/os/freebsd/nfs.c @@ -23,12 +23,9 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Copyright (c) 2020 by Delphix. All rights reserved. + * Copyright (c) 2020, 2022 by Delphix. All rights reserved. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/param.h> #include <sys/vfs.h> @@ -161,7 +158,8 @@ nfs_is_shared(sa_share_impl_t impl_share) static int nfs_validate_shareopts(const char *shareopts) { - (void) shareopts; + if (strlen(shareopts) == 0) + return (SA_SYNTAX_ERR); return (SA_OK); } @@ -195,6 +193,12 @@ start: return (SA_OK); } +static void +nfs_truncate_shares(void) +{ + nfs_reset_shares(ZFS_EXPORTS_LOCK, ZFS_EXPORTS_FILE); +} + const sa_fstype_t libshare_nfs_type = { .enable_share = nfs_enable_share, .disable_share = nfs_disable_share, @@ -202,4 +206,5 @@ const sa_fstype_t libshare_nfs_type = { .validate_shareopts = nfs_validate_shareopts, .commit_shares = nfs_commit_shares, + .truncate_shares = nfs_truncate_shares, }; diff --git a/lib/libshare/os/freebsd/smb.c b/lib/libshare/os/freebsd/smb.c index 0f546dc5543e..37a3802e4b89 100644 --- a/lib/libshare/os/freebsd/smb.c +++ b/lib/libshare/os/freebsd/smb.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libshare/os/linux/nfs.c b/lib/libshare/os/linux/nfs.c index 1da6d1617247..3dce818400fc 100644 --- a/lib/libshare/os/linux/nfs.c +++ b/lib/libshare/os/linux/nfs.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -23,7 +23,7 @@ * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011 Gunnar Beutner * Copyright (c) 2012 Cyril Plisko. All rights reserved. - * Copyright (c) 2019, 2020 by Delphix. All rights reserved. + * Copyright (c) 2019, 2022 by Delphix. All rights reserved. */ #include <dirent.h> @@ -47,6 +47,7 @@ static boolean_t nfs_available(void); +static boolean_t exports_available(void); typedef int (*nfs_shareopt_callback_t)(const char *opt, const char *value, void *cookie); @@ -319,12 +320,49 @@ get_linux_shareopts_cb(const char *key, const char *value, void *cookie) "wdelay" }; char **plinux_opts = (char **)cookie; + char *host, *val_dup, *literal, *next; - /* host-specific options, these are taken care of elsewhere */ - if (strcmp(key, "ro") == 0 || strcmp(key, "rw") == 0 || - strcmp(key, "sec") == 0) + if (strcmp(key, "sec") == 0) return (SA_OK); + if (strcmp(key, "ro") == 0 || strcmp(key, "rw") == 0) { + if (value == NULL || strlen(value) == 0) + return (SA_OK); + val_dup = strdup(value); + host = val_dup; + if (host == NULL) + return (SA_NO_MEMORY); + do { + if (*host == '[') { + host++; + literal = strchr(host, ']'); + if (literal == NULL) { + free(val_dup); + return (SA_SYNTAX_ERR); + } + if (literal[1] == '\0') + next = NULL; + else if (literal[1] == '/') { + next = strchr(literal + 2, ':'); + if (next != NULL) + ++next; + } else if (literal[1] == ':') + next = literal + 2; + else { + free(val_dup); + return (SA_SYNTAX_ERR); + } + } else { + next = strchr(host, ':'); + if (next != NULL) + ++next; + } + host = next; + } while (host != NULL); + free(val_dup); + return (SA_OK); + } + if (strcmp(key, "anon") == 0) key = "anonuid"; @@ -449,7 +487,7 @@ static int nfs_disable_share(sa_share_impl_t impl_share) { if (!nfs_available()) - return (SA_SYSTEM_ERR); + return (SA_OK); return (nfs_toggle_share( ZFS_EXPORTS_LOCK, ZFS_EXPORTS_FILE, ZFS_EXPORTS_DIR, impl_share, @@ -472,6 +510,10 @@ static int nfs_validate_shareopts(const char *shareopts) { char *linux_opts = NULL; + + if (strlen(shareopts) == 0) + return (SA_SYNTAX_ERR); + int error = get_linux_shareopts(shareopts, &linux_opts); if (error != SA_OK) return (error); @@ -495,6 +537,14 @@ nfs_commit_shares(void) return (libzfs_run_process(argv[0], argv, 0)); } +static void +nfs_truncate_shares(void) +{ + if (!exports_available()) + return; + nfs_reset_shares(ZFS_EXPORTS_LOCK, ZFS_EXPORTS_FILE); +} + const sa_fstype_t libshare_nfs_type = { .enable_share = nfs_enable_share, .disable_share = nfs_disable_share, @@ -502,6 +552,7 @@ const sa_fstype_t libshare_nfs_type = { .validate_shareopts = nfs_validate_shareopts, .commit_shares = nfs_commit_shares, + .truncate_shares = nfs_truncate_shares, }; static boolean_t @@ -518,3 +569,18 @@ nfs_available(void) return (avail == 1); } + +static boolean_t +exports_available(void) +{ + static int avail; + + if (!avail) { + if (access(ZFS_EXPORTS_DIR, F_OK) != 0) + avail = -1; + else + avail = 1; + } + + return (avail == 1); +} diff --git a/lib/libshare/os/linux/smb.c b/lib/libshare/os/linux/smb.c index 57965ebfaad1..0679e82104e2 100644 --- a/lib/libshare/os/linux/smb.c +++ b/lib/libshare/os/linux/smb.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -90,21 +90,32 @@ smb_retrieve_shares(void) /* Go through the directory, looking for shares */ while ((directory = readdir(shares_dir))) { + int fd; + if (directory->d_name[0] == '.') continue; snprintf(file_path, sizeof (file_path), "%s/%s", SHARE_DIR, directory->d_name); - if (stat(file_path, &eStat) == -1) { + if ((fd = open(file_path, O_RDONLY | O_CLOEXEC)) == -1) { + rc = SA_SYSTEM_ERR; + goto out; + } + + if (fstat(fd, &eStat) == -1) { + close(fd); rc = SA_SYSTEM_ERR; goto out; } - if (!S_ISREG(eStat.st_mode)) + if (!S_ISREG(eStat.st_mode)) { + close(fd); continue; + } - if ((share_file_fp = fopen(file_path, "re")) == NULL) { + if ((share_file_fp = fdopen(fd, "r")) == NULL) { + close(fd); rc = SA_SYSTEM_ERR; goto out; } diff --git a/lib/libshare/smb.h b/lib/libshare/smb.h index ca3577751923..23d27c7b9134 100644 --- a/lib/libshare/smb.h +++ b/lib/libshare/smb.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/assert.c b/lib/libspl/assert.c index ad8fdcd8cf0a..9d44740d4e3c 100644 --- a/lib/libspl/assert.c +++ b/lib/libspl/assert.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -45,8 +45,11 @@ libspl_assertf(const char *file, const char *func, int line, fprintf(stderr, "\n"); fprintf(stderr, "ASSERT at %s:%d:%s()", file, line, func); va_end(args); + +#if !__has_feature(attribute_analyzer_noreturn) && !defined(__COVERITY__) if (libspl_assert_ok) { return; } +#endif abort(); } diff --git a/lib/libspl/atomic.c b/lib/libspl/atomic.c index 9307cea194e6..8cc350710ba0 100644 --- a/lib/libspl/atomic.c +++ b/lib/libspl/atomic.c @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -382,6 +382,12 @@ membar_exit(void) } void +membar_sync(void) +{ + __atomic_thread_fence(__ATOMIC_SEQ_CST); +} + +void membar_producer(void) { __atomic_thread_fence(__ATOMIC_RELEASE); diff --git a/lib/libspl/getexecname.c b/lib/libspl/getexecname.c index dca7162034f7..95583b31ee6f 100644 --- a/lib/libspl/getexecname.c +++ b/lib/libspl/getexecname.c @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/Makefile.am b/lib/libspl/include/Makefile.am index 6f0e1818d22e..2c1d21edf19d 100644 --- a/lib/libspl/include/Makefile.am +++ b/lib/libspl/include/Makefile.am @@ -26,6 +26,7 @@ libspl_sysdir = $(libspldir)/sys libspl_sys_HEADERS = \ %D%/sys/acl.h \ %D%/sys/acl_impl.h \ + %D%/sys/asm_linkage.h \ %D%/sys/callb.h \ %D%/sys/cmn_err.h \ %D%/sys/cred.h \ @@ -45,7 +46,6 @@ libspl_sys_HEADERS = \ %D%/sys/poll.h \ %D%/sys/priv.h \ %D%/sys/processor.h \ - %D%/sys/sha2.h \ %D%/sys/simd.h \ %D%/sys/stack.h \ %D%/sys/stdtypes.h \ @@ -62,6 +62,8 @@ libspl_sys_HEADERS = \ %D%/sys/wmsum.h \ %D%/sys/zone.h +libspl_ia32dir = $(libspldir)/sys/ia32 + if BUILD_LINUX libspl_sys_HEADERS += \ %D%/os/linux/sys/byteorder.h \ @@ -72,6 +74,9 @@ libspl_sys_HEADERS += \ %D%/os/linux/sys/stat.h \ %D%/os/linux/sys/sysmacros.h \ %D%/os/linux/sys/zfs_context_os.h + +libspl_ia32_HEADERS = \ + %D%/os/linux/sys/ia32/asm_linkage.h endif if BUILD_FREEBSD @@ -86,9 +91,13 @@ libspl_sys_HEADERS += \ %D%/os/freebsd/sys/sysmacros.h \ %D%/os/freebsd/sys/vfs.h \ %D%/os/freebsd/sys/zfs_context_os.h + +libspl_ia32_HEADERS = \ + %D%/os/freebsd/sys/ia32/asm_linkage.h endif libspl_sys_dktpdir = $(libspl_sysdir)/dktp libspl_sys_dktp_HEADERS = \ %D%/sys/dktp/fdisk.h + diff --git a/lib/libspl/include/assert.h b/lib/libspl/include/assert.h index e968a2310774..155bbab3020a 100644 --- a/lib/libspl/include/assert.h +++ b/lib/libspl/include/assert.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -34,12 +34,24 @@ #include <stdarg.h> #include <sys/types.h> +/* Workaround for non-Clang compilers */ +#ifndef __has_feature +#define __has_feature(x) 0 +#endif + +/* We need to workaround libspl_set_assert_ok() that we have for zdb */ +#if __has_feature(attribute_analyzer_noreturn) || defined(__COVERITY__) +#define NORETURN __attribute__((__noreturn__)) +#else +#define NORETURN +#endif + /* Set to non-zero to avoid abort()ing on an assertion failure */ extern void libspl_set_assert_ok(boolean_t val); /* printf version of libspl_assert */ extern void libspl_assertf(const char *file, const char *func, int line, - const char *format, ...); + const char *format, ...) NORETURN __attribute__((format(printf, 4, 5))); static inline int libspl_assert(const char *buf, const char *file, const char *func, int line) @@ -52,9 +64,21 @@ libspl_assert(const char *buf, const char *file, const char *func, int line) #undef verify #endif +#define PANIC(fmt, a...) \ + libspl_assertf(__FILE__, __FUNCTION__, __LINE__, fmt, ## a) + #define VERIFY(cond) \ (void) ((!(cond)) && \ libspl_assert(#cond, __FILE__, __FUNCTION__, __LINE__)) + +#define VERIFYF(cond, STR, ...) \ +do { \ + if (!(cond)) \ + libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ + "%s " STR, #cond, \ + __VA_ARGS__); \ +} while (0) + #define verify(cond) \ (void) ((!(cond)) && \ libspl_assert(#cond, __FILE__, __FUNCTION__, __LINE__)) @@ -95,8 +119,8 @@ do { \ const uintptr_t __right = (uintptr_t)(RIGHT); \ if (!(__left OP __right)) \ libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ - "%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \ - (u_longlong_t)__left, #OP, (u_longlong_t)__right); \ + "%s %s %s (%p %s %p)", #LEFT, #OP, #RIGHT, \ + (void *)__left, #OP, (void *)__right); \ } while (0) #define VERIFY0(LEFT) \ @@ -108,6 +132,88 @@ do { \ (u_longlong_t)__left); \ } while (0) +#define VERIFY0P(LEFT) \ +do { \ + const uintptr_t __left = (uintptr_t)(LEFT); \ + if (!(__left == 0)) \ + libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ + "%s == 0 (%p == 0)", #LEFT, \ + (void *)__left); \ +} while (0) + +/* + * This is just here because cstyle gets upset about #LEFT + * on a newline. + */ + +/* BEGIN CSTYLED */ +#define VERIFY3BF(LEFT, OP, RIGHT, STR, ...) \ +do { \ + const boolean_t __left = (boolean_t)(LEFT); \ + const boolean_t __right = (boolean_t)(RIGHT); \ + if (!(__left OP __right)) \ + libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ + "%s %s %s (0x%llx %s 0x%llx) " STR, \ + #LEFT, #OP, #RIGHT, \ + (u_longlong_t)__left, #OP, (u_longlong_t)__right, \ + __VA_ARGS__); \ +} while (0) + +#define VERIFY3SF(LEFT, OP, RIGHT, STR, ...) \ +do { \ + const int64_t __left = (int64_t)(LEFT); \ + const int64_t __right = (int64_t)(RIGHT); \ + if (!(__left OP __right)) \ + libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ + "%s %s %s (0x%llx %s 0x%llx) " STR, \ + #LEFT, #OP, #RIGHT, \ + (u_longlong_t)__left, #OP, (u_longlong_t)__right, \ + __VA_ARGS__); \ +} while (0) + +#define VERIFY3UF(LEFT, OP, RIGHT, STR, ...) \ +do { \ + const uint64_t __left = (uint64_t)(LEFT); \ + const uint64_t __right = (uint64_t)(RIGHT); \ + if (!(__left OP __right)) \ + libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ + "%s %s %s (0x%llx %s 0x%llx) " STR, \ + #LEFT, #OP, #RIGHT, \ + (u_longlong_t)__left, #OP, (u_longlong_t)__right, \ + __VA_ARGS__); \ +} while (0) + +#define VERIFY3PF(LEFT, OP, RIGHT, STR, ...) \ +do { \ + const uintptr_t __left = (uintptr_t)(LEFT); \ + const uintptr_t __right = (uintptr_t)(RIGHT); \ + if (!(__left OP __right)) \ + libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ + "%s %s %s (0x%llx %s 0x%llx) " STR, \ + #LEFT, #OP, #RIGHT, \ + (u_longlong_t)__left, #OP, (u_longlong_t)__right, \ + __VA_ARGS__); \ +} while (0) +/* END CSTYLED */ + +#define VERIFY0F(LEFT, STR, ...) \ +do { \ + const uint64_t __left = (uint64_t)(LEFT); \ + if (!(__left == 0)) \ + libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ + "%s == 0 (0x%llx == 0) " STR, #LEFT, \ + (u_longlong_t)__left, __VA_ARGS__); \ +} while (0) + +#define VERIFY0PF(LEFT, STR, ...) \ +do { \ + const uintptr_t __left = (uintptr_t)(LEFT); \ + if (!(__left == 0)) \ + libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ + "%s == 0 (%p == 0) " STR, #LEFT, \ + (u_longlong_t)__left, __VA_ARGS__); \ +} while (0) + #ifdef assert #undef assert #endif @@ -122,7 +228,16 @@ do { \ #define ASSERT3P(x, y, z) \ ((void) sizeof ((uintptr_t)(x)), (void) sizeof ((uintptr_t)(z))) #define ASSERT0(x) ((void) sizeof ((uintptr_t)(x))) +#define ASSERT0P(x) ((void) sizeof ((uintptr_t)(x))) +#define ASSERT3BF(x, y, z, str, ...) ASSERT3B(x, y, z) +#define ASSERT3SF(x, y, z, str, ...) ASSERT3S(x, y, z) +#define ASSERT3UF(x, y, z, str, ...) ASSERT3U(x, y, z) +#define ASSERT3PF(x, y, z, str, ...) ASSERT3P(x, y, z) +#define ASSERT0P(x) ((void) sizeof ((uintptr_t)(x))) +#define ASSERT0PF(x, str, ...) ASSERT0P(x) +#define ASSERT0F(x, str, ...) ASSERT0(x) #define ASSERT(x) ((void) sizeof ((uintptr_t)(x))) +#define ASSERTF(x, str, ...) ASSERT(x) #define assert(x) ((void) sizeof ((uintptr_t)(x))) #define IMPLY(A, B) \ ((void) sizeof ((uintptr_t)(A)), (void) sizeof ((uintptr_t)(B))) @@ -134,7 +249,15 @@ do { \ #define ASSERT3U VERIFY3U #define ASSERT3P VERIFY3P #define ASSERT0 VERIFY0 +#define ASSERT0P VERIFY0P +#define ASSERT3BF VERIFY3BF +#define ASSERT3SF VERIFY3SF +#define ASSERT3UF VERIFY3UF +#define ASSERT3PF VERIFY3PF +#define ASSERT0PF VERIFY0PF +#define ASSERT0F VERIFY0F #define ASSERT VERIFY +#define ASSERTF VERIFYF #define assert VERIFY #define IMPLY(A, B) \ ((void)(((!(A)) || (B)) || \ diff --git a/lib/libspl/include/atomic.h b/lib/libspl/include/atomic.h index 8dd1d654a486..4ebdbbda9864 100644 --- a/lib/libspl/include/atomic.h +++ b/lib/libspl/include/atomic.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -314,6 +314,13 @@ extern void membar_enter(void); extern void membar_exit(void); /* + * Make all stores and loads emitted prior to the the barrier complete before + * crossing it, while also making sure stores and loads emitted after the + * barrier only start being executed after crossing it. + */ +extern void membar_sync(void); + +/* * Arrange that all stores issued before this point in the code reach * global visibility before any stores that follow; useful in producer * modules that update a data item, then set a flag that it is available. diff --git a/lib/libspl/include/libgen.h b/lib/libspl/include/libgen.h index c46d7454e49f..d8c80509e99e 100644 --- a/lib/libspl/include/libgen.h +++ b/lib/libspl/include/libgen.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/libshare.h b/lib/libspl/include/libshare.h index ae0e2c39dc6d..deeb15c97704 100644 --- a/lib/libspl/include/libshare.h +++ b/lib/libspl/include/libshare.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -22,7 +22,7 @@ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. - * Copyright (c) 2019, 2020 by Delphix. All rights reserved. + * Copyright (c) 2019, 2022 by Delphix. All rights reserved. */ #ifndef _LIBSPL_LIBSHARE_H #define _LIBSPL_LIBSHARE_H extern __attribute__((visibility("default"))) @@ -88,6 +88,7 @@ _LIBSPL_LIBSHARE_H int sa_enable_share(const char *, const char *, const char *, _LIBSPL_LIBSHARE_H int sa_disable_share(const char *, enum sa_protocol); _LIBSPL_LIBSHARE_H boolean_t sa_is_shared(const char *, enum sa_protocol); _LIBSPL_LIBSHARE_H void sa_commit_shares(enum sa_protocol); +_LIBSPL_LIBSHARE_H void sa_truncate_shares(enum sa_protocol); /* protocol specific interfaces */ _LIBSPL_LIBSHARE_H int sa_validate_shareopts(const char *, enum sa_protocol); diff --git a/lib/libspl/include/os/freebsd/sys/byteorder.h b/lib/libspl/include/os/freebsd/sys/byteorder.h index d4227ddc5465..bd6728820ed4 100644 --- a/lib/libspl/include/os/freebsd/sys/byteorder.h +++ b/lib/libspl/include/os/freebsd/sys/byteorder.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -59,6 +59,18 @@ extern "C" { */ #if !defined(_XPG4_2) || defined(__EXTENSIONS__) +#ifdef __COVERITY__ +/* + * Coverity's taint warnings from byteswapping are false positives for us. + * Suppress them by hiding byteswapping from Coverity. + */ +#define BSWAP_8(x) ((x) & 0xff) +#define BSWAP_16(x) ((x) & 0xffff) +#define BSWAP_32(x) ((x) & 0xffffffff) +#define BSWAP_64(x) (x) + +#else /* __COVERITY__ */ + /* * Macros to reverse byte order */ @@ -67,6 +79,8 @@ extern "C" { #define BSWAP_32(x) ((BSWAP_16(x) << 16) | BSWAP_16((x) >> 16)) #define BSWAP_64(x) ((BSWAP_32(x) << 32) | BSWAP_32((x) >> 32)) +#endif /* __COVERITY__ */ + #define BMASK_8(x) ((x) & 0xff) #define BMASK_16(x) ((x) & 0xffff) #define BMASK_32(x) ((x) & 0xffffffff) diff --git a/lib/libspl/include/os/freebsd/sys/file.h b/lib/libspl/include/os/freebsd/sys/file.h index 5a20686dc069..f46b883f524a 100644 --- a/lib/libspl/include/os/freebsd/sys/file.h +++ b/lib/libspl/include/os/freebsd/sys/file.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/os/freebsd/sys/ia32/asm_linkage.h b/lib/libspl/include/os/freebsd/sys/ia32/asm_linkage.h new file mode 100644 index 000000000000..1c4d74423644 --- /dev/null +++ b/lib/libspl/include/os/freebsd/sys/ia32/asm_linkage.h @@ -0,0 +1,184 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or https://opensource.org/licenses/CDDL-1.0. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _IA32_SYS_ASM_LINKAGE_H +#define _IA32_SYS_ASM_LINKAGE_H + +#if defined(__linux__) && defined(CONFIG_SLS) +#define RET ret; int3 +#else +#define RET ret +#endif + +/* Tell compiler to call assembler like Unix */ +#undef ASMABI +#define ASMABI __attribute__((sysv_abi)) + +#define ENDBR + +#define SECTION_TEXT .text +#define SECTION_STATIC .section .rodata + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _ASM /* The remainder of this file is only for assembly files */ + +/* + * make annoying differences in assembler syntax go away + */ + +/* + * D16 and A16 are used to insert instructions prefixes; the + * macros help the assembler code be slightly more portable. + */ +#if !defined(__GNUC_AS__) +/* + * /usr/ccs/bin/as prefixes are parsed as separate instructions + */ +#define D16 data16; +#define A16 addr16; + +/* + * (There are some weird constructs in constant expressions) + */ +#define _CONST(const) [const] +#define _BITNOT(const) -1!_CONST(const) +#define _MUL(a, b) _CONST(a \* b) + +#else +/* + * Why not use the 'data16' and 'addr16' prefixes .. well, the + * assembler doesn't quite believe in real mode, and thus argues with + * us about what we're trying to do. + */ +#define D16 .byte 0x66; +#define A16 .byte 0x67; + +#define _CONST(const) (const) +#define _BITNOT(const) ~_CONST(const) +#define _MUL(a, b) _CONST(a * b) + +#endif + +/* + * C pointers are different sizes between i386 and amd64. + * These constants can be used to compute offsets into pointer arrays. + */ +#if defined(__amd64) +#define CLONGSHIFT 3 +#define CLONGSIZE 8 +#define CLONGMASK 7 +#elif defined(__i386) +#define CLONGSHIFT 2 +#define CLONGSIZE 4 +#define CLONGMASK 3 +#endif + +/* + * Since we know we're either ILP32 or LP64 .. + */ +#define CPTRSHIFT CLONGSHIFT +#define CPTRSIZE CLONGSIZE +#define CPTRMASK CLONGMASK + +#if CPTRSIZE != (1 << CPTRSHIFT) || CLONGSIZE != (1 << CLONGSHIFT) +#error "inconsistent shift constants" +#endif + +#if CPTRMASK != (CPTRSIZE - 1) || CLONGMASK != (CLONGSIZE - 1) +#error "inconsistent mask constants" +#endif + +#define ASM_ENTRY_ALIGN 16 + +/* + * SSE register alignment and save areas + */ + +#define XMM_SIZE 16 +#define XMM_ALIGN 16 + +/* + * ENTRY provides the standard procedure entry code and an easy way to + * insert the calls to mcount for profiling. ENTRY_NP is identical, but + * never calls mcount. + */ +#define ENTRY(x) \ + .text; \ + .balign ASM_ENTRY_ALIGN; \ + .globl x; \ +x: MCOUNT(x) + +#define ENTRY_NP(x) \ + .text; \ + .balign ASM_ENTRY_ALIGN; \ + .globl x; \ +x: + +#define ENTRY_ALIGN(x, a) \ + .text; \ + .balign a; \ + .globl x; \ +x: + +#define FUNCTION(x) \ + .type x, @function; \ +x: + +/* + * ENTRY2 is identical to ENTRY but provides two labels for the entry point. + */ +#define ENTRY2(x, y) \ + .text; \ + .balign ASM_ENTRY_ALIGN; \ + .globl x, y; \ +x:; \ +y: MCOUNT(x) + +#define ENTRY_NP2(x, y) \ + .text; \ + .balign ASM_ENTRY_ALIGN; \ + .globl x, y; \ +x:; \ +y: + + +/* + * SET_SIZE trails a function and set the size for the ELF symbol table. + */ +#define SET_SIZE(x) + +#define SET_OBJ(x) + +#endif /* _ASM */ + +#ifdef __cplusplus +} +#endif + +#endif /* _IA32_SYS_ASM_LINKAGE_H */ diff --git a/lib/libspl/include/os/freebsd/sys/mnttab.h b/lib/libspl/include/os/freebsd/sys/mnttab.h index aa3132fb3cc0..514e1b67547a 100644 --- a/lib/libspl/include/os/freebsd/sys/mnttab.h +++ b/lib/libspl/include/os/freebsd/sys/mnttab.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/os/freebsd/sys/mount.h b/lib/libspl/include/os/freebsd/sys/mount.h index e99518571270..61c421fe4edb 100644 --- a/lib/libspl/include/os/freebsd/sys/mount.h +++ b/lib/libspl/include/os/freebsd/sys/mount.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/os/freebsd/sys/param.h b/lib/libspl/include/os/freebsd/sys/param.h index cb5260ea3d7e..1ff3ca8025fc 100644 --- a/lib/libspl/include/os/freebsd/sys/param.h +++ b/lib/libspl/include/os/freebsd/sys/param.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -57,6 +57,8 @@ extern size_t spl_pagesize(void); #define PAGESIZE (spl_pagesize()) +#ifndef HAVE_EXECVPE extern int execvpe(const char *name, char * const argv[], char * const envp[]); +#endif #endif diff --git a/lib/libspl/include/os/freebsd/sys/stat.h b/lib/libspl/include/os/freebsd/sys/stat.h index 38c684d62a1b..af488244bd05 100644 --- a/lib/libspl/include/os/freebsd/sys/stat.h +++ b/lib/libspl/include/os/freebsd/sys/stat.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -76,8 +76,12 @@ fstat64_blk(int fd, struct stat64 *st) /* * Only Intel-based Macs have a separate stat64; Arm-based Macs are like * FreeBSD and have a full 64-bit stat from the start. + * + * On Linux, musl libc is full 64-bit too and has deprecated its own version + * of these defines since version 1.2.4. */ -#if defined(__APPLE__) && !(defined(__i386__) || defined(__x86_64__)) +#if (defined(__APPLE__) && !(defined(__i386__) || defined(__x86_64__))) || \ + (defined(__linux__) && !defined(__GLIBC__)) #define stat64 stat #define fstat64 fstat #endif diff --git a/lib/libspl/include/os/linux/sys/byteorder.h b/lib/libspl/include/os/linux/sys/byteorder.h index 47af7700f031..50f0f1e77936 100644 --- a/lib/libspl/include/os/linux/sys/byteorder.h +++ b/lib/libspl/include/os/linux/sys/byteorder.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -90,6 +90,18 @@ extern in_port_t ntohs(in_port_t); #if !defined(_XPG4_2) || defined(__EXTENSIONS__) +#ifdef __COVERITY__ +/* + * Coverity's taint warnings from byteswapping are false positives for us. + * Suppress them by hiding byteswapping from Coverity. + */ +#define BSWAP_8(x) ((x) & 0xff) +#define BSWAP_16(x) ((x) & 0xffff) +#define BSWAP_32(x) ((x) & 0xffffffff) +#define BSWAP_64(x) (x) + +#else /* __COVERITY__ */ + /* * Macros to reverse byte order */ @@ -98,6 +110,8 @@ extern in_port_t ntohs(in_port_t); #define BSWAP_32(x) ((BSWAP_16(x) << 16) | BSWAP_16((x) >> 16)) #define BSWAP_64(x) ((BSWAP_32(x) << 32) | BSWAP_32((x) >> 32)) +#endif /* __COVERITY__ */ + #define BMASK_8(x) ((x) & 0xff) #define BMASK_16(x) ((x) & 0xffff) #define BMASK_32(x) ((x) & 0xffffffff) diff --git a/lib/libspl/include/os/linux/sys/errno.h b/lib/libspl/include/os/linux/sys/errno.h index 30d20ab895c5..f0ad60b0bcff 100644 --- a/lib/libspl/include/os/linux/sys/errno.h +++ b/lib/libspl/include/os/linux/sys/errno.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/os/linux/sys/ia32/asm_linkage.h b/lib/libspl/include/os/linux/sys/ia32/asm_linkage.h new file mode 100644 index 000000000000..f07596123341 --- /dev/null +++ b/lib/libspl/include/os/linux/sys/ia32/asm_linkage.h @@ -0,0 +1,211 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or https://opensource.org/licenses/CDDL-1.0. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _IA32_SYS_ASM_LINKAGE_H +#define _IA32_SYS_ASM_LINKAGE_H + +#if defined(_KERNEL) && defined(__linux__) +#include <linux/linkage.h> +#endif + +#ifndef ENDBR +#if defined(__ELF__) && defined(__CET__) && defined(__has_include) +/* CSTYLED */ +#if __has_include(<cet.h>) + +#include <cet.h> + +#ifdef _CET_ENDBR +#define ENDBR _CET_ENDBR +#endif /* _CET_ENDBR */ + +#endif /* <cet.h> */ +#endif /* __ELF__ && __CET__ && __has_include */ +#endif /* !ENDBR */ + +#ifndef ENDBR +#define ENDBR +#endif +#ifndef RET +#define RET ret +#endif + +/* You can set to nothing on Unix platforms */ +#undef ASMABI +#define ASMABI __attribute__((sysv_abi)) + +#define SECTION_TEXT .text +#define SECTION_STATIC .section .rodata + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _ASM /* The remainder of this file is only for assembly files */ + +/* + * make annoying differences in assembler syntax go away + */ + +/* + * D16 and A16 are used to insert instructions prefixes; the + * macros help the assembler code be slightly more portable. + */ +#if !defined(__GNUC_AS__) +/* + * /usr/ccs/bin/as prefixes are parsed as separate instructions + */ +#define D16 data16; +#define A16 addr16; + +/* + * (There are some weird constructs in constant expressions) + */ +#define _CONST(const) [const] +#define _BITNOT(const) -1!_CONST(const) +#define _MUL(a, b) _CONST(a \* b) + +#else +/* + * Why not use the 'data16' and 'addr16' prefixes .. well, the + * assembler doesn't quite believe in real mode, and thus argues with + * us about what we're trying to do. + */ +#define D16 .byte 0x66; +#define A16 .byte 0x67; + +#define _CONST(const) (const) +#define _BITNOT(const) ~_CONST(const) +#define _MUL(a, b) _CONST(a * b) + +#endif + +/* + * C pointers are different sizes between i386 and amd64. + * These constants can be used to compute offsets into pointer arrays. + */ +#if defined(__amd64) +#define CLONGSHIFT 3 +#define CLONGSIZE 8 +#define CLONGMASK 7 +#elif defined(__i386) +#define CLONGSHIFT 2 +#define CLONGSIZE 4 +#define CLONGMASK 3 +#endif + +/* + * Since we know we're either ILP32 or LP64 .. + */ +#define CPTRSHIFT CLONGSHIFT +#define CPTRSIZE CLONGSIZE +#define CPTRMASK CLONGMASK + +#if CPTRSIZE != (1 << CPTRSHIFT) || CLONGSIZE != (1 << CLONGSHIFT) +#error "inconsistent shift constants" +#endif + +#if CPTRMASK != (CPTRSIZE - 1) || CLONGMASK != (CLONGSIZE - 1) +#error "inconsistent mask constants" +#endif + +#define ASM_ENTRY_ALIGN 16 + +/* + * SSE register alignment and save areas + */ + +#define XMM_SIZE 16 +#define XMM_ALIGN 16 + +/* + * ENTRY provides the standard procedure entry code and an easy way to + * insert the calls to mcount for profiling. ENTRY_NP is identical, but + * never calls mcount. + */ +#undef ENTRY +#define ENTRY(x) \ + .text; \ + .balign ASM_ENTRY_ALIGN; \ + .globl x; \ + .type x, @function; \ +x: MCOUNT(x) + +#define ENTRY_NP(x) \ + .text; \ + .balign ASM_ENTRY_ALIGN; \ + .globl x; \ + .type x, @function; \ +x: + +#define ENTRY_ALIGN(x, a) \ + .text; \ + .balign a; \ + .globl x; \ + .type x, @function; \ +x: + +#define FUNCTION(x) \ + .type x, @function; \ +x: + +/* + * ENTRY2 is identical to ENTRY but provides two labels for the entry point. + */ +#define ENTRY2(x, y) \ + .text; \ + .balign ASM_ENTRY_ALIGN; \ + .globl x, y; \ + .type x, @function; \ + .type y, @function; \ +x:; \ +y: MCOUNT(x) + +#define ENTRY_NP2(x, y) \ + .text; \ + .balign ASM_ENTRY_ALIGN; \ + .globl x, y; \ + .type x, @function; \ + .type y, @function; \ +x:; \ +y: + + +/* + * SET_SIZE trails a function and set the size for the ELF symbol table. + */ +#define SET_SIZE(x) \ + .size x, [.-x] + +#define SET_OBJ(x) .type x, @object + +#endif /* _ASM */ + +#ifdef __cplusplus +} +#endif + +#endif /* _IA32_SYS_ASM_LINKAGE_H */ diff --git a/lib/libspl/include/os/linux/sys/mnttab.h b/lib/libspl/include/os/linux/sys/mnttab.h index 21592aaaacee..7b540a383d27 100644 --- a/lib/libspl/include/os/linux/sys/mnttab.h +++ b/lib/libspl/include/os/linux/sys/mnttab.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/os/linux/sys/mount.h b/lib/libspl/include/os/linux/sys/mount.h index d7c6f750e23d..a98fd6974b90 100644 --- a/lib/libspl/include/os/linux/sys/mount.h +++ b/lib/libspl/include/os/linux/sys/mount.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/os/linux/sys/param.h b/lib/libspl/include/os/linux/sys/param.h index 26335187fdca..c35678529ba8 100644 --- a/lib/libspl/include/os/linux/sys/param.h +++ b/lib/libspl/include/os/linux/sys/param.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/os/linux/sys/stat.h b/lib/libspl/include/os/linux/sys/stat.h index 3e8d27e4c19a..e7f592620512 100644 --- a/lib/libspl/include/os/linux/sys/stat.h +++ b/lib/libspl/include/os/linux/sys/stat.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/os/linux/sys/sysmacros.h b/lib/libspl/include/os/linux/sys/sysmacros.h index 31f347c6fd5a..5765ee25c6cb 100644 --- a/lib/libspl/include/os/linux/sys/sysmacros.h +++ b/lib/libspl/include/os/linux/sys/sysmacros.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/os/linux/sys/zfs_context_os.h b/lib/libspl/include/os/linux/sys/zfs_context_os.h index 81ced5207749..04abfa09d8f1 100644 --- a/lib/libspl/include/os/linux/sys/zfs_context_os.h +++ b/lib/libspl/include/os/linux/sys/zfs_context_os.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/rpc/xdr.h b/lib/libspl/include/rpc/xdr.h index 51d71f693bbf..882b72456c21 100644 --- a/lib/libspl/include/rpc/xdr.h +++ b/lib/libspl/include/rpc/xdr.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/statcommon.h b/lib/libspl/include/statcommon.h index 1f376f5c7c24..971997a447a5 100644 --- a/lib/libspl/include/statcommon.h +++ b/lib/libspl/include/statcommon.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/stdlib.h b/lib/libspl/include/stdlib.h index a4ce4f781fc5..2dd371463d40 100644 --- a/lib/libspl/include/stdlib.h +++ b/lib/libspl/include/stdlib.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/string.h b/lib/libspl/include/string.h index a7d40fa61943..f8605790a6f3 100644 --- a/lib/libspl/include/string.h +++ b/lib/libspl/include/string.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/acl.h b/lib/libspl/include/sys/acl.h index 31168421b088..43646f3e28fc 100644 --- a/lib/libspl/include/sys/acl.h +++ b/lib/libspl/include/sys/acl.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/acl_impl.h b/lib/libspl/include/sys/acl_impl.h index 717334906415..e7f7bcd907cd 100644 --- a/lib/libspl/include/sys/acl_impl.h +++ b/lib/libspl/include/sys/acl_impl.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/asm_linkage.h b/lib/libspl/include/sys/asm_linkage.h new file mode 100644 index 000000000000..84aa0854a9ff --- /dev/null +++ b/lib/libspl/include/sys/asm_linkage.h @@ -0,0 +1,46 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or https://opensource.org/licenses/CDDL-1.0. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_ASM_LINKAGE_H +#define _SYS_ASM_LINKAGE_H + +#if defined(__i386) || defined(__amd64) + +#include <sys/ia32/asm_linkage.h> /* XX64 x86/sys/asm_linkage.h */ + +#endif + +#if defined(_KERNEL) && defined(HAVE_KERNEL_OBJTOOL) + +#include <asm/frame.h> + +#else /* userspace */ +#define FRAME_BEGIN +#define FRAME_END +#endif + + +#endif /* _SYS_ASM_LINKAGE_H */ diff --git a/lib/libspl/include/sys/callb.h b/lib/libspl/include/sys/callb.h index 8ffd18788865..783208ed16a4 100644 --- a/lib/libspl/include/sys/callb.h +++ b/lib/libspl/include/sys/callb.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/cmn_err.h b/lib/libspl/include/sys/cmn_err.h index 63ff4eb29bc8..6a29e6cff2e1 100644 --- a/lib/libspl/include/sys/cmn_err.h +++ b/lib/libspl/include/sys/cmn_err.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -27,4 +27,38 @@ #ifndef _LIBSPL_SYS_CMN_ERR_H #define _LIBSPL_SYS_CMN_ERR_H +#include <atomic.h> + +#define cmn_err_once(ce, ...) \ +do { \ + static volatile uint32_t printed = 0; \ + if (atomic_cas_32(&printed, 0, 1) == 0) { \ + cmn_err(ce, __VA_ARGS__); \ + } \ +} while (0) + +#define vcmn_err_once(ce, fmt, ap) \ +do { \ + static volatile uint32_t printed = 0; \ + if (atomic_cas_32(&printed, 0, 1) == 0) { \ + vcmn_err(ce, fmt, ap); \ + } \ +} while (0) + +#define zcmn_err_once(zone, ce, ...) \ +do { \ + static volatile uint32_t printed = 0; \ + if (atomic_cas_32(&printed, 0, 1) == 0) { \ + zcmn_err(zone, ce, __VA_ARGS__); \ + } \ +} while (0) + +#define vzcmn_err_once(zone, ce, fmt, ap) \ +do { \ + static volatile uint32_t printed = 0; \ + if (atomic_cas_32(&printed, 0, 1) == 0) { \ + vzcmn_err(zone, ce, fmt, ap); \ + } \ +} while (0) + #endif diff --git a/lib/libspl/include/sys/cred.h b/lib/libspl/include/sys/cred.h index 463b3abfc977..45eb65089df1 100644 --- a/lib/libspl/include/sys/cred.h +++ b/lib/libspl/include/sys/cred.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/debug.h b/lib/libspl/include/sys/debug.h index af18da94804c..ef3f0afb68c3 100644 --- a/lib/libspl/include/sys/debug.h +++ b/lib/libspl/include/sys/debug.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/dkio.h b/lib/libspl/include/sys/dkio.h index f3c641f669b7..9517b580bdf5 100644 --- a/lib/libspl/include/sys/dkio.h +++ b/lib/libspl/include/sys/dkio.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/dklabel.h b/lib/libspl/include/sys/dklabel.h index 8c2ca06c0cbc..a1fddd34799a 100644 --- a/lib/libspl/include/sys/dklabel.h +++ b/lib/libspl/include/sys/dklabel.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/dktp/fdisk.h b/lib/libspl/include/sys/dktp/fdisk.h index e90135f362e6..53db7d815438 100644 --- a/lib/libspl/include/sys/dktp/fdisk.h +++ b/lib/libspl/include/sys/dktp/fdisk.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/feature_tests.h b/lib/libspl/include/sys/feature_tests.h index 877e0a15a89e..396052f125af 100644 --- a/lib/libspl/include/sys/feature_tests.h +++ b/lib/libspl/include/sys/feature_tests.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/inttypes.h b/lib/libspl/include/sys/inttypes.h index d7d063985316..85ddef9ee74c 100644 --- a/lib/libspl/include/sys/inttypes.h +++ b/lib/libspl/include/sys/inttypes.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/isa_defs.h b/lib/libspl/include/sys/isa_defs.h index 3922445db31c..302f31e989cb 100644 --- a/lib/libspl/include/sys/isa_defs.h +++ b/lib/libspl/include/sys/isa_defs.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -227,9 +227,13 @@ extern "C" { * RISC-V arch specific defines * only RV64G (including atomic) LP64 is supported yet */ -#elif defined(__riscv) && defined(_LP64) && _LP64 && \ +#elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64 && \ defined(__riscv_atomic) && __riscv_atomic +#if !defined(_LP64) +#define _LP64 1 +#endif + #ifndef __riscv__ #define __riscv__ #endif @@ -242,10 +246,26 @@ extern "C" { #define _SUNOS_VTOC_16 +/* + * LoongArch arch specific defines + * only LoongArch64 is supported yet + */ +#elif defined(__loongarch__) && defined(__loongarch_lp64) + +#if !defined(_LP64) +#define _LP64 +#endif + +#define _ZFS_LITTLE_ENDIAN +#define _SUNOS_VTOC_16 + +/* not all LoongArch cores support unaligned accesses in hardware */ +#define _ALIGNMENT_REQUIRED 1 + #else /* * Currently supported: - * x86_64, x32, i386, arm, powerpc, s390, sparc, mips, and RV64G + * x86_64, x32, i386, arm, powerpc, s390, sparc, mips, RV64G, and LoongArch64 */ #error "Unsupported ISA type" #endif diff --git a/lib/libspl/include/sys/kmem.h b/lib/libspl/include/sys/kmem.h index 06c614e51d1c..9a4f63d0221c 100644 --- a/lib/libspl/include/sys/kmem.h +++ b/lib/libspl/include/sys/kmem.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/kstat.h b/lib/libspl/include/sys/kstat.h index c2de0778485c..e6057bf6b98e 100644 --- a/lib/libspl/include/sys/kstat.h +++ b/lib/libspl/include/sys/kstat.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/list.h b/lib/libspl/include/sys/list.h index 6db92ed42955..6c32402a7bd1 100644 --- a/lib/libspl/include/sys/list.h +++ b/lib/libspl/include/sys/list.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/list_impl.h b/lib/libspl/include/sys/list_impl.h index b5655b972c11..629db34da067 100644 --- a/lib/libspl/include/sys/list_impl.h +++ b/lib/libspl/include/sys/list_impl.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -39,7 +39,6 @@ struct list_node { }; struct list { - size_t list_size; size_t list_offset; struct list_node list_head; }; diff --git a/lib/libspl/include/sys/mhd.h b/lib/libspl/include/sys/mhd.h index fcc062d51c84..956009b499ee 100644 --- a/lib/libspl/include/sys/mhd.h +++ b/lib/libspl/include/sys/mhd.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/mkdev.h b/lib/libspl/include/sys/mkdev.h index 5978de65de50..4878920f3f13 100644 --- a/lib/libspl/include/sys/mkdev.h +++ b/lib/libspl/include/sys/mkdev.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/policy.h b/lib/libspl/include/sys/policy.h index 2f695b35cd0b..b0a810f09841 100644 --- a/lib/libspl/include/sys/policy.h +++ b/lib/libspl/include/sys/policy.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/poll.h b/lib/libspl/include/sys/poll.h index 6ab0bddc0be5..8f6d591537b2 100644 --- a/lib/libspl/include/sys/poll.h +++ b/lib/libspl/include/sys/poll.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/priv.h b/lib/libspl/include/sys/priv.h index 76c76d1830c2..c3f8b7bc41c7 100644 --- a/lib/libspl/include/sys/priv.h +++ b/lib/libspl/include/sys/priv.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/processor.h b/lib/libspl/include/sys/processor.h index 78e95d01f1b5..d778438c1b3f 100644 --- a/lib/libspl/include/sys/processor.h +++ b/lib/libspl/include/sys/processor.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/sha2.h b/lib/libspl/include/sys/sha2.h deleted file mode 100644 index 8bdc23a5f61e..000000000000 --- a/lib/libspl/include/sys/sha2.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright 2009 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ -/* Copyright 2013 Saso Kiselkov. All rights reserved. */ - -#ifndef _SYS_SHA2_H -#define _SYS_SHA2_H - -#include <stdint.h> - -#ifdef __cplusplus -extern "C" { -#endif - -#define SHA256_DIGEST_LENGTH 32 /* SHA256 digest length in bytes */ -#define SHA384_DIGEST_LENGTH 48 /* SHA384 digest length in bytes */ -#define SHA512_DIGEST_LENGTH 64 /* SHA512 digest length in bytes */ - -/* Truncated versions of SHA-512 according to FIPS-180-4, section 5.3.6 */ -#define SHA512_224_DIGEST_LENGTH 28 /* SHA512/224 digest length */ -#define SHA512_256_DIGEST_LENGTH 32 /* SHA512/256 digest length */ - -#define SHA256_HMAC_BLOCK_SIZE 64 /* SHA256-HMAC block size */ -#define SHA512_HMAC_BLOCK_SIZE 128 /* SHA512-HMAC block size */ - -#define SHA256 0 -#define SHA256_HMAC 1 -#define SHA256_HMAC_GEN 2 -#define SHA384 3 -#define SHA384_HMAC 4 -#define SHA384_HMAC_GEN 5 -#define SHA512 6 -#define SHA512_HMAC 7 -#define SHA512_HMAC_GEN 8 -#define SHA512_224 9 -#define SHA512_256 10 - -/* - * SHA2 context. - * The contents of this structure are a private interface between the - * Init/Update/Final calls of the functions defined below. - * Callers must never attempt to read or write any of the fields - * in this structure directly. - */ -typedef struct { - uint32_t algotype; /* Algorithm Type */ - - /* state (ABCDEFGH) */ - union { - uint32_t s32[8]; /* for SHA256 */ - uint64_t s64[8]; /* for SHA384/512 */ - } state; - /* number of bits */ - union { - uint32_t c32[2]; /* for SHA256 , modulo 2^64 */ - uint64_t c64[2]; /* for SHA384/512, modulo 2^128 */ - } count; - union { - uint8_t buf8[128]; /* undigested input */ - uint32_t buf32[32]; /* realigned input */ - uint64_t buf64[16]; /* realigned input */ - } buf_un; -} SHA2_CTX; - -typedef SHA2_CTX SHA256_CTX; -typedef SHA2_CTX SHA384_CTX; -typedef SHA2_CTX SHA512_CTX; - -extern void SHA256Init(SHA256_CTX *); - -extern void SHA256Update(SHA256_CTX *, const void *, size_t); - -extern void SHA256Final(void *, SHA256_CTX *); - -extern void SHA384Init(SHA384_CTX *); - -extern void SHA384Update(SHA384_CTX *, const void *, size_t); - -extern void SHA384Final(void *, SHA384_CTX *); - -extern void SHA512Init(SHA512_CTX *); - -extern void SHA512Update(SHA512_CTX *, const void *, size_t); - -extern void SHA512Final(void *, SHA512_CTX *); - -extern void SHA2Init(uint64_t mech, SHA2_CTX *); - -extern void SHA2Update(SHA2_CTX *, const void *, size_t); - -extern void SHA2Final(void *, SHA2_CTX *); - -#ifdef _SHA2_IMPL -/* - * The following types/functions are all private to the implementation - * of the SHA2 functions and must not be used by consumers of the interface - */ - -/* - * List of support mechanisms in this module. - * - * It is important to note that in the module, division or modulus calculations - * are used on the enumerated type to determine which mechanism is being used; - * therefore, changing the order or additional mechanisms should be done - * carefully - */ -typedef enum sha2_mech_type { - SHA256_MECH_INFO_TYPE, /* SUN_CKM_SHA256 */ - SHA256_HMAC_MECH_INFO_TYPE, /* SUN_CKM_SHA256_HMAC */ - SHA256_HMAC_GEN_MECH_INFO_TYPE, /* SUN_CKM_SHA256_HMAC_GENERAL */ - SHA384_MECH_INFO_TYPE, /* SUN_CKM_SHA384 */ - SHA384_HMAC_MECH_INFO_TYPE, /* SUN_CKM_SHA384_HMAC */ - SHA384_HMAC_GEN_MECH_INFO_TYPE, /* SUN_CKM_SHA384_HMAC_GENERAL */ - SHA512_MECH_INFO_TYPE, /* SUN_CKM_SHA512 */ - SHA512_HMAC_MECH_INFO_TYPE, /* SUN_CKM_SHA512_HMAC */ - SHA512_HMAC_GEN_MECH_INFO_TYPE, /* SUN_CKM_SHA512_HMAC_GENERAL */ - SHA512_224_MECH_INFO_TYPE, /* SUN_CKM_SHA512_224 */ - SHA512_256_MECH_INFO_TYPE /* SUN_CKM_SHA512_256 */ -} sha2_mech_type_t; - -#endif /* _SHA2_IMPL */ - -#ifdef __cplusplus -} -#endif - -#endif /* _SYS_SHA2_H */ diff --git a/lib/libspl/include/sys/simd.h b/lib/libspl/include/sys/simd.h index 6a6d8b7c6191..41f9df506468 100644 --- a/lib/libspl/include/sys/simd.h +++ b/lib/libspl/include/sys/simd.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -20,8 +20,8 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. + * Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de> */ #ifndef _LIBSPL_SYS_SIMD_H @@ -30,6 +30,28 @@ #include <sys/isa_defs.h> #include <sys/types.h> +/* including <sys/auxv.h> clashes with AT_UID and others */ +#if defined(__arm__) || defined(__aarch64__) || defined(__powerpc__) +#if defined(__FreeBSD__) +#define AT_HWCAP 25 +#define AT_HWCAP2 26 +extern int elf_aux_info(int aux, void *buf, int buflen); +static inline unsigned long getauxval(unsigned long key) +{ + unsigned long val = 0UL; + + if (elf_aux_info((int)key, &val, sizeof (val)) != 0) + return (0UL); + + return (val); +} +#elif defined(__linux__) +#define AT_HWCAP 16 +#define AT_HWCAP2 26 +extern unsigned long getauxval(unsigned long type); +#endif /* __linux__ */ +#endif /* arm || aarch64 || powerpc */ + #if defined(__x86) #include <cpuid.h> @@ -78,7 +100,8 @@ typedef enum cpuid_inst_sets { AVX512VL, AES, PCLMULQDQ, - MOVBE + MOVBE, + SHA_NI } cpuid_inst_sets_t; /* @@ -103,6 +126,7 @@ typedef struct cpuid_feature_desc { #define _AES_BIT (1U << 25) #define _PCLMULQDQ_BIT (1U << 1) #define _MOVBE_BIT (1U << 22) +#define _SHA_NI_BIT (1U << 29) /* * Descriptions of supported instruction sets @@ -131,6 +155,7 @@ static const cpuid_feature_desc_t cpuid_features[] = { [AES] = {1U, 0U, _AES_BIT, ECX }, [PCLMULQDQ] = {1U, 0U, _PCLMULQDQ_BIT, ECX }, [MOVBE] = {1U, 0U, _MOVBE_BIT, ECX }, + [SHA_NI] = {7U, 0U, _SHA_NI_BIT, EBX }, }; /* @@ -204,6 +229,7 @@ CPUID_FEATURE_CHECK(avx512vl, AVX512VL); CPUID_FEATURE_CHECK(aes, AES); CPUID_FEATURE_CHECK(pclmulqdq, PCLMULQDQ); CPUID_FEATURE_CHECK(movbe, MOVBE); +CPUID_FEATURE_CHECK(shani, SHA_NI); /* * Detect register set support @@ -346,6 +372,15 @@ zfs_movbe_available(void) } /* + * Check if SHA_NI instruction is available + */ +static inline boolean_t +zfs_shani_available(void) +{ + return (__cpuid_has_shani()); +} + +/* * AVX-512 family of instruction sets: * * AVX512F Foundation @@ -443,72 +478,111 @@ zfs_avx512vbmi_available(void) __zmm_enabled()); } -#elif defined(__aarch64__) +#elif defined(__arm__) #define kfpu_allowed() 1 #define kfpu_initialize(tsk) do {} while (0) #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) -#elif defined(__powerpc__) +#define HWCAP_NEON 0x00001000 +#define HWCAP2_SHA2 0x00000008 + +/* + * Check if NEON is available + */ +static inline boolean_t +zfs_neon_available(void) +{ + unsigned long hwcap = getauxval(AT_HWCAP); + return (hwcap & HWCAP_NEON); +} + +/* + * Check if SHA2 is available + */ +static inline boolean_t +zfs_sha256_available(void) +{ + unsigned long hwcap = getauxval(AT_HWCAP); + return (hwcap & HWCAP2_SHA2); +} + +#elif defined(__aarch64__) #define kfpu_allowed() 1 #define kfpu_initialize(tsk) do {} while (0) #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) +#define HWCAP_FP 0x00000001 +#define HWCAP_SHA2 0x00000040 +#define HWCAP_SHA512 0x00200000 + /* - * Check if AltiVec instruction set is available - * No easy way beyond 'altivec works' :-( + * Check if NEON is available */ -#include <signal.h> -#include <setjmp.h> +static inline boolean_t +zfs_neon_available(void) +{ + unsigned long hwcap = getauxval(AT_HWCAP); + return (hwcap & HWCAP_FP); +} -#if defined(__ALTIVEC__) && !defined(__FreeBSD__) -static jmp_buf env; -static void sigillhandler(int x) +/* + * Check if SHA2 is available + */ +static inline boolean_t +zfs_sha256_available(void) { - (void) x; - longjmp(env, 1); + unsigned long hwcap = getauxval(AT_HWCAP); + return (hwcap & HWCAP_SHA2); } -#endif + +/* + * Check if SHA512 is available + */ +static inline boolean_t +zfs_sha512_available(void) +{ + unsigned long hwcap = getauxval(AT_HWCAP); + return (hwcap & HWCAP_SHA512); +} + +#elif defined(__powerpc__) + +#define kfpu_allowed() 0 +#define kfpu_initialize(tsk) do {} while (0) +#define kfpu_begin() do {} while (0) +#define kfpu_end() do {} while (0) + +#define PPC_FEATURE_HAS_ALTIVEC 0x10000000 +#define PPC_FEATURE_HAS_VSX 0x00000080 +#define PPC_FEATURE2_ARCH_2_07 0x80000000 static inline boolean_t zfs_altivec_available(void) { - boolean_t has_altivec = B_FALSE; -#if defined(__ALTIVEC__) && !defined(__FreeBSD__) - sighandler_t savesig; - savesig = signal(SIGILL, sigillhandler); - if (setjmp(env)) { - signal(SIGILL, savesig); - has_altivec = B_FALSE; - } else { - __asm__ __volatile__("vor 0,0,0\n" : : : "v0"); - signal(SIGILL, savesig); - has_altivec = B_TRUE; - } -#endif - return (has_altivec); + unsigned long hwcap = getauxval(AT_HWCAP); + return (hwcap & PPC_FEATURE_HAS_ALTIVEC); } + static inline boolean_t zfs_vsx_available(void) { - boolean_t has_vsx = B_FALSE; -#if defined(__ALTIVEC__) && !defined(__FreeBSD__) - sighandler_t savesig; - savesig = signal(SIGILL, sigillhandler); - if (setjmp(env)) { - signal(SIGILL, savesig); - has_vsx = B_FALSE; - } else { - __asm__ __volatile__("xssubsp 0,0,0\n"); - signal(SIGILL, savesig); - has_vsx = B_TRUE; - } -#endif - return (has_vsx); + unsigned long hwcap = getauxval(AT_HWCAP); + return (hwcap & PPC_FEATURE_HAS_VSX); } + +static inline boolean_t +zfs_isa207_available(void) +{ + unsigned long hwcap = getauxval(AT_HWCAP); + unsigned long hwcap2 = getauxval(AT_HWCAP2); + return ((hwcap & PPC_FEATURE_HAS_VSX) && + (hwcap2 & PPC_FEATURE2_ARCH_2_07)); +} + #else #define kfpu_allowed() 0 diff --git a/lib/libspl/include/sys/stack.h b/lib/libspl/include/sys/stack.h index 59807e97b6a0..ed63d3cb9da2 100644 --- a/lib/libspl/include/sys/stack.h +++ b/lib/libspl/include/sys/stack.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/stdtypes.h b/lib/libspl/include/sys/stdtypes.h index c26e2dc96c4e..9ad51a03f27c 100644 --- a/lib/libspl/include/sys/stdtypes.h +++ b/lib/libspl/include/sys/stdtypes.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/sunddi.h b/lib/libspl/include/sys/sunddi.h index ccd2b29b9b09..4e2c370f7b80 100644 --- a/lib/libspl/include/sys/sunddi.h +++ b/lib/libspl/include/sys/sunddi.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/systeminfo.h b/lib/libspl/include/sys/systeminfo.h index cc6c1793c00e..e0418db89fc6 100644 --- a/lib/libspl/include/sys/systeminfo.h +++ b/lib/libspl/include/sys/systeminfo.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/time.h b/lib/libspl/include/sys/time.h index c9f6165047d2..0f7d5196b31c 100644 --- a/lib/libspl/include/sys/time.h +++ b/lib/libspl/include/sys/time.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -101,7 +101,7 @@ gethrtime(void) { struct timespec ts; (void) clock_gettime(CLOCK_MONOTONIC, &ts); - return ((((u_int64_t)ts.tv_sec) * NANOSEC) + ts.tv_nsec); + return ((((uint64_t)ts.tv_sec) * NANOSEC) + ts.tv_nsec); } #endif /* _LIBSPL_SYS_TIME_H */ diff --git a/lib/libspl/include/sys/types.h b/lib/libspl/include/sys/types.h index 8dc38ae3394f..90e3cf9bdaf8 100644 --- a/lib/libspl/include/sys/types.h +++ b/lib/libspl/include/sys/types.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -47,31 +47,6 @@ typedef uint_t zoneid_t; typedef int projid_t; -/* - * Definitions remaining from previous partial support for 64-bit file - * offsets. This partial support for devices greater than 2gb requires - * compiler support for long long. - */ -#ifdef _LONG_LONG_LTOH -typedef union { - offset_t _f; /* Full 64 bit offset value */ - struct { - int32_t _l; /* lower 32 bits of offset value */ - int32_t _u; /* upper 32 bits of offset value */ - } _p; -} lloff_t; -#endif - -#ifdef _LONG_LONG_HTOL -typedef union { - offset_t _f; /* Full 64 bit offset value */ - struct { - int32_t _u; /* upper 32 bits of offset value */ - int32_t _l; /* lower 32 bits of offset value */ - } _p; -} lloff_t; -#endif - #include <sys/param.h> /* for NBBY */ #endif diff --git a/lib/libspl/include/sys/types32.h b/lib/libspl/include/sys/types32.h index bb41aa34bee0..eadc67c7122a 100644 --- a/lib/libspl/include/sys/types32.h +++ b/lib/libspl/include/sys/types32.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/uio.h b/lib/libspl/include/sys/uio.h index 81ade54b5409..665bfc42301b 100644 --- a/lib/libspl/include/sys/uio.h +++ b/lib/libspl/include/sys/uio.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -90,7 +90,7 @@ zfs_uio_iov_at_index(zfs_uio_t *uio, uint_t idx, void **base, uint64_t *len) } static inline void -zfs_uio_advance(zfs_uio_t *uio, size_t size) +zfs_uio_advance(zfs_uio_t *uio, ssize_t size) { uio->uio_resid -= size; uio->uio_loffset += size; diff --git a/lib/libspl/include/sys/vnode.h b/lib/libspl/include/sys/vnode.h index efcdd2c5a5ae..111cc8fd8357 100644 --- a/lib/libspl/include/sys/vnode.h +++ b/lib/libspl/include/sys/vnode.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/sys/zone.h b/lib/libspl/include/sys/zone.h index bbb964dcef22..00d740fb6fff 100644 --- a/lib/libspl/include/sys/zone.h +++ b/lib/libspl/include/sys/zone.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/umem.h b/lib/libspl/include/umem.h index 288aaf3ecc36..9039212baf14 100644 --- a/lib/libspl/include/umem.h +++ b/lib/libspl/include/umem.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -83,6 +83,7 @@ const char *_umem_debug_init(void); const char *_umem_options_init(void); const char *_umem_logging_init(void); +__attribute__((malloc, alloc_size(1))) static inline void * umem_alloc(size_t size, int flags) { @@ -95,6 +96,7 @@ umem_alloc(size_t size, int flags) return (ptr); } +__attribute__((malloc, alloc_size(1))) static inline void * umem_alloc_aligned(size_t size, size_t align, int flags) { @@ -116,6 +118,7 @@ umem_alloc_aligned(size_t size, size_t align, int flags) return (ptr); } +__attribute__((malloc, alloc_size(1))) static inline void * umem_zalloc(size_t size, int flags) { @@ -134,6 +137,21 @@ umem_free(const void *ptr, size_t size __maybe_unused) free((void *)ptr); } +/* + * umem_free_aligned was added for supporting portability + * with non-POSIX platforms that require a different free + * to be used with aligned allocations. + */ +static inline void +umem_free_aligned(void *ptr, size_t size __maybe_unused) +{ +#ifndef _WIN32 + free((void *)ptr); +#else + _aligned_free(ptr); +#endif +} + static inline void umem_nofail_callback(umem_nofail_callback_t *cb __maybe_unused) {} @@ -170,6 +188,7 @@ umem_cache_destroy(umem_cache_t *cp) umem_free(cp, sizeof (umem_cache_t)); } +__attribute__((malloc)) static inline void * umem_cache_alloc(umem_cache_t *cp, int flags) { @@ -193,7 +212,10 @@ umem_cache_free(umem_cache_t *cp, void *ptr) if (cp->cache_destructor) cp->cache_destructor(ptr, cp->cache_private); - umem_free(ptr, cp->cache_bufsize); + if (cp->cache_align != 0) + umem_free_aligned(ptr, cp->cache_bufsize); + else + umem_free(ptr, cp->cache_bufsize); } static inline void diff --git a/lib/libspl/include/unistd.h b/lib/libspl/include/unistd.h index 0246991b4b61..edb610e87848 100644 --- a/lib/libspl/include/unistd.h +++ b/lib/libspl/include/unistd.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/include/zone.h b/lib/libspl/include/zone.h index 0af4e7a2fa49..341d574a7460 100644 --- a/lib/libspl/include/zone.h +++ b/lib/libspl/include/zone.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/libspl_impl.h b/lib/libspl/libspl_impl.h index cda56e64c962..3a19df64440c 100644 --- a/lib/libspl/libspl_impl.h +++ b/lib/libspl/libspl_impl.h @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/list.c b/lib/libspl/list.c index 0f2f3731b235..aaa71dc73c98 100644 --- a/lib/libspl/list.c +++ b/lib/libspl/list.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -65,7 +65,8 @@ list_create(list_t *list, size_t size, size_t offset) ASSERT(size > 0); ASSERT(size >= offset + sizeof (list_node_t)); - list->list_size = size; + (void) size; + list->list_offset = offset; list->list_head.next = list->list_head.prev = &list->list_head; } @@ -194,7 +195,6 @@ list_move_tail(list_t *dst, list_t *src) list_node_t *dstnode = &dst->list_head; list_node_t *srcnode = &src->list_head; - ASSERT(dst->list_size == src->list_size); ASSERT(dst->list_offset == src->list_offset); if (list_empty(src)) diff --git a/lib/libspl/mkdirp.c b/lib/libspl/mkdirp.c index fce2c1c82eb7..dff95a192af7 100644 --- a/lib/libspl/mkdirp.c +++ b/lib/libspl/mkdirp.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/os/freebsd/getexecname.c b/lib/libspl/os/freebsd/getexecname.c index 256b28c1b70e..5f1692adf1dd 100644 --- a/lib/libspl/os/freebsd/getexecname.c +++ b/lib/libspl/os/freebsd/getexecname.c @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/os/freebsd/gethostid.c b/lib/libspl/os/freebsd/gethostid.c index 7bd567fe61b5..4e095d670710 100644 --- a/lib/libspl/os/freebsd/gethostid.c +++ b/lib/libspl/os/freebsd/gethostid.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/os/freebsd/getmntany.c b/lib/libspl/os/freebsd/getmntany.c index 0ef24059e84f..fc1c9de6df81 100644 --- a/lib/libspl/os/freebsd/getmntany.c +++ b/lib/libspl/os/freebsd/getmntany.c @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -36,6 +36,7 @@ #include <sys/sysmacros.h> #include <sys/stat.h> #include <unistd.h> +#include <libzutil.h> int getextmntent(const char *path, struct extmnttab *entry, struct stat64 *statbuf) @@ -49,13 +50,13 @@ getextmntent(const char *path, struct extmnttab *entry, struct stat64 *statbuf) if (stat64(path, statbuf) != 0) { (void) fprintf(stderr, "cannot open '%s': %s\n", - path, strerror(errno)); + path, zfs_strerror(errno)); return (-1); } if (statfs(path, &sfs) != 0) { (void) fprintf(stderr, "%s: %s\n", path, - strerror(errno)); + zfs_strerror(errno)); return (-1); } statfs2mnttab(&sfs, (struct mnttab *)entry); diff --git a/lib/libspl/os/freebsd/mnttab.c b/lib/libspl/os/freebsd/mnttab.c index f0cc04d89ded..26a4cd992cfb 100644 --- a/lib/libspl/os/freebsd/mnttab.c +++ b/lib/libspl/os/freebsd/mnttab.c @@ -29,9 +29,6 @@ * functions. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/param.h> #include <sys/mount.h> #include <sys/mntent.h> @@ -74,7 +71,7 @@ hasmntopt(struct mnttab *mnt, const char *opt) if (mnt->mnt_mntopts == NULL) return (NULL); - (void) strcpy(opts, mnt->mnt_mntopts); + (void) strlcpy(opts, mnt->mnt_mntopts, MNT_LINE_MAX); f = mntopt(&opts); for (; *f; f = mntopt(&opts)) { if (strncmp(opt, f, strlen(opt)) == 0) diff --git a/lib/libspl/os/linux/getexecname.c b/lib/libspl/os/linux/getexecname.c index a640556bcbec..4b54c193973a 100644 --- a/lib/libspl/os/linux/getexecname.c +++ b/lib/libspl/os/linux/getexecname.c @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/os/linux/gethostid.c b/lib/libspl/os/linux/gethostid.c index c04b7fd3eef3..fcef8798c615 100644 --- a/lib/libspl/os/linux/gethostid.c +++ b/lib/libspl/os/linux/gethostid.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -59,6 +59,7 @@ unsigned long get_system_hostid(void) { unsigned long hostid = get_spl_hostid(); + uint32_t system_hostid; /* * We do not use gethostid(3) because it can return a bogus ID, @@ -69,8 +70,11 @@ get_system_hostid(void) if (hostid == 0) { int fd = open("/etc/hostid", O_RDONLY | O_CLOEXEC); if (fd >= 0) { - if (read(fd, &hostid, 4) < 0) + if (read(fd, &system_hostid, sizeof (system_hostid)) + != sizeof (system_hostid)) hostid = 0; + else + hostid = system_hostid; (void) close(fd); } } diff --git a/lib/libspl/os/linux/getmntany.c b/lib/libspl/os/linux/getmntany.c index 3713ff38e17f..a46c4e931719 100644 --- a/lib/libspl/os/linux/getmntany.c +++ b/lib/libspl/os/linux/getmntany.c @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -38,6 +38,7 @@ #include <sys/sysmacros.h> #include <sys/stat.h> #include <unistd.h> +#include <libzutil.h> #define BUFSIZE (MNT_LINE_MAX + 2) @@ -122,7 +123,7 @@ getextmntent(const char *path, struct extmnttab *entry, struct stat64 *statbuf) */ if (stat64(path, statbuf) != 0) { (void) fprintf(stderr, "cannot open '%s': %s\n", - path, strerror(errno)); + path, zfs_strerror(errno)); return (-1); } diff --git a/lib/libspl/os/linux/zone.c b/lib/libspl/os/linux/zone.c index 65c02dfe7aab..f8a10bfa167a 100644 --- a/lib/libspl/os/linux/zone.c +++ b/lib/libspl/os/linux/zone.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -41,21 +41,21 @@ getzoneid(void) int c = snprintf(path, sizeof (path), "/proc/self/ns/user"); /* This API doesn't have any error checking... */ - if (c < 0) - return (0); + if (c < 0 || c >= sizeof (path)) + return (GLOBAL_ZONEID); ssize_t r = readlink(path, buf, sizeof (buf) - 1); if (r < 0) - return (0); + return (GLOBAL_ZONEID); cp = strchr(buf, '['); if (cp == NULL) - return (0); + return (GLOBAL_ZONEID); cp++; unsigned long n = strtoul(cp, NULL, 10); if (n == ULONG_MAX && errno == ERANGE) - return (0); + return (GLOBAL_ZONEID); zoneid_t z = (zoneid_t)n; return (z); diff --git a/lib/libspl/page.c b/lib/libspl/page.c index 5b0d3f2e5786..fb8827867781 100644 --- a/lib/libspl/page.c +++ b/lib/libspl/page.c @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/strlcat.c b/lib/libspl/strlcat.c index 4528d875ed5e..88e244534ca1 100644 --- a/lib/libspl/strlcat.c +++ b/lib/libspl/strlcat.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/strlcpy.c b/lib/libspl/strlcpy.c index d483b91f6121..c3f59bd84b0d 100644 --- a/lib/libspl/strlcpy.c +++ b/lib/libspl/strlcpy.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libspl/timestamp.c b/lib/libspl/timestamp.c index 8d14ae645734..9b435221f5fb 100644 --- a/lib/libspl/timestamp.c +++ b/lib/libspl/timestamp.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libtpool/thread_pool.c b/lib/libtpool/thread_pool.c index 58b706ddebf5..7802f8c1750f 100644 --- a/lib/libtpool/thread_pool.c +++ b/lib/libtpool/thread_pool.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -28,6 +28,7 @@ #include <signal.h> #include <errno.h> #include <assert.h> +#include <limits.h> #include "thread_pool_impl.h" static pthread_mutex_t thread_pool_lock = PTHREAD_MUTEX_INITIALIZER; diff --git a/lib/libtpool/thread_pool_impl.h b/lib/libtpool/thread_pool_impl.h index 5349c2ade8c3..6cde8d0d235c 100644 --- a/lib/libtpool/thread_pool_impl.h +++ b/lib/libtpool/thread_pool_impl.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libuutil/Makefile.am b/lib/libuutil/Makefile.am index 339f9a064745..b973ce3cca4c 100644 --- a/lib/libuutil/Makefile.am +++ b/lib/libuutil/Makefile.am @@ -9,7 +9,6 @@ libuutil_la_SOURCES = \ %D%/uu_ident.c \ %D%/uu_list.c \ %D%/uu_misc.c \ - %D%/uu_pname.c \ %D%/uu_string.c libuutil_la_LIBADD = \ diff --git a/lib/libuutil/libuutil.abi b/lib/libuutil/libuutil.abi index 766d8843000d..e942d24c6531 100644 --- a/lib/libuutil/libuutil.abi +++ b/lib/libuutil/libuutil.abi @@ -1,6 +1,5 @@ <abi-corpus version='2.0' architecture='elf-amd-x86_64' soname='libuutil.so.3'> <elf-needed> - <dependency name='libpthread.so.0'/> <dependency name='libc.so.6'/> <dependency name='ld-linux-x86-64.so.2'/> </elf-needed> @@ -173,12 +172,12 @@ <elf-symbol name='membar_enter' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='membar_exit' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='membar_producer' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='membar_sync' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='mkdirp' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='print_timestamp' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='spl_pagesize' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='strlcat' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='strlcpy' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_alt_exit' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_avl_create' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_avl_destroy' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_avl_find' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -203,13 +202,8 @@ <elf-symbol name='uu_avl_walk_next' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_avl_walk_start' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_check_name' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_die' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_error' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_exit_fatal' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_exit_ok' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_exit_usage' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_free' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_getpname' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_list_create' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_list_destroy' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_list_find' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -239,145 +233,21 @@ <elf-symbol name='uu_msprintf' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_panic' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_set_error' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_setpname' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_strbw' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_strcaseeq' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_strdup' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_streq' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_strerror' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_strndup' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_vdie' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_vwarn' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_vxdie' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_warn' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_xdie' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='uu_zalloc' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-function-symbols> - <elf-variable-symbols> - <elf-symbol name='uu_exit_fatal_value' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_exit_ok_value' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='uu_exit_usage_value' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - </elf-variable-symbols> - <abi-instr address-size='64' path='../../module/avl/avl.c' language='LANG_C99'> - <typedef-decl name='avl_tree_t' type-id='b351119f' id='f20fbd51'/> - <typedef-decl name='avl_index_t' type-id='e475ab95' id='fba6cb51'/> - <pointer-type-def type-id='fba6cb51' size-in-bits='64' id='32adbf30'/> - <pointer-type-def type-id='f20fbd51' size-in-bits='64' id='a3681dea'/> - <function-decl name='avl_walk' mangled-name='avl_walk' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_walk'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='eaa32e2f' name='oldnode'/> - <parameter type-id='95e97e5e' name='left'/> - <return type-id='eaa32e2f'/> - </function-decl> - <function-decl name='avl_first' mangled-name='avl_first' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_first'> - <parameter type-id='a3681dea' name='tree'/> - <return type-id='eaa32e2f'/> - </function-decl> - <function-decl name='avl_last' mangled-name='avl_last' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_last'> - <parameter type-id='a3681dea' name='tree'/> - <return type-id='eaa32e2f'/> - </function-decl> - <function-decl name='avl_nearest' mangled-name='avl_nearest' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_nearest'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='fba6cb51' name='where'/> - <parameter type-id='95e97e5e' name='direction'/> - <return type-id='eaa32e2f'/> - </function-decl> - <function-decl name='avl_find' mangled-name='avl_find' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_find'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='eaa32e2f' name='value'/> - <parameter type-id='32adbf30' name='where'/> - <return type-id='eaa32e2f'/> - </function-decl> - <function-decl name='avl_insert' mangled-name='avl_insert' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_insert'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='eaa32e2f' name='new_data'/> - <parameter type-id='fba6cb51' name='where'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='avl_insert_here' mangled-name='avl_insert_here' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_insert_here'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='eaa32e2f' name='new_data'/> - <parameter type-id='eaa32e2f' name='here'/> - <parameter type-id='95e97e5e' name='direction'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='avl_add' mangled-name='avl_add' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_add'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='eaa32e2f' name='new_node'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='avl_remove' mangled-name='avl_remove' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_remove'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='eaa32e2f' name='data'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='avl_update_lt' mangled-name='avl_update_lt' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_update_lt'> - <parameter type-id='a3681dea' name='t'/> - <parameter type-id='eaa32e2f' name='obj'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='avl_update_gt' mangled-name='avl_update_gt' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_update_gt'> - <parameter type-id='a3681dea' name='t'/> - <parameter type-id='eaa32e2f' name='obj'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='avl_update' mangled-name='avl_update' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_update'> - <parameter type-id='a3681dea' name='t'/> - <parameter type-id='eaa32e2f' name='obj'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='avl_swap' mangled-name='avl_swap' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_swap'> - <parameter type-id='a3681dea' name='tree1'/> - <parameter type-id='a3681dea' name='tree2'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='avl_create' mangled-name='avl_create' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_create'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='585e1de9' name='compar'/> - <parameter type-id='b59d7dce' name='size'/> - <parameter type-id='b59d7dce' name='offset'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='avl_destroy' mangled-name='avl_destroy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_destroy'> - <parameter type-id='a3681dea' name='tree'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='avl_numnodes' mangled-name='avl_numnodes' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_numnodes'> - <parameter type-id='a3681dea' name='tree'/> - <return type-id='ee1f298e'/> - </function-decl> - <function-decl name='avl_is_empty' mangled-name='avl_is_empty' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_is_empty'> - <parameter type-id='a3681dea' name='tree'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='avl_destroy_nodes' mangled-name='avl_destroy_nodes' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_destroy_nodes'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='63e171df' name='cookie'/> - <return type-id='eaa32e2f'/> - </function-decl> - <function-type size-in-bits='64' id='96ee24a5'> - <parameter type-id='eaa32e2f'/> - <parameter type-id='eaa32e2f'/> - <return type-id='95e97e5e'/> - </function-type> - </abi-instr> - <abi-instr address-size='64' path='assert.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/assert.c' language='LANG_C99'> <function-decl name='libspl_set_assert_ok' mangled-name='libspl_set_assert_ok' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_set_assert_ok'> <parameter type-id='c19b74c3' name='val'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='libspl_assertf' mangled-name='libspl_assertf' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_assertf'> - <parameter type-id='80f4b756' name='file'/> - <parameter type-id='80f4b756' name='func'/> - <parameter type-id='95e97e5e' name='line'/> - <parameter type-id='80f4b756' name='format'/> - <parameter is-variadic='yes'/> - <return type-id='48b5725f'/> - </function-decl> </abi-instr> - <abi-instr address-size='64' path='atomic.c' language='LANG_C99'> - <type-decl name='unsigned short int' size-in-bits='16' id='8efea9e5'/> + <abi-instr address-size='64' path='lib/libspl/atomic.c' language='LANG_C99'> <typedef-decl name='int16_t' type-id='03896e23' id='23bd8cb5'/> <typedef-decl name='int32_t' type-id='33f57a65' id='3ff5601b'/> <typedef-decl name='uint16_t' type-id='253c2d2a' id='149c6638'/> @@ -448,11 +318,6 @@ <parameter type-id='3ff5601b' name='bits'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='atomic_add_long' mangled-name='atomic_add_long' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_add_long'> - <parameter type-id='64698d33' name='target'/> - <parameter type-id='bd54fe1a' name='bits'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='atomic_sub_ptr' mangled-name='atomic_sub_ptr' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_sub_ptr'> <parameter type-id='fe09dd29' name='target'/> <parameter type-id='79a0948f' name='bits'/> @@ -473,11 +338,6 @@ <parameter type-id='3ff5601b' name='bits'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='atomic_sub_long' mangled-name='atomic_sub_long' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_sub_long'> - <parameter type-id='64698d33' name='target'/> - <parameter type-id='bd54fe1a' name='bits'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='atomic_or_8' mangled-name='atomic_or_8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_or_8'> <parameter type-id='aa323ea4' name='target'/> <parameter type-id='b96825af' name='bits'/> @@ -714,13 +574,18 @@ <function-decl name='membar_consumer' mangled-name='membar_consumer' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='membar_consumer'> <return type-id='48b5725f'/> </function-decl> + <type-decl name='unsigned short int' size-in-bits='16' id='8efea9e5'/> </abi-instr> - <abi-instr address-size='64' path='getexecname.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/getexecname.c' language='LANG_C99'> <function-decl name='getexecname' mangled-name='getexecname' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getexecname'> <return type-id='80f4b756'/> </function-decl> + <function-decl name='getexecname_impl' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='26a90f95'/> + <return type-id='79a0948f'/> + </function-decl> </abi-instr> - <abi-instr address-size='64' path='list.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/list.c' language='LANG_C99'> <typedef-decl name='list_node_t' type-id='b0b5e45e' id='b21843b2'/> <typedef-decl name='list_t' type-id='e824dae9' id='0899125f'/> <class-decl name='list_node' size-in-bits='128' is-struct='yes' visibility='default' id='b0b5e45e'> @@ -831,34 +696,113 @@ <return type-id='95e97e5e'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='mkdirp.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/mkdirp.c' language='LANG_C99'> <typedef-decl name='__mode_t' type-id='f0981eeb' id='e1c52942'/> <typedef-decl name='mode_t' type-id='e1c52942' id='d50d396c'/> + <typedef-decl name='wchar_t' type-id='95e97e5e' id='928221d2'/> + <qualified-type-def type-id='26a90f95' restrict='yes' id='266fe297'/> + <qualified-type-def type-id='928221d2' const='yes' id='effb3702'/> + <pointer-type-def type-id='effb3702' size-in-bits='64' id='f077d3f8'/> + <qualified-type-def type-id='f077d3f8' restrict='yes' id='598aab80'/> + <pointer-type-def type-id='928221d2' size-in-bits='64' id='323d93c1'/> + <qualified-type-def type-id='323d93c1' restrict='yes' id='f1358bc3'/> + <function-decl name='calloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='strdup' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strrchr' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='access' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__mbstowcs_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='f1358bc3'/> + <parameter type-id='9d26089a'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='__wcstombs_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='266fe297'/> + <parameter type-id='598aab80'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='mkdir' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='e1c52942'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='mkdirp' mangled-name='mkdirp' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mkdirp'> <parameter type-id='80f4b756' name='d'/> <parameter type-id='d50d396c' name='mode'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='os/linux/gethostid.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/os/linux/getexecname.c' language='LANG_C99'> + <function-decl name='__readlink_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='266fe297'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='79a0948f'/> + </function-decl> + </abi-instr> + <abi-instr address-size='64' path='lib/libspl/os/linux/gethostid.c' language='LANG_C99'> + <type-decl name='long long unsigned int' size-in-bits='64' id='3a47d82b'/> + <pointer-type-def type-id='26a90f95' size-in-bits='64' id='9b23c9ad'/> + <qualified-type-def type-id='9b23c9ad' restrict='yes' id='8c85230f'/> + <function-decl name='fclose' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strtoull' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='8c85230f'/> + <parameter type-id='95e97e5e'/> + <return type-id='3a47d82b'/> + </function-decl> + <function-decl name='getenv' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='close' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__open_too_many_args' visibility='default' binding='global' size-in-bits='64'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__open_missing_mode' visibility='default' binding='global' size-in-bits='64'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__read_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='79a0948f'/> + </function-decl> <function-decl name='get_system_hostid' mangled-name='get_system_hostid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='get_system_hostid'> <return type-id='7359adad'/> </function-decl> <type-decl name='unsigned long int' size-in-bits='64' id='7359adad'/> </abi-instr> - <abi-instr address-size='64' path='os/linux/getmntany.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/os/linux/getmntany.c' language='LANG_C99'> <array-type-def dimensions='1' type-id='03085adc' size-in-bits='192' id='083f8d58'> <subrange length='3' type-id='7359adad' id='56f209d2'/> </array-type-def> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='8' id='89feb1ec'> - <subrange length='1' type-id='7359adad' id='52f813b4'/> - </array-type-def> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='160' id='664ac0b7'> - <subrange length='20' type-id='7359adad' id='fdca39cf'/> - </array-type-def> - <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> - <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> - <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> <class-decl name='mnttab' size-in-bits='256' is-struct='yes' visibility='default' id='1b055409'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='mnt_special' type-id='26a90f95' visibility='default'/> @@ -893,6 +837,26 @@ <var-decl name='mnt_minor' type-id='3502e3ff' visibility='default'/> </data-member> </class-decl> + <class-decl name='mntent' size-in-bits='320' is-struct='yes' visibility='default' id='56fe4a37'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='mnt_fsname' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='mnt_dir' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='mnt_type' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='mnt_opts' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='mnt_freq' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='288'> + <var-decl name='mnt_passno' type-id='95e97e5e' visibility='default'/> + </data-member> + </class-decl> <class-decl name='stat64' size-in-bits='1152' is-struct='yes' visibility='default' id='0bbec9cd'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='st_dev' type-id='35ed8932' visibility='default'/> @@ -945,103 +909,9 @@ <typedef-decl name='__gid_t' type-id='f0981eeb' id='d94ec6d9'/> <typedef-decl name='__ino64_t' type-id='7359adad' id='71288a47'/> <typedef-decl name='__nlink_t' type-id='7359adad' id='80f0b9df'/> - <typedef-decl name='__off_t' type-id='bd54fe1a' id='79989e9c'/> - <typedef-decl name='__off64_t' type-id='bd54fe1a' id='724e4de6'/> - <typedef-decl name='__time_t' type-id='bd54fe1a' id='65eda9c0'/> <typedef-decl name='__blksize_t' type-id='bd54fe1a' id='d3f10a7f'/> <typedef-decl name='__blkcnt64_t' type-id='bd54fe1a' id='4e711bf1'/> <typedef-decl name='__syscall_slong_t' type-id='bd54fe1a' id='03085adc'/> - <typedef-decl name='FILE' type-id='ec1ed955' id='aa12d1ba'/> - <typedef-decl name='_IO_lock_t' type-id='48b5725f' id='bb4788fa'/> - <class-decl name='_IO_FILE' size-in-bits='1728' is-struct='yes' visibility='default' id='ec1ed955'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='_flags' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='_IO_read_ptr' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='_IO_read_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='_IO_read_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='_IO_write_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='_IO_write_ptr' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='_IO_write_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='_IO_buf_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='_IO_buf_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='_IO_save_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='_IO_backup_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='_IO_save_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='_markers' type-id='e4c6fa61' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='_chain' type-id='dca988a5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='896'> - <var-decl name='_fileno' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='928'> - <var-decl name='_flags2' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='_old_offset' type-id='79989e9c' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1024'> - <var-decl name='_cur_column' type-id='8efea9e5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1040'> - <var-decl name='_vtable_offset' type-id='28577a57' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1048'> - <var-decl name='_shortbuf' type-id='89feb1ec' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1088'> - <var-decl name='_lock' type-id='cecf4ea7' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1152'> - <var-decl name='_offset' type-id='724e4de6' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1216'> - <var-decl name='_codecvt' type-id='570f8c59' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='_wide_data' type-id='c65a1f29' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='_freeres_list' type-id='dca988a5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='_freeres_buf' type-id='eaa32e2f' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='__pad5' type-id='b59d7dce' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='_mode' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1568'> - <var-decl name='_unused2' type-id='664ac0b7' visibility='default'/> - </data-member> - </class-decl> <class-decl name='timespec' size-in-bits='128' is-struct='yes' visibility='default' id='a9c79a1f'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='tv_sec' type-id='65eda9c0' visibility='default'/> @@ -1050,18 +920,39 @@ <var-decl name='tv_nsec' type-id='03085adc' visibility='default'/> </data-member> </class-decl> - <pointer-type-def type-id='aa12d1ba' size-in-bits='64' id='822cd80b'/> - <pointer-type-def type-id='ec1ed955' size-in-bits='64' id='dca988a5'/> - <pointer-type-def type-id='a4036571' size-in-bits='64' id='570f8c59'/> - <pointer-type-def type-id='bb4788fa' size-in-bits='64' id='cecf4ea7'/> - <pointer-type-def type-id='010ae0b9' size-in-bits='64' id='e4c6fa61'/> - <pointer-type-def type-id='79bd3751' size-in-bits='64' id='c65a1f29'/> <pointer-type-def type-id='0c544dc0' size-in-bits='64' id='394fc496'/> + <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='1b055409' size-in-bits='64' id='9d424d31'/> <pointer-type-def type-id='0bbec9cd' size-in-bits='64' id='62f7a03d'/> - <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> - <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> - <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> + <qualified-type-def type-id='62f7a03d' restrict='yes' id='f1cadedf'/> + <function-decl name='getmntent_r' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='3cad23cd'/> + <parameter type-id='266fe297'/> + <parameter type-id='95e97e5e'/> + <return type-id='b6b61d2f'/> + </function-decl> + <function-decl name='feof' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strerror' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='__fprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='stat64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='f1cadedf'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='getmntany' mangled-name='getmntany' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getmntany'> <parameter type-id='822cd80b' name='fp'/> <parameter type-id='9d424d31' name='mgetp'/> @@ -1080,18 +971,28 @@ <return type-id='95e97e5e'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='os/linux/zone.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/os/linux/zone.c' language='LANG_C99'> <typedef-decl name='zoneid_t' type-id='3502e3ff' id='4da03624'/> + <function-decl name='strtoul' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='8c85230f'/> + <parameter type-id='95e97e5e'/> + <return type-id='7359adad'/> + </function-decl> <function-decl name='getzoneid' mangled-name='getzoneid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getzoneid'> <return type-id='4da03624'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='page.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/page.c' language='LANG_C99'> + <function-decl name='sysconf' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='bd54fe1a'/> + </function-decl> <function-decl name='spl_pagesize' mangled-name='spl_pagesize' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='spl_pagesize'> <return type-id='b59d7dce'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='strlcat.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/strlcat.c' language='LANG_C99'> <function-decl name='strlcat' mangled-name='strlcat' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='strlcat'> <parameter type-id='26a90f95' name='dst'/> <parameter type-id='80f4b756' name='src'/> @@ -1099,30 +1000,118 @@ <return type-id='b59d7dce'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='strlcpy.c' language='LANG_C99'> - <function-decl name='strlcpy' mangled-name='strlcpy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='strlcpy'> - <parameter type-id='26a90f95' name='dst'/> - <parameter type-id='80f4b756' name='src'/> - <parameter type-id='b59d7dce' name='len'/> + <abi-instr address-size='64' path='lib/libspl/timestamp.c' language='LANG_C99'> + <typedef-decl name='nl_item' type-id='95e97e5e' id='03b79a94'/> + <typedef-decl name='__time_t' type-id='bd54fe1a' id='65eda9c0'/> + <class-decl name='tm' size-in-bits='448' is-struct='yes' visibility='default' id='dddf6ca2'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='tm_sec' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='tm_min' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='tm_hour' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='tm_mday' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='tm_mon' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='160'> + <var-decl name='tm_year' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='tm_wday' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='224'> + <var-decl name='tm_yday' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='tm_isdst' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='tm_gmtoff' type-id='bd54fe1a' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='tm_zone' type-id='80f4b756' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='time_t' type-id='65eda9c0' id='c9d12d66'/> + <qualified-type-def type-id='c9d12d66' const='yes' id='588b3216'/> + <pointer-type-def type-id='588b3216' size-in-bits='64' id='9f201474'/> + <qualified-type-def type-id='9f201474' restrict='yes' id='d6e2847c'/> + <qualified-type-def type-id='dddf6ca2' const='yes' id='e824a34f'/> + <pointer-type-def type-id='e824a34f' size-in-bits='64' id='d6ad37ff'/> + <qualified-type-def type-id='d6ad37ff' restrict='yes' id='f8c6051d'/> + <pointer-type-def type-id='c9d12d66' size-in-bits='64' id='b2eb2c3f'/> + <pointer-type-def type-id='dddf6ca2' size-in-bits='64' id='d915a820'/> + <qualified-type-def type-id='d915a820' restrict='yes' id='f099ad08'/> + <function-decl name='nl_langinfo' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='03b79a94'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='time' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b2eb2c3f'/> + <return type-id='c9d12d66'/> + </function-decl> + <function-decl name='strftime' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='266fe297'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='9d26089a'/> + <parameter type-id='f8c6051d'/> <return type-id='b59d7dce'/> </function-decl> - </abi-instr> - <abi-instr address-size='64' path='timestamp.c' language='LANG_C99'> + <function-decl name='localtime_r' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='d6e2847c'/> + <parameter type-id='f099ad08'/> + <return type-id='d915a820'/> + </function-decl> + <function-decl name='__printf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='print_timestamp' mangled-name='print_timestamp' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='print_timestamp'> <parameter type-id='3502e3ff' name='timestamp_fmt'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='uu_alloc.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libuutil/uu_alloc.c' language='LANG_C99'> <type-decl name='char' size-in-bits='8' id='a84c031d'/> + <type-decl name='unsigned int' size-in-bits='32' id='f0981eeb'/> <type-decl name='unsigned long int' size-in-bits='64' id='7359adad'/> <type-decl name='variadic parameter type' id='2c1145c5'/> <type-decl name='void' id='48b5725f'/> + <typedef-decl name='uint_t' type-id='f0981eeb' id='3502e3ff'/> <typedef-decl name='size_t' type-id='7359adad' id='b59d7dce'/> <pointer-type-def type-id='a84c031d' size-in-bits='64' id='26a90f95'/> <qualified-type-def type-id='a84c031d' const='yes' id='9b45d938'/> <pointer-type-def type-id='9b45d938' size-in-bits='64' id='80f4b756'/> <pointer-type-def type-id='48b5725f' size-in-bits='64' id='eaa32e2f'/> + <function-decl name='uu_set_error' mangled-name='uu_set_error' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_set_error'> + <parameter type-id='3502e3ff'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='malloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='strlen' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='strnlen' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> + </function-decl> <function-decl name='uu_zalloc' mangled-name='uu_zalloc' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_zalloc'> <parameter type-id='b59d7dce' name='n'/> <return type-id='eaa32e2f'/> @@ -1151,13 +1140,16 @@ <return type-id='26a90f95'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='uu_avl.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libuutil/uu_avl.c' language='LANG_C99'> <array-type-def dimensions='1' type-id='bf311473' size-in-bits='128' id='f0f65199'> <subrange length='2' type-id='7359adad' id='52efc4ef'/> </array-type-def> <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='320' id='36c46961'> <subrange length='40' type-id='7359adad' id='8f80b239'/> </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='32' id='8e0573fd'> + <subrange length='4' type-id='7359adad' id='16fe7105'/> + </array-type-def> <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='512' id='59daf3ef'> <subrange length='64' type-id='7359adad' id='b10be967'/> </array-type-def> @@ -1169,7 +1161,6 @@ <subrange length='3' type-id='7359adad' id='56f209d2'/> </array-type-def> <type-decl name='unsigned char' size-in-bits='8' id='002ac4a6'/> - <type-decl name='unsigned int' size-in-bits='32' id='f0981eeb'/> <typedef-decl name='uu_compare_fn_t' type-id='add6e811' id='40f93560'/> <typedef-decl name='uu_walk_fn_t' type-id='96ee24a5' id='9d1aa0dc'/> <typedef-decl name='uu_avl_pool_t' type-id='12a530a8' id='7f84e390'/> @@ -1204,16 +1195,16 @@ </class-decl> <class-decl name='uu_avl' size-in-bits='960' is-struct='yes' visibility='default' id='4af029d1'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='ua_next_enc' type-id='e475ab95' visibility='default'/> + <var-decl name='ua_next' type-id='a5c21a38' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='ua_prev_enc' type-id='e475ab95' visibility='default'/> + <var-decl name='ua_prev' type-id='a5c21a38' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> <var-decl name='ua_pool' type-id='de82c773' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='ua_parent_enc' type-id='e475ab95' visibility='default'/> + <var-decl name='ua_parent' type-id='eaa32e2f' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> <var-decl name='ua_debug' type-id='b96825af' visibility='default'/> @@ -1260,6 +1251,8 @@ <var-decl name='uap_null_avl' type-id='bb7f0973' visibility='default'/> </data-member> </class-decl> + <typedef-decl name='avl_tree_t' type-id='b351119f' id='f20fbd51'/> + <typedef-decl name='avl_index_t' type-id='e475ab95' id='fba6cb51'/> <class-decl name='avl_node' size-in-bits='192' is-struct='yes' visibility='default' id='428b67b3'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='avl_child' type-id='f0f65199' visibility='default'/> @@ -1287,6 +1280,15 @@ </class-decl> <typedef-decl name='ulong_t' type-id='7359adad' id='ee1f298e'/> <typedef-decl name='uintptr_t' type-id='7359adad' id='e475ab95'/> + <union-decl name='pthread_mutexattr_t' size-in-bits='32' naming-typedef-id='8afd6070' visibility='default' id='7300eb00'> + <data-member access='public'> + <var-decl name='__size' type-id='8e0573fd' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='__align' type-id='95e97e5e' visibility='default'/> + </data-member> + </union-decl> + <typedef-decl name='pthread_mutexattr_t' type-id='7300eb00' id='8afd6070'/> <union-decl name='pthread_mutex_t' size-in-bits='320' naming-typedef-id='7a6844eb' visibility='default' id='70681f9b'> <data-member access='public'> <var-decl name='__data' type-id='4c734837' visibility='default'/> @@ -1341,8 +1343,14 @@ <typedef-decl name='__uint8_t' type-id='002ac4a6' id='c51d6389'/> <typedef-decl name='__uint32_t' type-id='f0981eeb' id='62f1140c'/> <pointer-type-def type-id='0e01899c' size-in-bits='64' id='4d98cd5a'/> + <pointer-type-def type-id='fba6cb51' size-in-bits='64' id='32adbf30'/> <pointer-type-def type-id='428b67b3' size-in-bits='64' id='bf311473'/> + <pointer-type-def type-id='b351119f' size-in-bits='64' id='716943c7'/> + <pointer-type-def type-id='f20fbd51' size-in-bits='64' id='a3681dea'/> + <qualified-type-def type-id='8afd6070' const='yes' id='1d853360'/> + <pointer-type-def type-id='1d853360' size-in-bits='64' id='c2afbd7e'/> <pointer-type-def type-id='96ee24a5' size-in-bits='64' id='585e1de9'/> + <pointer-type-def type-id='7a6844eb' size-in-bits='64' id='18c91f9e'/> <pointer-type-def type-id='5d7f5fc8' size-in-bits='64' id='813a2225'/> <pointer-type-def type-id='73a65116' size-in-bits='64' id='2dc35b9d'/> <pointer-type-def type-id='7f84e390' size-in-bits='64' id='de82c773'/> @@ -1351,6 +1359,96 @@ <pointer-type-def type-id='40f93560' size-in-bits='64' id='d502b39f'/> <pointer-type-def type-id='9d1aa0dc' size-in-bits='64' id='30a42b6d'/> <pointer-type-def type-id='eaa32e2f' size-in-bits='64' id='63e171df'/> + <function-decl name='uu_check_name' mangled-name='uu_check_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_check_name'> + <parameter type-id='80f4b756'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='uu_panic' mangled-name='uu_panic' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_panic'> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_create' mangled-name='avl_create' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_create'> + <parameter type-id='a3681dea'/> + <parameter type-id='585e1de9'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_find' mangled-name='avl_find' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_find'> + <parameter type-id='a3681dea'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='32adbf30'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='avl_insert' mangled-name='avl_insert' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_insert'> + <parameter type-id='a3681dea'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='fba6cb51'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_first' mangled-name='avl_first' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_first'> + <parameter type-id='a3681dea'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='avl_last' mangled-name='avl_last' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_last'> + <parameter type-id='a3681dea'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='avl_nearest' mangled-name='avl_nearest' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_nearest'> + <parameter type-id='a3681dea'/> + <parameter type-id='fba6cb51'/> + <parameter type-id='95e97e5e'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='avl_remove' mangled-name='avl_remove' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_remove'> + <parameter type-id='a3681dea'/> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_numnodes' mangled-name='avl_numnodes' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_numnodes'> + <parameter type-id='a3681dea'/> + <return type-id='ee1f298e'/> + </function-decl> + <function-decl name='avl_destroy_nodes' mangled-name='avl_destroy_nodes' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_destroy_nodes'> + <parameter type-id='a3681dea'/> + <parameter type-id='63e171df'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='avl_destroy' mangled-name='avl_destroy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_destroy'> + <parameter type-id='a3681dea'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_walk' mangled-name='avl_walk' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_walk'> + <parameter type-id='716943c7'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='95e97e5e'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='strlcpy' mangled-name='strlcpy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='strlcpy'> + <parameter type-id='26a90f95'/> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='pthread_mutex_init' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='18c91f9e'/> + <parameter type-id='c2afbd7e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_mutex_destroy' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='18c91f9e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_mutex_lock' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='18c91f9e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_mutex_unlock' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='18c91f9e'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='uu_avl_pool_create' mangled-name='uu_avl_pool_create' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_avl_pool_create'> <parameter type-id='80f4b756' name='name'/> <parameter type-id='b59d7dce' name='objsize'/> @@ -1466,6 +1564,11 @@ <function-decl name='uu_avl_release' mangled-name='uu_avl_release' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_avl_release'> <return type-id='48b5725f'/> </function-decl> + <function-type size-in-bits='64' id='96ee24a5'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-type> <function-type size-in-bits='64' id='add6e811'> <parameter type-id='eaa32e2f'/> <parameter type-id='eaa32e2f'/> @@ -1473,15 +1576,14 @@ <return type-id='95e97e5e'/> </function-type> </abi-instr> - <abi-instr address-size='64' path='uu_ident.c' language='LANG_C99'> - <typedef-decl name='uint_t' type-id='f0981eeb' id='3502e3ff'/> - <function-decl name='uu_check_name' mangled-name='uu_check_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_check_name'> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='3502e3ff' name='flags'/> - <return type-id='95e97e5e'/> + <abi-instr address-size='64' path='lib/libuutil/uu_ident.c' language='LANG_C99'> + <function-decl name='strchr' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='uu_list.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libuutil/uu_list.c' language='LANG_C99'> <array-type-def dimensions='1' type-id='e475ab95' size-in-bits='128' id='d0e9cdae'> <subrange length='2' type-id='7359adad' id='52efc4ef'/> </array-type-def> @@ -1526,16 +1628,16 @@ </class-decl> <class-decl name='uu_list' size-in-bits='896' is-struct='yes' visibility='default' id='1d04bdf0'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='ul_next_enc' type-id='e475ab95' visibility='default'/> + <var-decl name='ul_next' type-id='0c0b229b' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='ul_prev_enc' type-id='e475ab95' visibility='default'/> + <var-decl name='ul_prev' type-id='0c0b229b' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> <var-decl name='ul_pool' type-id='0941e04e' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='ul_parent_enc' type-id='e475ab95' visibility='default'/> + <var-decl name='ul_parent' type-id='eaa32e2f' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> <var-decl name='ul_offset' type-id='b59d7dce' visibility='default'/> @@ -1726,25 +1828,16 @@ <return type-id='48b5725f'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='uu_misc.c' language='LANG_C99'> - <function-decl name='uu_set_error' mangled-name='uu_set_error' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_set_error'> - <parameter type-id='3502e3ff' name='code'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='uu_error' mangled-name='uu_error' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_error'> - <return type-id='8f92235e'/> - </function-decl> - <function-decl name='uu_strerror' mangled-name='uu_strerror' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_strerror'> - <parameter type-id='8f92235e' name='code'/> - <return type-id='80f4b756'/> - </function-decl> - <function-decl name='uu_panic' mangled-name='uu_panic' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_panic'> - <parameter type-id='80f4b756' name='format'/> - <parameter is-variadic='yes'/> - <return type-id='48b5725f'/> - </function-decl> - </abi-instr> - <abi-instr address-size='64' path='uu_pname.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libuutil/uu_misc.c' language='LANG_C99'> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='8' id='89feb1ec'> + <subrange length='1' type-id='7359adad' id='52f813b4'/> + </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='160' id='664ac0b7'> + <subrange length='20' type-id='7359adad' id='fdca39cf'/> + </array-type-def> + <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> + <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> + <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> <class-decl name='__va_list_tag' size-in-bits='192' is-struct='yes' visibility='default' id='d5027220'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='gp_offset' type-id='f0981eeb' visibility='default'/> @@ -1759,65 +1852,179 @@ <var-decl name='reg_save_area' type-id='eaa32e2f' visibility='default'/> </data-member> </class-decl> + <type-decl name='unsigned short int' size-in-bits='16' id='8efea9e5'/> + <typedef-decl name='pthread_t' type-id='7359adad' id='4051f5e7'/> + <typedef-decl name='pthread_key_t' type-id='f0981eeb' id='2de5383b'/> + <typedef-decl name='__off_t' type-id='bd54fe1a' id='79989e9c'/> + <typedef-decl name='__off64_t' type-id='bd54fe1a' id='724e4de6'/> + <typedef-decl name='FILE' type-id='ec1ed955' id='aa12d1ba'/> + <typedef-decl name='_IO_lock_t' type-id='48b5725f' id='bb4788fa'/> + <class-decl name='_IO_FILE' size-in-bits='1728' is-struct='yes' visibility='default' id='ec1ed955'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='_flags' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='_IO_read_ptr' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='_IO_read_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='_IO_read_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='_IO_write_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='_IO_write_ptr' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='_IO_write_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='_IO_buf_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='_IO_buf_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='_IO_save_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='640'> + <var-decl name='_IO_backup_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='704'> + <var-decl name='_IO_save_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='768'> + <var-decl name='_markers' type-id='e4c6fa61' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='832'> + <var-decl name='_chain' type-id='dca988a5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='896'> + <var-decl name='_fileno' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='928'> + <var-decl name='_flags2' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='960'> + <var-decl name='_old_offset' type-id='79989e9c' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1024'> + <var-decl name='_cur_column' type-id='8efea9e5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1040'> + <var-decl name='_vtable_offset' type-id='28577a57' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1048'> + <var-decl name='_shortbuf' type-id='89feb1ec' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1088'> + <var-decl name='_lock' type-id='cecf4ea7' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1152'> + <var-decl name='_offset' type-id='724e4de6' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1216'> + <var-decl name='_codecvt' type-id='570f8c59' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1280'> + <var-decl name='_wide_data' type-id='c65a1f29' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1344'> + <var-decl name='_freeres_list' type-id='dca988a5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1408'> + <var-decl name='_freeres_buf' type-id='eaa32e2f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1472'> + <var-decl name='__pad5' type-id='b59d7dce' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1536'> + <var-decl name='_mode' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1568'> + <var-decl name='_unused2' type-id='664ac0b7' visibility='default'/> + </data-member> + </class-decl> + <pointer-type-def type-id='aa12d1ba' size-in-bits='64' id='822cd80b'/> + <qualified-type-def type-id='822cd80b' restrict='yes' id='e75a27e9'/> + <pointer-type-def type-id='ec1ed955' size-in-bits='64' id='dca988a5'/> + <pointer-type-def type-id='a4036571' size-in-bits='64' id='570f8c59'/> + <pointer-type-def type-id='bb4788fa' size-in-bits='64' id='cecf4ea7'/> + <pointer-type-def type-id='010ae0b9' size-in-bits='64' id='e4c6fa61'/> + <pointer-type-def type-id='79bd3751' size-in-bits='64' id='c65a1f29'/> <pointer-type-def type-id='d5027220' size-in-bits='64' id='b7f2d5e6'/> + <qualified-type-def type-id='80f4b756' restrict='yes' id='9d26089a'/> <pointer-type-def type-id='95e97e5e' size-in-bits='64' id='7292109c'/> - <var-decl name='uu_exit_ok_value' type-id='95e97e5e' mangled-name='uu_exit_ok_value' visibility='default' elf-symbol-id='uu_exit_ok_value'/> - <var-decl name='uu_exit_fatal_value' type-id='95e97e5e' mangled-name='uu_exit_fatal_value' visibility='default' elf-symbol-id='uu_exit_fatal_value'/> - <var-decl name='uu_exit_usage_value' type-id='95e97e5e' mangled-name='uu_exit_usage_value' visibility='default' elf-symbol-id='uu_exit_usage_value'/> - <function-decl name='uu_exit_ok' mangled-name='uu_exit_ok' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_exit_ok'> + <pointer-type-def type-id='2de5383b' size-in-bits='64' id='ce04b822'/> + <pointer-type-def type-id='ee076206' size-in-bits='64' id='953b12f8'/> + <pointer-type-def type-id='c5c76c9c' size-in-bits='64' id='b7f9d8e6'/> + <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> + <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> + <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> + <function-decl name='__errno_location' visibility='default' binding='global' size-in-bits='64'> <return type-id='7292109c'/> </function-decl> - <function-decl name='uu_exit_fatal' mangled-name='uu_exit_fatal' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_exit_fatal'> - <return type-id='7292109c'/> + <function-decl name='dcgettext' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> </function-decl> - <function-decl name='uu_exit_usage' mangled-name='uu_exit_usage' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_exit_usage'> - <return type-id='7292109c'/> + <function-decl name='pthread_self' visibility='default' binding='global' size-in-bits='64'> + <return type-id='4051f5e7'/> </function-decl> - <function-decl name='uu_alt_exit' mangled-name='uu_alt_exit' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_alt_exit'> - <parameter type-id='95e97e5e' name='profile'/> - <return type-id='48b5725f'/> + <function-decl name='pthread_key_create' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='ce04b822'/> + <parameter type-id='b7f9d8e6'/> + <return type-id='95e97e5e'/> </function-decl> - <function-decl name='uu_vwarn' mangled-name='uu_vwarn' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_vwarn'> - <parameter type-id='80f4b756' name='format'/> - <parameter type-id='b7f2d5e6' name='alist'/> - <return type-id='48b5725f'/> + <function-decl name='pthread_getspecific' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='2de5383b'/> + <return type-id='eaa32e2f'/> </function-decl> - <function-decl name='uu_warn' mangled-name='uu_warn' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_warn'> - <parameter type-id='80f4b756' name='format'/> - <parameter is-variadic='yes'/> - <return type-id='48b5725f'/> + <function-decl name='pthread_setspecific' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='2de5383b'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> </function-decl> - <function-decl name='uu_vdie' mangled-name='uu_vdie' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_vdie'> - <parameter type-id='80f4b756' name='format'/> - <parameter type-id='b7f2d5e6' name='alist'/> - <return type-id='48b5725f'/> + <function-decl name='pthread_atfork' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='953b12f8'/> + <parameter type-id='953b12f8'/> + <parameter type-id='953b12f8'/> + <return type-id='95e97e5e'/> </function-decl> - <function-decl name='uu_die' mangled-name='uu_die' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_die'> - <parameter type-id='80f4b756' name='format'/> - <parameter is-variadic='yes'/> + <function-decl name='abort' visibility='default' binding='global' size-in-bits='64'> <return type-id='48b5725f'/> </function-decl> - <function-decl name='uu_vxdie' mangled-name='uu_vxdie' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_vxdie'> - <parameter type-id='95e97e5e' name='status'/> - <parameter type-id='80f4b756' name='format'/> - <parameter type-id='b7f2d5e6' name='alist'/> - <return type-id='48b5725f'/> + <function-decl name='pause' visibility='default' binding='global' size-in-bits='64'> + <return type-id='95e97e5e'/> </function-decl> - <function-decl name='uu_xdie' mangled-name='uu_xdie' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_xdie'> - <parameter type-id='95e97e5e' name='status'/> - <parameter type-id='80f4b756' name='format'/> - <parameter is-variadic='yes'/> - <return type-id='48b5725f'/> + <function-decl name='__vfprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter type-id='b7f2d5e6'/> + <return type-id='95e97e5e'/> </function-decl> - <function-decl name='uu_setpname' mangled-name='uu_setpname' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_setpname'> - <parameter type-id='26a90f95' name='arg0'/> - <return type-id='80f4b756'/> + <function-decl name='uu_error' mangled-name='uu_error' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_error'> + <return type-id='8f92235e'/> </function-decl> - <function-decl name='uu_getpname' mangled-name='uu_getpname' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_getpname'> + <function-decl name='uu_strerror' mangled-name='uu_strerror' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_strerror'> + <parameter type-id='8f92235e' name='code'/> <return type-id='80f4b756'/> </function-decl> + <function-type size-in-bits='64' id='ee076206'> + <return type-id='48b5725f'/> + </function-type> + <function-type size-in-bits='64' id='c5c76c9c'> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-type> </abi-instr> - <abi-instr address-size='64' path='uu_string.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libuutil/uu_string.c' language='LANG_C99'> <type-decl name='unnamed-enum-underlying-type-32' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='9cac1fee'/> <enum-decl name='boolean_t' naming-typedef-id='c19b74c3' id='f58c8277'> <underlying-type type-id='9cac1fee'/> @@ -1825,6 +2032,22 @@ <enumerator name='B_TRUE' value='1'/> </enum-decl> <typedef-decl name='boolean_t' type-id='f58c8277' id='c19b74c3'/> + <function-decl name='strcmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strncmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strcasecmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='uu_streq' mangled-name='uu_streq' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uu_streq'> <parameter type-id='80f4b756' name='a'/> <parameter type-id='80f4b756' name='b'/> @@ -1841,4 +2064,50 @@ <return type-id='c19b74c3'/> </function-decl> </abi-instr> + <abi-instr address-size='64' path='module/avl/avl.c' language='LANG_C99'> + <function-decl name='libspl_assertf' mangled-name='libspl_assertf' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_assertf'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_insert_here' mangled-name='avl_insert_here' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_insert_here'> + <parameter type-id='a3681dea' name='tree'/> + <parameter type-id='eaa32e2f' name='new_data'/> + <parameter type-id='eaa32e2f' name='here'/> + <parameter type-id='95e97e5e' name='direction'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_add' mangled-name='avl_add' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_add'> + <parameter type-id='a3681dea' name='tree'/> + <parameter type-id='eaa32e2f' name='new_node'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_update_lt' mangled-name='avl_update_lt' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_update_lt'> + <parameter type-id='a3681dea' name='t'/> + <parameter type-id='eaa32e2f' name='obj'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='avl_update_gt' mangled-name='avl_update_gt' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_update_gt'> + <parameter type-id='a3681dea' name='t'/> + <parameter type-id='eaa32e2f' name='obj'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='avl_update' mangled-name='avl_update' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_update'> + <parameter type-id='a3681dea' name='t'/> + <parameter type-id='eaa32e2f' name='obj'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='avl_swap' mangled-name='avl_swap' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_swap'> + <parameter type-id='a3681dea' name='tree1'/> + <parameter type-id='a3681dea' name='tree2'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_is_empty' mangled-name='avl_is_empty' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_is_empty'> + <parameter type-id='a3681dea' name='tree'/> + <return type-id='c19b74c3'/> + </function-decl> + </abi-instr> </abi-corpus> diff --git a/lib/libuutil/uu_alloc.c b/lib/libuutil/uu_alloc.c index 2bef759d525e..2850bf6d1b35 100644 --- a/lib/libuutil/uu_alloc.c +++ b/lib/libuutil/uu_alloc.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libuutil/uu_avl.c b/lib/libuutil/uu_avl.c index 53def0e073fd..ef1497b31439 100644 --- a/lib/libuutil/uu_avl.c +++ b/lib/libuutil/uu_avl.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -97,8 +97,8 @@ uu_avl_pool_create(const char *name, size_t objsize, size_t nodeoffset, (void) pthread_mutex_init(&pp->uap_lock, NULL); - pp->uap_null_avl.ua_next_enc = UU_PTR_ENCODE(&pp->uap_null_avl); - pp->uap_null_avl.ua_prev_enc = UU_PTR_ENCODE(&pp->uap_null_avl); + pp->uap_null_avl.ua_next = &pp->uap_null_avl; + pp->uap_null_avl.ua_prev = &pp->uap_null_avl; (void) pthread_mutex_lock(&uu_apool_list_lock); pp->uap_next = next = &uu_null_apool; @@ -114,10 +114,8 @@ void uu_avl_pool_destroy(uu_avl_pool_t *pp) { if (pp->uap_debug) { - if (pp->uap_null_avl.ua_next_enc != - UU_PTR_ENCODE(&pp->uap_null_avl) || - pp->uap_null_avl.ua_prev_enc != - UU_PTR_ENCODE(&pp->uap_null_avl)) { + if (pp->uap_null_avl.ua_next != &pp->uap_null_avl || + pp->uap_null_avl.ua_prev != &pp->uap_null_avl) { uu_panic("uu_avl_pool_destroy: Pool \"%.*s\" (%p) has " "outstanding avls, or is corrupt.\n", (int)sizeof (pp->uap_name), pp->uap_name, @@ -224,7 +222,7 @@ uu_avl_create(uu_avl_pool_t *pp, void *parent, uint32_t flags) } ap->ua_pool = pp; - ap->ua_parent_enc = UU_PTR_ENCODE(parent); + ap->ua_parent = parent; ap->ua_debug = pp->uap_debug || (flags & UU_AVL_DEBUG); ap->ua_index = (pp->uap_last_index = INDEX_NEXT(pp->uap_last_index)); @@ -236,11 +234,11 @@ uu_avl_create(uu_avl_pool_t *pp, void *parent, uint32_t flags) (void) pthread_mutex_lock(&pp->uap_lock); next = &pp->uap_null_avl; - prev = UU_PTR_DECODE(next->ua_prev_enc); - ap->ua_next_enc = UU_PTR_ENCODE(next); - ap->ua_prev_enc = UU_PTR_ENCODE(prev); - next->ua_prev_enc = UU_PTR_ENCODE(ap); - prev->ua_next_enc = UU_PTR_ENCODE(ap); + prev = next->ua_prev; + ap->ua_next = next; + ap->ua_prev = prev; + next->ua_prev = ap; + prev->ua_next = ap; (void) pthread_mutex_unlock(&pp->uap_lock); return (ap); @@ -263,11 +261,11 @@ uu_avl_destroy(uu_avl_t *ap) } } (void) pthread_mutex_lock(&pp->uap_lock); - UU_AVL_PTR(ap->ua_next_enc)->ua_prev_enc = ap->ua_prev_enc; - UU_AVL_PTR(ap->ua_prev_enc)->ua_next_enc = ap->ua_next_enc; + ap->ua_next->ua_prev = ap->ua_prev; + ap->ua_prev->ua_next = ap->ua_next; (void) pthread_mutex_unlock(&pp->uap_lock); - ap->ua_prev_enc = UU_PTR_ENCODE(NULL); - ap->ua_next_enc = UU_PTR_ENCODE(NULL); + ap->ua_prev = NULL; + ap->ua_next = NULL; ap->ua_pool = NULL; avl_destroy(&ap->ua_tree); diff --git a/lib/libuutil/uu_ident.c b/lib/libuutil/uu_ident.c index 382139316ebc..d0cab0a64d09 100644 --- a/lib/libuutil/uu_ident.c +++ b/lib/libuutil/uu_ident.c @@ -7,7 +7,7 @@ * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libuutil/uu_list.c b/lib/libuutil/uu_list.c index c3a447d01de3..0ca6f05205e9 100644 --- a/lib/libuutil/uu_list.c +++ b/lib/libuutil/uu_list.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -93,8 +93,8 @@ uu_list_pool_create(const char *name, size_t objsize, (void) pthread_mutex_init(&pp->ulp_lock, NULL); - pp->ulp_null_list.ul_next_enc = UU_PTR_ENCODE(&pp->ulp_null_list); - pp->ulp_null_list.ul_prev_enc = UU_PTR_ENCODE(&pp->ulp_null_list); + pp->ulp_null_list.ul_next = &pp->ulp_null_list; + pp->ulp_null_list.ul_prev = &pp->ulp_null_list; (void) pthread_mutex_lock(&uu_lpool_list_lock); pp->ulp_next = next = &uu_null_lpool; @@ -110,10 +110,8 @@ void uu_list_pool_destroy(uu_list_pool_t *pp) { if (pp->ulp_debug) { - if (pp->ulp_null_list.ul_next_enc != - UU_PTR_ENCODE(&pp->ulp_null_list) || - pp->ulp_null_list.ul_prev_enc != - UU_PTR_ENCODE(&pp->ulp_null_list)) { + if (pp->ulp_null_list.ul_next != &pp->ulp_null_list || + pp->ulp_null_list.ul_prev != &pp->ulp_null_list) { uu_panic("uu_list_pool_destroy: Pool \"%.*s\" (%p) has " "outstanding lists, or is corrupt.\n", (int)sizeof (pp->ulp_name), pp->ulp_name, @@ -202,7 +200,7 @@ uu_list_create(uu_list_pool_t *pp, void *parent, uint32_t flags) } lp->ul_pool = pp; - lp->ul_parent_enc = UU_PTR_ENCODE(parent); + lp->ul_parent = parent; lp->ul_offset = pp->ulp_nodeoffset; lp->ul_debug = pp->ulp_debug || (flags & UU_LIST_DEBUG); lp->ul_sorted = (flags & UU_LIST_SORTED); @@ -217,11 +215,11 @@ uu_list_create(uu_list_pool_t *pp, void *parent, uint32_t flags) (void) pthread_mutex_lock(&pp->ulp_lock); next = &pp->ulp_null_list; - prev = UU_PTR_DECODE(next->ul_prev_enc); - lp->ul_next_enc = UU_PTR_ENCODE(next); - lp->ul_prev_enc = UU_PTR_ENCODE(prev); - next->ul_prev_enc = UU_PTR_ENCODE(lp); - prev->ul_next_enc = UU_PTR_ENCODE(lp); + prev = next->ul_prev; + lp->ul_next = next; + lp->ul_prev = prev; + next->ul_prev = lp; + prev->ul_next = lp; (void) pthread_mutex_unlock(&pp->ulp_lock); return (lp); @@ -250,11 +248,11 @@ uu_list_destroy(uu_list_t *lp) } (void) pthread_mutex_lock(&pp->ulp_lock); - UU_LIST_PTR(lp->ul_next_enc)->ul_prev_enc = lp->ul_prev_enc; - UU_LIST_PTR(lp->ul_prev_enc)->ul_next_enc = lp->ul_next_enc; + lp->ul_next->ul_prev = lp->ul_prev; + lp->ul_prev->ul_next = lp->ul_next; (void) pthread_mutex_unlock(&pp->ulp_lock); - lp->ul_prev_enc = UU_PTR_ENCODE(NULL); - lp->ul_next_enc = UU_PTR_ENCODE(NULL); + lp->ul_prev = NULL; + lp->ul_next = NULL; lp->ul_pool = NULL; uu_free(lp); } diff --git a/lib/libuutil/uu_misc.c b/lib/libuutil/uu_misc.c index a8478ace9a73..762d00c3cd32 100644 --- a/lib/libuutil/uu_misc.c +++ b/lib/libuutil/uu_misc.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libuutil/uu_pname.c b/lib/libuutil/uu_pname.c deleted file mode 100644 index 610b8585dcbf..000000000000 --- a/lib/libuutil/uu_pname.c +++ /dev/null @@ -1,202 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - - - -#include "libuutil_common.h" - -#include <libintl.h> -#include <limits.h> -#include <string.h> -#include <stdlib.h> -#include <stdarg.h> -#include <stdio.h> -#include <errno.h> -#include <wchar.h> -#include <unistd.h> - -static const char *pname; - -static __attribute__((noreturn)) void -uu_die_internal(int status, const char *format, va_list alist); - -int uu_exit_ok_value = EXIT_SUCCESS; -int uu_exit_fatal_value = EXIT_FAILURE; -int uu_exit_usage_value = 2; - -int * -uu_exit_ok(void) -{ - return (&uu_exit_ok_value); -} - -int * -uu_exit_fatal(void) -{ - return (&uu_exit_fatal_value); -} - -int * -uu_exit_usage(void) -{ - return (&uu_exit_usage_value); -} - -void -uu_alt_exit(int profile) -{ - switch (profile) { - case UU_PROFILE_DEFAULT: - uu_exit_ok_value = EXIT_SUCCESS; - uu_exit_fatal_value = EXIT_FAILURE; - uu_exit_usage_value = 2; - break; - case UU_PROFILE_LAUNCHER: - uu_exit_ok_value = EXIT_SUCCESS; - uu_exit_fatal_value = 124; - uu_exit_usage_value = 125; - break; - } -} - -static __attribute__((format(printf, 2, 0))) void -uu_warn_internal(int err, const char *format, va_list alist) -{ - if (pname != NULL) - (void) fprintf(stderr, "%s: ", pname); - - if (format != NULL) - (void) vfprintf(stderr, format, alist); - - if (strrchr(format, '\n') == NULL) - (void) fprintf(stderr, ": %s\n", strerror(err)); -} - -void -uu_vwarn(const char *format, va_list alist) -{ - uu_warn_internal(errno, format, alist); -} - -void -uu_warn(const char *format, ...) -{ - va_list alist; - va_start(alist, format); - uu_warn_internal(errno, format, alist); - va_end(alist); -} - -static __attribute__((format(printf, 2, 0))) __attribute__((noreturn)) void -uu_die_internal(int status, const char *format, va_list alist) -{ - uu_warn_internal(errno, format, alist); -#ifdef DEBUG - { - char *cp; - - if (!issetugid()) { - cp = getenv("UU_DIE_ABORTS"); - if (cp != NULL && *cp != '\0') - abort(); - } - } -#endif - exit(status); -} - -void -uu_vdie(const char *format, va_list alist) -{ - uu_die_internal(UU_EXIT_FATAL, format, alist); -} - -void -uu_die(const char *format, ...) -{ - va_list alist; - va_start(alist, format); - uu_die_internal(UU_EXIT_FATAL, format, alist); - va_end(alist); -} - -void -uu_vxdie(int status, const char *format, va_list alist) -{ - uu_die_internal(status, format, alist); -} - -void -uu_xdie(int status, const char *format, ...) -{ - va_list alist; - va_start(alist, format); - uu_die_internal(status, format, alist); - va_end(alist); -} - -const char * -uu_setpname(char *arg0) -{ - /* - * Having a NULL argv[0], while uncommon, is possible. It - * makes more sense to handle this event in uu_setpname rather - * than in each of its consumers. - */ - if (arg0 == NULL) { - pname = getexecname(); - if (pname == NULL) - pname = "unknown_command"; - return (pname); - } - - /* - * Guard against '/' at end of command invocation. - */ - for (;;) { - char *p = strrchr(arg0, '/'); - if (p == NULL) { - pname = arg0; - break; - } else { - if (*(p + 1) == '\0') { - *p = '\0'; - continue; - } - - pname = p + 1; - break; - } - } - - return (pname); -} - -const char * -uu_getpname(void) -{ - return (pname); -} diff --git a/lib/libuutil/uu_string.c b/lib/libuutil/uu_string.c index 67024c3b50b4..eff0727b7564 100644 --- a/lib/libuutil/uu_string.c +++ b/lib/libuutil/uu_string.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libzdb/Makefile.am b/lib/libzdb/Makefile.am new file mode 100644 index 000000000000..ec4fd92b984e --- /dev/null +++ b/lib/libzdb/Makefile.am @@ -0,0 +1,7 @@ +libzdb_la_CFLAGS = $(AM_CFLAGS) $(LIBRARY_CFLAGS) +libzdb_la_CFLAGS += -fvisibility=hidden + +noinst_LTLIBRARIES += libzdb.la + +libzdb_la_SOURCES = \ + %D%/libzdb.c diff --git a/lib/libzdb/libzdb.c b/lib/libzdb/libzdb.c new file mode 100644 index 000000000000..12144dc65e75 --- /dev/null +++ b/lib/libzdb/libzdb.c @@ -0,0 +1,102 @@ +#include <stdio.h> +#include <unistd.h> +#include <stdlib.h> +#include <ctype.h> +#include <getopt.h> +#include <openssl/evp.h> +#include <sys/zfs_context.h> +#include <sys/spa.h> +#include <sys/spa_impl.h> +#include <sys/dmu.h> +#include <sys/zap.h> +#include <sys/fs/zfs.h> +#include <sys/zfs_znode.h> +#include <sys/zfs_sa.h> +#include <sys/sa.h> +#include <sys/sa_impl.h> +#include <sys/vdev.h> +#include <sys/vdev_impl.h> +#include <sys/metaslab_impl.h> +#include <sys/dmu_objset.h> +#include <sys/dsl_dir.h> +#include <sys/dsl_dataset.h> +#include <sys/dsl_pool.h> +#include <sys/dsl_bookmark.h> +#include <sys/dbuf.h> +#include <sys/zil.h> +#include <sys/zil_impl.h> +#include <sys/stat.h> +#include <sys/resource.h> +#include <sys/dmu_send.h> +#include <sys/dmu_traverse.h> +#include <sys/zio_checksum.h> +#include <sys/zio_compress.h> +#include <sys/zfs_fuid.h> +#include <sys/arc.h> +#include <sys/arc_impl.h> +#include <sys/ddt.h> +#include <sys/zfeature.h> +#include <sys/abd.h> +#include <sys/blkptr.h> +#include <sys/dsl_crypt.h> +#include <sys/dsl_scan.h> +#include <sys/btree.h> +#include <sys/brt.h> +#include <sys/brt_impl.h> +#include <zfs_comutil.h> +#include <sys/zstd/zstd.h> + +#include <libnvpair.h> +#include <libzutil.h> + +#include <libzdb.h> + +const char * +zdb_ot_name(dmu_object_type_t type) +{ + if (type < DMU_OT_NUMTYPES) + return (dmu_ot[type].ot_name); + else if ((type & DMU_OT_NEWTYPE) && + ((type & DMU_OT_BYTESWAP_MASK) < DMU_BSWAP_NUMFUNCS)) + return (dmu_ot_byteswap[type & DMU_OT_BYTESWAP_MASK].ob_name); + else + return ("UNKNOWN"); +} + +int +livelist_compare(const void *larg, const void *rarg) +{ + const blkptr_t *l = larg; + const blkptr_t *r = rarg; + + /* Sort them according to dva[0] */ + uint64_t l_dva0_vdev, r_dva0_vdev; + l_dva0_vdev = DVA_GET_VDEV(&l->blk_dva[0]); + r_dva0_vdev = DVA_GET_VDEV(&r->blk_dva[0]); + if (l_dva0_vdev < r_dva0_vdev) + return (-1); + else if (l_dva0_vdev > r_dva0_vdev) + return (+1); + + /* if vdevs are equal, sort by offsets. */ + uint64_t l_dva0_offset; + uint64_t r_dva0_offset; + l_dva0_offset = DVA_GET_OFFSET(&l->blk_dva[0]); + r_dva0_offset = DVA_GET_OFFSET(&r->blk_dva[0]); + if (l_dva0_offset < r_dva0_offset) { + return (-1); + } else if (l_dva0_offset > r_dva0_offset) { + return (+1); + } + + /* + * Since we're storing blkptrs without cancelling FREE/ALLOC pairs, + * it's possible the offsets are equal. In that case, sort by txg + */ + if (BP_GET_LOGICAL_BIRTH(l) < BP_GET_LOGICAL_BIRTH(r)) { + return (-1); + } else if (BP_GET_LOGICAL_BIRTH(l) > BP_GET_LOGICAL_BIRTH(r)) { + return (+1); + } + return (0); +} diff --git a/lib/libzfs/Makefile.am b/lib/libzfs/Makefile.am index f5eb84679204..5e74d908de3d 100644 --- a/lib/libzfs/Makefile.am +++ b/lib/libzfs/Makefile.am @@ -34,8 +34,6 @@ dist_libzfs_la_SOURCES += \ endif nodist_libzfs_la_SOURCES = \ - module/icp/algs/sha2/sha2.c \ - \ module/zcommon/cityhash.c \ module/zcommon/zfeature_common.c \ module/zcommon/zfs_comutil.c \ @@ -52,7 +50,6 @@ nodist_libzfs_la_SOURCES = \ module/zcommon/zpool_prop.c \ module/zcommon/zprop_common.c - libzfs_la_LIBADD = \ libshare.la \ libzfs_core.la \ @@ -60,7 +57,7 @@ libzfs_la_LIBADD = \ libzutil.la \ libuutil.la -libzfs_la_LIBADD += -lm $(LIBCRYPTO_LIBS) $(ZLIB_LIBS) $(LIBFETCH_LIBS) $(LTLIBINTL) +libzfs_la_LIBADD += -lrt -lm $(LIBCRYPTO_LIBS) $(ZLIB_LIBS) $(LIBFETCH_LIBS) $(LTLIBINTL) libzfs_la_LDFLAGS = -pthread diff --git a/lib/libzfs/libzfs.abi b/lib/libzfs/libzfs.abi index fb5e01b82c40..2bbaae6345ab 100644 --- a/lib/libzfs/libzfs.abi +++ b/lib/libzfs/libzfs.abi @@ -3,15 +3,12 @@ <dependency name='libzfs_core.so.3'/> <dependency name='libnvpair.so.3'/> <dependency name='libuuid.so.1'/> - <dependency name='librt.so.1'/> <dependency name='libblkid.so.1'/> <dependency name='libudev.so.1'/> <dependency name='libuutil.so.3'/> <dependency name='libm.so.6'/> - <dependency name='libcrypto.so.1.1'/> + <dependency name='libcrypto.so.3'/> <dependency name='libz.so.1'/> - <dependency name='libdl.so.2'/> - <dependency name='libpthread.so.0'/> <dependency name='libc.so.6'/> <dependency name='ld-linux-x86-64.so.2'/> </elf-needed> @@ -182,6 +179,7 @@ <elf-symbol name='fletcher_4_native' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='fletcher_4_native_varsize' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='fletcher_init' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='fsleep' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='get_dataset_depth' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='get_system_hostid' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='getexecname' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -191,6 +189,7 @@ <elf-symbol name='getzoneid' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='is_mounted' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='is_mpath_whole_disk' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='libpc_error_description' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='libspl_assertf' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='libspl_set_assert_ok' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='libzfs_add_handle' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -234,6 +233,7 @@ <elf-symbol name='membar_enter' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='membar_exit' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='membar_producer' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='membar_sync' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='mkdirp' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='mountpoint_namecheck' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='permset_namecheck' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -245,6 +245,7 @@ <elf-symbol name='sa_enable_share' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='sa_errorstr' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='sa_is_shared' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='sa_truncate_shares' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='sa_validate_shareopts' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='snapshot_namecheck' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='spl_pagesize' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -260,6 +261,8 @@ <elf-symbol name='tpool_suspended' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='tpool_wait' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='update_vdev_config_dev_strs' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='update_vdev_config_dev_sysfs_path' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='use_color' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='vdev_expand_proplist' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='vdev_name_to_prop' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='vdev_prop_align_right' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -338,14 +341,21 @@ <elf-symbol name='zfs_is_shared' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_isnumber' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_iter_bookmarks' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zfs_iter_bookmarks_v2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_iter_children' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zfs_iter_children_v2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_iter_dependents' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zfs_iter_dependents_v2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_iter_filesystems' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zfs_iter_filesystems_v2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_iter_mounted' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_iter_root' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_iter_snapshots' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_iter_snapshots_sorted' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zfs_iter_snapshots_sorted_v2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zfs_iter_snapshots_v2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_iter_snapspec' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zfs_iter_snapspec_v2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_mod_supported' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_mount' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_mount_at' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -388,6 +398,7 @@ <elf-symbol name='zfs_prop_readonly' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_prop_set' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_prop_set_list' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zfs_prop_set_list_flags' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_prop_setonce' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_prop_string_to_index' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_prop_to_name' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -413,6 +424,8 @@ <elf-symbol name='zfs_send_resume_token_to_nvlist' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_send_saved' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_set_fsacl' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zfs_setproctitle' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zfs_setproctitle_init' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_share' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_show_diffs' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_smb_acl_add' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -428,6 +441,7 @@ <elf-symbol name='zfs_strcmp_pathname' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <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_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'/> @@ -453,6 +467,7 @@ <elf-symbol name='zpool_disable_datasets_os' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_disable_volume_os' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_discard_checkpoint' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zpool_disk_wait' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_dump_ddt' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_enable_datasets' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_events_clear' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -476,14 +491,15 @@ <elf-symbol name='zpool_get_history' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_get_load_policy' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_get_name' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='zpool_get_physpath' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_get_prop' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_get_prop_int' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_get_state' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_get_state_str' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_get_status' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zpool_get_userprop' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_get_vdev_prop' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_get_vdev_prop_value' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zpool_getenv_int' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_history_unpack' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_import' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_import_props' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -503,6 +519,8 @@ <elf-symbol name='zpool_open' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_open_canfail' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_pool_state_to_name' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zpool_prepare_and_label_disk' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zpool_prepare_disk' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_print_unsup_feat' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_prop_align_right' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_prop_column_name' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -549,6 +567,10 @@ <elf-symbol name='zpool_vdev_path_to_guid' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_vdev_remove' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_vdev_remove_cancel' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zpool_vdev_remove_wanted' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zpool_vdev_script_alloc_env' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zpool_vdev_script_free_env' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='zpool_vdev_set_removed_state' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_vdev_split' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_wait' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zpool_wait_status' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -575,16 +597,16 @@ <elf-variable-symbols> <elf-symbol name='efi_debug' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='fletcher_4_abd_ops' size='24' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='fletcher_4_avx2_ops' size='64' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='fletcher_4_avx512bw_ops' size='64' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='fletcher_4_avx512f_ops' size='64' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='fletcher_4_sse2_ops' size='64' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='fletcher_4_ssse3_ops' size='64' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='fletcher_4_superscalar4_ops' size='64' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='fletcher_4_superscalar_ops' size='64' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='fletcher_4_avx2_ops' size='128' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='fletcher_4_avx512bw_ops' size='128' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='fletcher_4_avx512f_ops' size='128' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='fletcher_4_sse2_ops' size='128' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='fletcher_4_ssse3_ops' size='128' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='fletcher_4_superscalar4_ops' size='128' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='fletcher_4_superscalar_ops' size='128' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='libzfs_config_ops' size='16' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='sa_protocol_names' size='16' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> - <elf-symbol name='spa_feature_table' size='2072' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='spa_feature_table' size='2296' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfeature_checks_disable' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_deleg_perm_tab' size='512' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='zfs_history_event_names' size='328' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -592,188 +614,61 @@ <elf-symbol name='zfs_userquota_prop_prefixes' size='96' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-variable-symbols> <abi-instr address-size='64' path='lib/libefi/rdwr_efi.c' language='LANG_C99'> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='288' id='16e6f2c6'> - <subrange length='36' type-id='7359adad' id='ae666bde'/> - </array-type-def> - <array-type-def dimensions='1' type-id='a65ae39c' size-in-bits='960' id='fa198beb'> - <subrange length='1' type-id='7359adad' id='52f813b4'/> - </array-type-def> - <array-type-def dimensions='1' type-id='b96825af' size-in-bits='48' id='0f562bd0'> - <subrange length='6' type-id='7359adad' id='52fa524b'/> - </array-type-def> - <array-type-def dimensions='1' type-id='3502e3ff' size-in-bits='384' id='dba89ba3'> - <subrange length='12' type-id='7359adad' id='84827bdc'/> - </array-type-def> - <array-type-def dimensions='1' type-id='3502e3ff' size-in-bits='256' id='01d84ed4'> - <subrange length='8' type-id='7359adad' id='56e0c0b1'/> - </array-type-def> - <class-decl name='dk_part' size-in-bits='960' is-struct='yes' visibility='default' id='a65ae39c'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='p_start' type-id='804dc465' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='p_size' type-id='804dc465' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='p_guid' type-id='214f32ea' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='p_tag' type-id='d908a348' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='272'> - <var-decl name='p_flag' type-id='d908a348' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='p_name' type-id='16e6f2c6' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='p_uguid' type-id='214f32ea' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='p_resv' type-id='01d84ed4' visibility='default'/> - </data-member> - </class-decl> - <class-decl name='dk_gpt' size-in-bits='1920' is-struct='yes' visibility='default' id='dd4a2e5a'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='efi_version' type-id='3502e3ff' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='efi_nparts' type-id='3502e3ff' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='efi_part_size' type-id='3502e3ff' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='efi_lbasize' type-id='3502e3ff' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='efi_last_lba' type-id='804dc465' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='efi_first_u_lba' type-id='804dc465' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='efi_last_u_lba' type-id='804dc465' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='efi_disk_uguid' type-id='214f32ea' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='efi_flags' type-id='3502e3ff' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='efi_reserved1' type-id='3502e3ff' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='efi_altern_lba' type-id='804dc465' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='efi_reserved' type-id='dba89ba3' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='efi_parts' type-id='fa198beb' visibility='default'/> - </data-member> - </class-decl> - <class-decl name='uuid' size-in-bits='128' is-struct='yes' visibility='default' id='214f32ea'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='time_low' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='time_mid' type-id='149c6638' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='48'> - <var-decl name='time_hi_and_version' type-id='149c6638' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='clock_seq_hi_and_reserved' type-id='b96825af' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='72'> - <var-decl name='clock_seq_low' type-id='b96825af' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='80'> - <var-decl name='node_addr' type-id='0f562bd0' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='ushort_t' type-id='8efea9e5' id='d908a348'/> - <pointer-type-def type-id='dd4a2e5a' size-in-bits='64' id='0d8119a8'/> - <pointer-type-def type-id='0d8119a8' size-in-bits='64' id='c43b27a6'/> + <typedef-decl name='uInt' type-id='f0981eeb' id='09110a74'/> <var-decl name='efi_debug' type-id='95e97e5e' mangled-name='efi_debug' visibility='default' elf-symbol-id='efi_debug'/> - <function-decl name='efi_alloc_and_init' mangled-name='efi_alloc_and_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_alloc_and_init'> - <parameter type-id='95e97e5e' name='fd'/> - <parameter type-id='8f92235e' name='nparts'/> - <parameter type-id='c43b27a6' name='vtoc'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='efi_alloc_and_read' mangled-name='efi_alloc_and_read' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_alloc_and_read'> - <parameter type-id='95e97e5e' name='fd'/> - <parameter type-id='c43b27a6' name='vtoc'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='efi_rescan' mangled-name='efi_rescan' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_rescan'> - <parameter type-id='95e97e5e' name='fd'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='efi_use_whole_disk' mangled-name='efi_use_whole_disk' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_use_whole_disk'> - <parameter type-id='95e97e5e' name='fd'/> - <return type-id='95e97e5e'/> + <function-decl name='uuid_generate' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='cf536864'/> + <return type-id='48b5725f'/> </function-decl> - <function-decl name='efi_write' mangled-name='efi_write' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_write'> - <parameter type-id='95e97e5e' name='fd'/> - <parameter type-id='0d8119a8' name='vtoc'/> + <function-decl name='uuid_is_null' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='354f7eb9'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='efi_free' mangled-name='efi_free' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_free'> - <parameter type-id='0d8119a8' name='ptr'/> - <return type-id='48b5725f'/> + <function-decl name='crc32' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5bbcce85'/> + <parameter type-id='e8cb3e0e'/> + <parameter type-id='09110a74'/> + <return type-id='5bbcce85'/> </function-decl> <function-decl name='efi_err_check' mangled-name='efi_err_check' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_err_check'> <parameter type-id='0d8119a8' name='vtoc'/> <return type-id='48b5725f'/> </function-decl> - <type-decl name='unsigned long int' size-in-bits='64' id='7359adad'/> - <type-decl name='unsigned short int' size-in-bits='16' id='8efea9e5'/> </abi-instr> <abi-instr address-size='64' path='lib/libshare/libshare.c' language='LANG_C99'> <array-type-def dimensions='1' type-id='b99c00c9' size-in-bits='128' id='2d6895a3'> <subrange length='2' type-id='7359adad' id='52efc4ef'/> </array-type-def> <var-decl name='sa_protocol_names' type-id='2d6895a3' mangled-name='sa_protocol_names' visibility='default' elf-symbol-id='sa_protocol_names'/> - <function-decl name='sa_enable_share' mangled-name='sa_enable_share' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_enable_share'> - <parameter type-id='80f4b756' name='zfsname'/> - <parameter type-id='80f4b756' name='mountpoint'/> - <parameter type-id='80f4b756' name='shareopts'/> - <parameter type-id='9155d4b5' name='protocol'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='sa_disable_share' mangled-name='sa_disable_share' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_disable_share'> - <parameter type-id='80f4b756' name='mountpoint'/> - <parameter type-id='9155d4b5' name='protocol'/> + <type-decl name='unsigned long int' size-in-bits='64' id='7359adad'/> + </abi-instr> + <abi-instr address-size='64' path='lib/libshare/nfs.c' language='LANG_C99'> + <function-decl name='rename' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sa_is_shared' mangled-name='sa_is_shared' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_is_shared'> - <parameter type-id='80f4b756' name='mountpoint'/> - <parameter type-id='9155d4b5' name='protocol'/> - <return type-id='c19b74c3'/> + <function-decl name='memchr' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> </function-decl> - <function-decl name='sa_commit_shares' mangled-name='sa_commit_shares' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_commit_shares'> - <parameter type-id='9155d4b5' name='protocol'/> - <return type-id='48b5725f'/> + <function-decl name='flock' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sa_validate_shareopts' mangled-name='sa_validate_shareopts' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_validate_shareopts'> - <parameter type-id='80f4b756' name='options'/> - <parameter type-id='9155d4b5' name='protocol'/> + <function-decl name='fchmod' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='e1c52942'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sa_errorstr' mangled-name='sa_errorstr' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_errorstr'> - <parameter type-id='95e97e5e' name='err'/> - <return type-id='80f4b756'/> + <function-decl name='mkdir' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='e1c52942'/> + <return type-id='95e97e5e'/> </function-decl> - <enum-decl name='sa_protocol' id='9155d4b5'> - <underlying-type type-id='9cac1fee'/> - <enumerator name='SA_PROTOCOL_NFS' value='0'/> - <enumerator name='SA_PROTOCOL_SMB' value='1'/> - <enumerator name='SA_PROTOCOL_COUNT' value='2'/> - </enum-decl> </abi-instr> <abi-instr address-size='64' path='lib/libshare/os/linux/nfs.c' language='LANG_C99'> <class-decl name='sa_share_impl' size-in-bits='192' is-struct='yes' visibility='default' id='72b09bf8'> @@ -788,7 +683,7 @@ </data-member> </class-decl> <typedef-decl name='sa_share_impl_t' type-id='946a2c6b' id='a48b47d0'/> - <class-decl name='sa_fstype_t' size-in-bits='320' is-struct='yes' naming-typedef-id='639af739' visibility='default' id='944afa86'> + <class-decl name='sa_fstype_t' size-in-bits='384' is-struct='yes' naming-typedef-id='639af739' visibility='default' id='944afa86'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='enable_share' type-id='2f78a9c1' visibility='default'/> </data-member> @@ -804,6 +699,9 @@ <data-member access='public' layout-offset-in-bits='256'> <var-decl name='commit_shares' type-id='797ee7da' visibility='default'/> </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='truncate_shares' type-id='5d51038b' visibility='default'/> + </data-member> </class-decl> <typedef-decl name='sa_fstype_t' type-id='944afa86' id='639af739'/> <qualified-type-def type-id='639af739' const='yes' id='d19dbca9'/> @@ -815,9 +713,35 @@ <qualified-type-def type-id='70487b28' const='yes' id='f194a8fb'/> <pointer-type-def type-id='c13578bc' size-in-bits='64' id='fa1f29ce'/> <qualified-type-def type-id='fa1f29ce' const='yes' id='2f78a9c1'/> + <pointer-type-def type-id='723e6cf2' size-in-bits='64' id='1d99e49c'/> <pointer-type-def type-id='86373eb1' size-in-bits='64' id='f337456d'/> <qualified-type-def type-id='f337456d' const='yes' id='81020bc2'/> + <qualified-type-def type-id='953b12f8' const='yes' id='5d51038b'/> <var-decl name='libshare_nfs_type' type-id='d19dbca9' visibility='default'/> + <function-decl name='nfs_escape_mountpoint' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='9b23c9ad'/> + <parameter type-id='37e3bd22'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nfs_is_shared_impl' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='a48b47d0'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='nfs_toggle_share' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='a48b47d0'/> + <parameter type-id='1d99e49c'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nfs_reset_shares' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> <function-type size-in-bits='64' id='276427e1'> <return type-id='95e97e5e'/> </function-type> @@ -829,47 +753,44 @@ <parameter type-id='a48b47d0'/> <return type-id='95e97e5e'/> </function-type> + <function-type size-in-bits='64' id='723e6cf2'> + <parameter type-id='a48b47d0'/> + <parameter type-id='822cd80b'/> + <return type-id='95e97e5e'/> + </function-type> <function-type size-in-bits='64' id='86373eb1'> <parameter type-id='a48b47d0'/> <return type-id='c19b74c3'/> </function-type> + <function-type size-in-bits='64' id='ee076206'> + <return type-id='48b5725f'/> + </function-type> </abi-instr> <abi-instr address-size='64' path='lib/libshare/os/linux/smb.c' language='LANG_C99'> <var-decl name='libshare_smb_type' type-id='d19dbca9' visibility='default'/> + <function-decl name='__fgets_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='266fe297'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='e75a27e9'/> + <return type-id='26a90f95'/> + </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libspl/assert.c' language='LANG_C99'> <function-decl name='libspl_set_assert_ok' mangled-name='libspl_set_assert_ok' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_set_assert_ok'> <parameter type-id='c19b74c3' name='val'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='libspl_assertf' mangled-name='libspl_assertf' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_assertf'> - <parameter type-id='80f4b756' name='file'/> - <parameter type-id='80f4b756' name='func'/> - <parameter type-id='95e97e5e' name='line'/> - <parameter type-id='80f4b756' name='format'/> - <parameter is-variadic='yes'/> - <return type-id='48b5725f'/> - </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libspl/atomic.c' language='LANG_C99'> - <type-decl name='signed char' size-in-bits='8' id='28577a57'/> - <type-decl name='unsigned short int' size-in-bits='16' id='8efea9e5'/> <typedef-decl name='int8_t' type-id='2171a512' id='ee31ee44'/> - <typedef-decl name='int16_t' type-id='03896e23' id='23bd8cb5'/> - <typedef-decl name='uint16_t' type-id='253c2d2a' id='149c6638'/> <typedef-decl name='__int8_t' type-id='28577a57' id='2171a512'/> - <typedef-decl name='__int16_t' type-id='a2185560' id='03896e23'/> - <typedef-decl name='__uint16_t' type-id='8efea9e5' id='253c2d2a'/> <qualified-type-def type-id='149c6638' volatile='yes' id='5120c5f7'/> <pointer-type-def type-id='5120c5f7' size-in-bits='64' id='93977ae7'/> - <qualified-type-def type-id='8f92235e' volatile='yes' id='430e0681'/> - <pointer-type-def type-id='430e0681' size-in-bits='64' id='3a147f31'/> <qualified-type-def type-id='b96825af' volatile='yes' id='84ff7d66'/> <pointer-type-def type-id='84ff7d66' size-in-bits='64' id='aa323ea4'/> <qualified-type-def type-id='ee1f298e' volatile='yes' id='6f7e09cb'/> <pointer-type-def type-id='6f7e09cb' size-in-bits='64' id='64698d33'/> - <qualified-type-def type-id='48b5725f' volatile='yes' id='b0b3cbf9'/> - <pointer-type-def type-id='b0b3cbf9' size-in-bits='64' id='fe09dd29'/> <function-decl name='atomic_inc_8' mangled-name='atomic_inc_8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_inc_8'> <parameter type-id='aa323ea4' name='target'/> <return type-id='48b5725f'/> @@ -922,11 +843,6 @@ <parameter type-id='3ff5601b' name='bits'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='atomic_add_long' mangled-name='atomic_add_long' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_add_long'> - <parameter type-id='64698d33' name='target'/> - <parameter type-id='bd54fe1a' name='bits'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='atomic_sub_ptr' mangled-name='atomic_sub_ptr' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_sub_ptr'> <parameter type-id='fe09dd29' name='target'/> <parameter type-id='79a0948f' name='bits'/> @@ -947,11 +863,6 @@ <parameter type-id='3ff5601b' name='bits'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='atomic_sub_long' mangled-name='atomic_sub_long' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_sub_long'> - <parameter type-id='64698d33' name='target'/> - <parameter type-id='bd54fe1a' name='bits'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='atomic_or_8' mangled-name='atomic_or_8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_or_8'> <parameter type-id='aa323ea4' name='target'/> <parameter type-id='b96825af' name='bits'/> @@ -1154,11 +1065,6 @@ <parameter type-id='149c6638' name='bits'/> <return type-id='149c6638'/> </function-decl> - <function-decl name='atomic_swap_32' mangled-name='atomic_swap_32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_swap_32'> - <parameter type-id='3a147f31' name='target'/> - <parameter type-id='8f92235e' name='bits'/> - <return type-id='8f92235e'/> - </function-decl> <function-decl name='atomic_swap_ulong' mangled-name='atomic_swap_ulong' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_swap_ulong'> <parameter type-id='64698d33' name='target'/> <parameter type-id='ee1f298e' name='bits'/> @@ -1182,9 +1088,6 @@ <function-decl name='membar_enter' mangled-name='membar_enter' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='membar_enter'> <return type-id='48b5725f'/> </function-decl> - <function-decl name='membar_producer' mangled-name='membar_producer' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='membar_producer'> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='membar_consumer' mangled-name='membar_consumer' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='membar_consumer'> <return type-id='48b5725f'/> </function-decl> @@ -1193,6 +1096,10 @@ <function-decl name='getexecname' mangled-name='getexecname' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getexecname'> <return type-id='80f4b756'/> </function-decl> + <function-decl name='getexecname_impl' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='26a90f95'/> + <return type-id='79a0948f'/> + </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libspl/list.c' language='LANG_C99'> <typedef-decl name='list_node_t' type-id='b0b5e45e' id='b21843b2'/> @@ -1205,14 +1112,11 @@ <var-decl name='prev' type-id='b03eadb4' visibility='default'/> </data-member> </class-decl> - <class-decl name='list' size-in-bits='256' is-struct='yes' visibility='default' id='e824dae9'> + <class-decl name='list' size-in-bits='192' is-struct='yes' visibility='default' id='e824dae9'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='list_size' type-id='b59d7dce' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> <var-decl name='list_offset' type-id='b59d7dce' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='128'> + <data-member access='public' layout-offset-in-bits='64'> <var-decl name='list_head' type-id='b0b5e45e' visibility='default'/> </data-member> </class-decl> @@ -1306,292 +1210,96 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libspl/mkdirp.c' language='LANG_C99'> - <typedef-decl name='mode_t' type-id='e1c52942' id='d50d396c'/> - <function-decl name='mkdirp' mangled-name='mkdirp' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mkdirp'> - <parameter type-id='80f4b756' name='d'/> - <parameter type-id='d50d396c' name='mode'/> - <return type-id='95e97e5e'/> + <typedef-decl name='wchar_t' type-id='95e97e5e' id='928221d2'/> + <qualified-type-def type-id='928221d2' const='yes' id='effb3702'/> + <pointer-type-def type-id='effb3702' size-in-bits='64' id='f077d3f8'/> + <qualified-type-def type-id='f077d3f8' restrict='yes' id='598aab80'/> + <pointer-type-def type-id='928221d2' size-in-bits='64' id='323d93c1'/> + <qualified-type-def type-id='323d93c1' restrict='yes' id='f1358bc3'/> + <function-decl name='__mbstowcs_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='f1358bc3'/> + <parameter type-id='9d26089a'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> </function-decl> - </abi-instr> - <abi-instr address-size='64' path='lib/libspl/os/linux/gethostid.c' language='LANG_C99'> - <function-decl name='get_system_hostid' mangled-name='get_system_hostid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='get_system_hostid'> - <return type-id='7359adad'/> + <function-decl name='__wcstombs_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='266fe297'/> + <parameter type-id='598aab80'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> </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='03085adc' size-in-bits='192' id='083f8d58'> - <subrange length='3' type-id='7359adad' id='56f209d2'/> - </array-type-def> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='8' id='89feb1ec'> - <subrange length='1' type-id='7359adad' id='52f813b4'/> - </array-type-def> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='160' id='664ac0b7'> - <subrange length='20' type-id='7359adad' id='fdca39cf'/> - </array-type-def> - <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> - <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> - <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> - <class-decl name='extmnttab' size-in-bits='320' is-struct='yes' visibility='default' id='0c544dc0'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='mnt_special' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='mnt_mountp' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='mnt_fstype' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='mnt_mntopts' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='mnt_major' type-id='3502e3ff' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='mnt_minor' type-id='3502e3ff' visibility='default'/> - </data-member> - </class-decl> - <class-decl name='stat64' size-in-bits='1152' is-struct='yes' visibility='default' id='0bbec9cd'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='st_dev' type-id='35ed8932' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='st_ino' type-id='71288a47' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='st_nlink' type-id='80f0b9df' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='st_mode' type-id='e1c52942' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='st_uid' type-id='cc5fcceb' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='st_gid' type-id='d94ec6d9' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='__pad0' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='st_rdev' type-id='35ed8932' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='st_size' type-id='79989e9c' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='st_blksize' type-id='d3f10a7f' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='st_blocks' type-id='4e711bf1' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='st_atim' type-id='a9c79a1f' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='st_mtim' type-id='a9c79a1f' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='st_ctim' type-id='a9c79a1f' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='__glibc_reserved' type-id='083f8d58' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='__dev_t' type-id='7359adad' id='35ed8932'/> - <typedef-decl name='__gid_t' type-id='f0981eeb' id='d94ec6d9'/> - <typedef-decl name='__ino64_t' type-id='7359adad' id='71288a47'/> - <typedef-decl name='__mode_t' type-id='f0981eeb' id='e1c52942'/> - <typedef-decl name='__nlink_t' type-id='7359adad' id='80f0b9df'/> - <typedef-decl name='__off_t' type-id='bd54fe1a' id='79989e9c'/> - <typedef-decl name='__off64_t' type-id='bd54fe1a' id='724e4de6'/> - <typedef-decl name='__time_t' type-id='bd54fe1a' id='65eda9c0'/> - <typedef-decl name='__blksize_t' type-id='bd54fe1a' id='d3f10a7f'/> - <typedef-decl name='__blkcnt64_t' type-id='bd54fe1a' id='4e711bf1'/> - <typedef-decl name='__syscall_slong_t' type-id='bd54fe1a' id='03085adc'/> - <typedef-decl name='FILE' type-id='ec1ed955' id='aa12d1ba'/> - <typedef-decl name='_IO_lock_t' type-id='48b5725f' id='bb4788fa'/> - <class-decl name='_IO_FILE' size-in-bits='1728' is-struct='yes' visibility='default' id='ec1ed955'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='_flags' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='_IO_read_ptr' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='_IO_read_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='_IO_read_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='_IO_write_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='_IO_write_ptr' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='_IO_write_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='_IO_buf_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='_IO_buf_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='_IO_save_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='_IO_backup_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='_IO_save_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='_markers' type-id='e4c6fa61' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='_chain' type-id='dca988a5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='896'> - <var-decl name='_fileno' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='928'> - <var-decl name='_flags2' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='_old_offset' type-id='79989e9c' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1024'> - <var-decl name='_cur_column' type-id='8efea9e5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1040'> - <var-decl name='_vtable_offset' type-id='28577a57' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1048'> - <var-decl name='_shortbuf' type-id='89feb1ec' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1088'> - <var-decl name='_lock' type-id='cecf4ea7' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1152'> - <var-decl name='_offset' type-id='724e4de6' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1216'> - <var-decl name='_codecvt' type-id='570f8c59' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='_wide_data' type-id='c65a1f29' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='_freeres_list' type-id='dca988a5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='_freeres_buf' type-id='eaa32e2f' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='__pad5' type-id='b59d7dce' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='_mode' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1568'> - <var-decl name='_unused2' type-id='664ac0b7' visibility='default'/> - </data-member> - </class-decl> - <class-decl name='timespec' size-in-bits='128' is-struct='yes' visibility='default' id='a9c79a1f'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='tv_sec' type-id='65eda9c0' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='tv_nsec' type-id='03085adc' visibility='default'/> - </data-member> - </class-decl> - <pointer-type-def type-id='aa12d1ba' size-in-bits='64' id='822cd80b'/> - <pointer-type-def type-id='ec1ed955' size-in-bits='64' id='dca988a5'/> - <pointer-type-def type-id='a4036571' size-in-bits='64' id='570f8c59'/> - <pointer-type-def type-id='bb4788fa' size-in-bits='64' id='cecf4ea7'/> - <pointer-type-def type-id='010ae0b9' size-in-bits='64' id='e4c6fa61'/> - <pointer-type-def type-id='79bd3751' size-in-bits='64' id='c65a1f29'/> - <pointer-type-def type-id='0c544dc0' size-in-bits='64' id='394fc496'/> - <pointer-type-def type-id='0bbec9cd' size-in-bits='64' id='62f7a03d'/> - <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> - <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> - <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> - <function-decl name='getmntany' mangled-name='getmntany' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getmntany'> - <parameter type-id='822cd80b' name='fp'/> - <parameter type-id='9d424d31' name='mgetp'/> - <parameter type-id='9d424d31' name='mrefp'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='_sol_getmntent' mangled-name='_sol_getmntent' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_sol_getmntent'> - <parameter type-id='822cd80b' name='fp'/> - <parameter type-id='9d424d31' name='mgetp'/> - <return type-id='95e97e5e'/> + <pointer-type-def type-id='56fe4a37' size-in-bits='64' id='b6b61d2f'/> + <qualified-type-def type-id='b6b61d2f' restrict='yes' id='3cad23cd'/> + <function-decl name='getmntent_r' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='3cad23cd'/> + <parameter type-id='266fe297'/> + <parameter type-id='95e97e5e'/> + <return type-id='b6b61d2f'/> </function-decl> - <function-decl name='getextmntent' mangled-name='getextmntent' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getextmntent'> - <parameter type-id='80f4b756' name='path'/> - <parameter type-id='394fc496' name='entry'/> - <parameter type-id='62f7a03d' name='statbuf'/> + <function-decl name='feof' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='lib/libspl/os/linux/zone.c' language='LANG_C99'> - <typedef-decl name='zoneid_t' type-id='3502e3ff' id='4da03624'/> - <function-decl name='getzoneid' mangled-name='getzoneid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getzoneid'> - <return type-id='4da03624'/> - </function-decl> - </abi-instr> - <abi-instr address-size='64' path='lib/libspl/page.c' language='LANG_C99'> - <function-decl name='spl_pagesize' mangled-name='spl_pagesize' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='spl_pagesize'> - <return type-id='b59d7dce'/> - </function-decl> - </abi-instr> - <abi-instr address-size='64' path='lib/libspl/strlcat.c' language='LANG_C99'> - <function-decl name='strlcat' mangled-name='strlcat' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='strlcat'> - <parameter type-id='26a90f95' name='dst'/> - <parameter type-id='80f4b756' name='src'/> - <parameter type-id='b59d7dce' name='dstsize'/> - <return type-id='b59d7dce'/> - </function-decl> - </abi-instr> - <abi-instr address-size='64' path='lib/libspl/strlcpy.c' language='LANG_C99'> - <function-decl name='strlcpy' mangled-name='strlcpy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='strlcpy'> - <parameter type-id='26a90f95' name='dst'/> - <parameter type-id='80f4b756' name='src'/> - <parameter type-id='b59d7dce' name='len'/> - <return type-id='b59d7dce'/> - </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'/> + <function-decl name='nl_langinfo' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='03b79a94'/> + <return type-id='26a90f95'/> + </function-decl> <function-decl name='print_timestamp' mangled-name='print_timestamp' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='print_timestamp'> <parameter type-id='3502e3ff' name='timestamp_fmt'/> <return type-id='48b5725f'/> </function-decl> </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'/> + </array-type-def> <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='384' id='36d7f119'> <subrange length='48' type-id='7359adad' id='8f6d2a81'/> </array-type-def> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='448' id='6093ff7c'> - <subrange length='56' type-id='7359adad' id='f8137894'/> - </array-type-def> - <type-decl name='long long unsigned int' size-in-bits='64' id='3a47d82b'/> <array-type-def dimensions='1' type-id='f0981eeb' size-in-bits='64' id='0d532ec1'> <subrange length='2' type-id='7359adad' id='52efc4ef'/> </array-type-def> - <typedef-decl name='tpool_t' type-id='88d1b7f9' id='b1bbf10d'/> - <typedef-decl name='pthread_t' type-id='7359adad' id='4051f5e7'/> - <union-decl name='pthread_attr_t' size-in-bits='448' visibility='default' id='b63afacd'> + <union-decl name='__atomic_wide_counter' size-in-bits='64' naming-typedef-id='f3b40860' visibility='default' id='613ce450'> <data-member access='public'> - <var-decl name='__size' type-id='6093ff7c' visibility='default'/> + <var-decl name='__value64' type-id='3a47d82b' visibility='default'/> </data-member> <data-member access='public'> - <var-decl name='__align' type-id='bd54fe1a' visibility='default'/> + <var-decl name='__value32' type-id='e7f43f72' visibility='default'/> </data-member> </union-decl> - <typedef-decl name='pthread_attr_t' type-id='b63afacd' id='7d8569fd'/> + <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f72'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='__low' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='__high' type-id='f0981eeb' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='__atomic_wide_counter' type-id='613ce450' id='f3b40860'/> + <typedef-decl name='__cpu_mask' type-id='7359adad' id='49ef3ffd'/> + <class-decl name='cpu_set_t' size-in-bits='1024' is-struct='yes' naming-typedef-id='8037c762' visibility='default' id='1f20d231'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='__bits' type-id='a14403f5' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='cpu_set_t' type-id='1f20d231' id='8037c762'/> + <union-decl name='pthread_condattr_t' size-in-bits='32' naming-typedef-id='836265dd' visibility='default' id='33dd3aad'> + <data-member access='public'> + <var-decl name='__size' type-id='8e0573fd' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='__align' type-id='95e97e5e' visibility='default'/> + </data-member> + </union-decl> + <typedef-decl name='pthread_condattr_t' type-id='33dd3aad' id='836265dd'/> <union-decl name='pthread_cond_t' size-in-bits='384' naming-typedef-id='62fab762' visibility='default' id='cbb12c12'> <data-member access='public'> <var-decl name='__data' type-id='c987b47c' visibility='default'/> @@ -1606,10 +1314,10 @@ <typedef-decl name='pthread_cond_t' type-id='cbb12c12' id='62fab762'/> <class-decl name='__pthread_cond_s' size-in-bits='384' is-struct='yes' visibility='default' id='c987b47c'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='' type-id='ac5ab595' visibility='default'/> + <var-decl name='__wseq' type-id='f3b40860' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='' type-id='ac5ab596' visibility='default'/> + <var-decl name='__g1_start' type-id='f3b40860' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> <var-decl name='__g_refs' type-id='0d532ec1' visibility='default'/> @@ -1627,30 +1335,11 @@ <var-decl name='__g_signals' type-id='0d532ec1' visibility='default'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' id='ac5ab595'> - <data-member access='public'> - <var-decl name='__wseq' type-id='3a47d82b' visibility='default'/> - </data-member> - <data-member access='public'> - <var-decl name='__wseq32' type-id='e7f43f72' visibility='default'/> - </data-member> - </union-decl> - <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f72'> + <class-decl name='sched_param' size-in-bits='32' is-struct='yes' visibility='default' id='0897719a'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='__low' type-id='f0981eeb' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='__high' type-id='f0981eeb' visibility='default'/> + <var-decl name='sched_priority' type-id='95e97e5e' visibility='default'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' id='ac5ab596'> - <data-member access='public'> - <var-decl name='__g1_start' type-id='3a47d82b' visibility='default'/> - </data-member> - <data-member access='public'> - <var-decl name='__g1_start32' type-id='e7f43f72' visibility='default'/> - </data-member> - </union-decl> <typedef-decl name='tpool_job_t' type-id='3b8579e5' id='66a0afc9'/> <class-decl name='tpool_job' size-in-bits='192' is-struct='yes' visibility='default' id='3b8579e5'> <data-member access='public' layout-offset-in-bits='0'> @@ -1672,6 +1361,185 @@ <var-decl name='tpa_tid' type-id='4051f5e7' visibility='default'/> </data-member> </class-decl> + <qualified-type-def type-id='8037c762' const='yes' id='f50ea9b2'/> + <pointer-type-def type-id='f50ea9b2' size-in-bits='64' id='5e14fa48'/> + <qualified-type-def type-id='836265dd' const='yes' id='7d24c58d'/> + <pointer-type-def type-id='7d24c58d' size-in-bits='64' id='a7e325e5'/> + <qualified-type-def type-id='a7e325e5' restrict='yes' id='4c428e67'/> + <qualified-type-def type-id='0897719a' const='yes' id='c4a7b189'/> + <pointer-type-def type-id='c4a7b189' size-in-bits='64' id='36fca399'/> + <qualified-type-def type-id='36fca399' restrict='yes' id='37e4897b'/> + <qualified-type-def type-id='e05e8614' restrict='yes' id='0be2e71c'/> + <pointer-type-def type-id='8037c762' size-in-bits='64' id='d74a6869'/> + <qualified-type-def type-id='7292109c' restrict='yes' id='6942f6a4'/> + <qualified-type-def type-id='7347a39e' restrict='yes' id='578ba182'/> + <pointer-type-def type-id='62fab762' size-in-bits='64' id='db285b03'/> + <qualified-type-def type-id='db285b03' restrict='yes' id='2a468b41'/> + <qualified-type-def type-id='18c91f9e' restrict='yes' id='6e745582'/> + <pointer-type-def type-id='0897719a' size-in-bits='64' id='23cbcb08'/> + <qualified-type-def type-id='23cbcb08' restrict='yes' id='b09b2050'/> + <pointer-type-def type-id='6fcda10e' size-in-bits='64' id='ad33e5e7'/> + <pointer-type-def type-id='66a0afc9' size-in-bits='64' id='f32b30e4'/> + <qualified-type-def type-id='63e171df' restrict='yes' id='9e7a3a7d'/> + <function-decl name='pthread_self' visibility='default' binding='global' size-in-bits='64'> + <return type-id='4051f5e7'/> + </function-decl> + <function-decl name='pthread_attr_init' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='7347a39e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_destroy' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='7347a39e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_getdetachstate' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='540db505'/> + <parameter type-id='7292109c'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_setdetachstate' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='7347a39e'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_getguardsize' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='540db505'/> + <parameter type-id='78c01427'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_setguardsize' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='7347a39e'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_getschedparam' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e1815e87'/> + <parameter type-id='b09b2050'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_setschedparam' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='578ba182'/> + <parameter type-id='37e4897b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_getschedpolicy' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e1815e87'/> + <parameter type-id='6942f6a4'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_setschedpolicy' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='7347a39e'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_getinheritsched' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e1815e87'/> + <parameter type-id='6942f6a4'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_setinheritsched' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='7347a39e'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_getscope' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e1815e87'/> + <parameter type-id='6942f6a4'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_setscope' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='7347a39e'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_getstack' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e1815e87'/> + <parameter type-id='9e7a3a7d'/> + <parameter type-id='d19b2c25'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_setstack' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='7347a39e'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_setaffinity_np' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='7347a39e'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='5e14fa48'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_attr_getaffinity_np' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='540db505'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='d74a6869'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_setcancelstate' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='7292109c'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_setcanceltype' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='7292109c'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__pthread_unregister_cancel' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='ba7c727c'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='pthread_cond_init' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='2a468b41'/> + <parameter type-id='4c428e67'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_cond_signal' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='db285b03'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_cond_broadcast' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='db285b03'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_cond_wait' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='2a468b41'/> + <parameter type-id='6e745582'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_cond_timedwait' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='2a468b41'/> + <parameter type-id='6e745582'/> + <parameter type-id='0be2e71c'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__sysconf' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='bd54fe1a'/> + </function-decl> + <function-decl name='tpool_abandon' mangled-name='tpool_abandon' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_abandon'> + <parameter type-id='9cf59a50' name='tpool'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='tpool_suspend' mangled-name='tpool_suspend' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_suspend'> + <parameter type-id='9cf59a50' name='tpool'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='tpool_suspended' mangled-name='tpool_suspended' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_suspended'> + <parameter type-id='9cf59a50' name='tpool'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='tpool_resume' mangled-name='tpool_resume' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_resume'> + <parameter type-id='9cf59a50' name='tpool'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='tpool_member' mangled-name='tpool_member' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_member'> + <parameter type-id='9cf59a50' name='tpool'/> + <return type-id='95e97e5e'/> + </function-decl> + <pointer-type-def type-id='b1bbf10d' size-in-bits='64' id='9cf59a50'/> + <typedef-decl name='tpool_t' type-id='88d1b7f9' id='b1bbf10d'/> <class-decl name='tpool' size-in-bits='2496' is-struct='yes' visibility='default' id='88d1b7f9'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='tp_forw' type-id='9cf59a50' visibility='default'/> @@ -1725,61 +1593,12 @@ <var-decl name='tp_idle' type-id='95e97e5e' visibility='default'/> </data-member> </class-decl> - <pointer-type-def type-id='7d8569fd' size-in-bits='64' id='7347a39e'/> - <pointer-type-def type-id='6fcda10e' size-in-bits='64' id='ad33e5e7'/> - <pointer-type-def type-id='66a0afc9' size-in-bits='64' id='f32b30e4'/> - <pointer-type-def type-id='b1bbf10d' size-in-bits='64' id='9cf59a50'/> - <pointer-type-def type-id='c5c76c9c' size-in-bits='64' id='b7f9d8e6'/> - <function-decl name='tpool_create' mangled-name='tpool_create' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_create'> - <parameter type-id='3502e3ff' name='min_threads'/> - <parameter type-id='3502e3ff' name='max_threads'/> - <parameter type-id='3502e3ff' name='linger'/> - <parameter type-id='7347a39e' name='attr'/> - <return type-id='9cf59a50'/> - </function-decl> - <function-decl name='tpool_dispatch' mangled-name='tpool_dispatch' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_dispatch'> - <parameter type-id='9cf59a50' name='tpool'/> - <parameter type-id='b7f9d8e6' name='func'/> - <parameter type-id='eaa32e2f' name='arg'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='tpool_destroy' mangled-name='tpool_destroy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_destroy'> - <parameter type-id='9cf59a50' name='tpool'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='tpool_abandon' mangled-name='tpool_abandon' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_abandon'> - <parameter type-id='9cf59a50' name='tpool'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='tpool_wait' mangled-name='tpool_wait' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_wait'> - <parameter type-id='9cf59a50' name='tpool'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='tpool_suspend' mangled-name='tpool_suspend' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_suspend'> - <parameter type-id='9cf59a50' name='tpool'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='tpool_suspended' mangled-name='tpool_suspended' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_suspended'> - <parameter type-id='9cf59a50' name='tpool'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='tpool_resume' mangled-name='tpool_resume' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_resume'> - <parameter type-id='9cf59a50' name='tpool'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='tpool_member' mangled-name='tpool_member' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_member'> - <parameter type-id='9cf59a50' name='tpool'/> - <return type-id='95e97e5e'/> - </function-decl> <function-type size-in-bits='64' id='c5c76c9c'> <parameter type-id='eaa32e2f'/> <return type-id='48b5725f'/> </function-type> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/libzfs_changelist.c' language='LANG_C99'> - <type-decl name='void' id='48b5725f'/> - </abi-instr> - <abi-instr address-size='64' path='lib/libzfs/libzfs_config.c' language='LANG_C99'> <array-type-def dimensions='1' type-id='bf311473' size-in-bits='128' id='f0f65199'> <subrange length='2' type-id='7359adad' id='52efc4ef'/> </array-type-def> @@ -1796,20 +1615,33 @@ <class-decl name='re_dfa_t' is-struct='yes' visibility='default' is-declaration-only='yes' id='b48d2441'/> <class-decl name='uu_avl' is-struct='yes' visibility='default' is-declaration-only='yes' id='4af029d1'/> <class-decl name='uu_avl_pool' is-struct='yes' visibility='default' is-declaration-only='yes' id='12a530a8'/> + <class-decl name='uu_avl_walk' is-struct='yes' visibility='default' is-declaration-only='yes' id='e70a39e3'/> <type-decl name='int' size-in-bits='32' id='95e97e5e'/> <type-decl name='long int' size-in-bits='64' id='bd54fe1a'/> <type-decl name='long long int' size-in-bits='64' id='1eb56b1e'/> <type-decl name='short int' size-in-bits='16' id='a2185560'/> + <array-type-def dimensions='1' type-id='e475ab95' size-in-bits='192' id='0ce65a8b'> + <subrange length='3' type-id='7359adad' id='56f209d2'/> + </array-type-def> <type-decl name='unnamed-enum-underlying-type-32' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='9cac1fee'/> <type-decl name='unsigned char' size-in-bits='8' id='002ac4a6'/> <type-decl name='unsigned int' size-in-bits='32' id='f0981eeb'/> <type-decl name='unsigned long int' size-in-bits='64' id='7359adad'/> + <type-decl name='void' id='48b5725f'/> + <typedef-decl name='uu_compare_fn_t' type-id='add6e811' id='40f93560'/> <typedef-decl name='uu_avl_pool_t' type-id='12a530a8' id='7f84e390'/> <typedef-decl name='uu_avl_t' type-id='4af029d1' id='bb7f0973'/> + <class-decl name='uu_avl_node' size-in-bits='192' is-struct='yes' visibility='default' id='f65f4326'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='uan_opaque' type-id='0ce65a8b' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='uu_avl_node_t' type-id='f65f4326' id='73a65116'/> + <typedef-decl name='uu_avl_walk_t' type-id='e70a39e3' id='edd8457b'/> + <typedef-decl name='uu_avl_index_t' type-id='e475ab95' id='5d7f5fc8'/> <typedef-decl name='zfs_handle_t' type-id='f6ee4445' id='775509eb'/> <typedef-decl name='zpool_handle_t' type-id='67002a8a' id='b1efc708'/> <typedef-decl name='libzfs_handle_t' type-id='c8a9d9d8' id='95942d0c'/> - <typedef-decl name='zpool_iter_f' type-id='3aebb66f' id='fa476e62'/> <typedef-decl name='zfs_iter_f' type-id='5571cde4' id='d8e49ab9'/> <typedef-decl name='avl_tree_t' type-id='b351119f' id='f20fbd51'/> <class-decl name='avl_node' size-in-bits='192' is-struct='yes' visibility='default' id='428b67b3'> @@ -1886,6 +1718,122 @@ <enumerator name='DMU_OST_NUMTYPES' value='6'/> </enum-decl> <typedef-decl name='dmu_objset_type_t' type-id='6b1b19f9' id='230f1e16'/> + <enum-decl name='zfs_prop_t' naming-typedef-id='58603c44' id='4b000d60'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='ZPROP_CONT' value='-2'/> + <enumerator name='ZPROP_INVAL' value='-1'/> + <enumerator name='ZPROP_USERPROP' value='-1'/> + <enumerator name='ZFS_PROP_TYPE' value='0'/> + <enumerator name='ZFS_PROP_CREATION' value='1'/> + <enumerator name='ZFS_PROP_USED' value='2'/> + <enumerator name='ZFS_PROP_AVAILABLE' value='3'/> + <enumerator name='ZFS_PROP_REFERENCED' value='4'/> + <enumerator name='ZFS_PROP_COMPRESSRATIO' value='5'/> + <enumerator name='ZFS_PROP_MOUNTED' value='6'/> + <enumerator name='ZFS_PROP_ORIGIN' value='7'/> + <enumerator name='ZFS_PROP_QUOTA' value='8'/> + <enumerator name='ZFS_PROP_RESERVATION' value='9'/> + <enumerator name='ZFS_PROP_VOLSIZE' value='10'/> + <enumerator name='ZFS_PROP_VOLBLOCKSIZE' value='11'/> + <enumerator name='ZFS_PROP_RECORDSIZE' value='12'/> + <enumerator name='ZFS_PROP_MOUNTPOINT' value='13'/> + <enumerator name='ZFS_PROP_SHARENFS' value='14'/> + <enumerator name='ZFS_PROP_CHECKSUM' value='15'/> + <enumerator name='ZFS_PROP_COMPRESSION' value='16'/> + <enumerator name='ZFS_PROP_ATIME' value='17'/> + <enumerator name='ZFS_PROP_DEVICES' value='18'/> + <enumerator name='ZFS_PROP_EXEC' value='19'/> + <enumerator name='ZFS_PROP_SETUID' value='20'/> + <enumerator name='ZFS_PROP_READONLY' value='21'/> + <enumerator name='ZFS_PROP_ZONED' value='22'/> + <enumerator name='ZFS_PROP_SNAPDIR' value='23'/> + <enumerator name='ZFS_PROP_ACLMODE' value='24'/> + <enumerator name='ZFS_PROP_ACLINHERIT' value='25'/> + <enumerator name='ZFS_PROP_CREATETXG' value='26'/> + <enumerator name='ZFS_PROP_NAME' value='27'/> + <enumerator name='ZFS_PROP_CANMOUNT' value='28'/> + <enumerator name='ZFS_PROP_ISCSIOPTIONS' value='29'/> + <enumerator name='ZFS_PROP_XATTR' value='30'/> + <enumerator name='ZFS_PROP_NUMCLONES' value='31'/> + <enumerator name='ZFS_PROP_COPIES' value='32'/> + <enumerator name='ZFS_PROP_VERSION' value='33'/> + <enumerator name='ZFS_PROP_UTF8ONLY' value='34'/> + <enumerator name='ZFS_PROP_NORMALIZE' value='35'/> + <enumerator name='ZFS_PROP_CASE' value='36'/> + <enumerator name='ZFS_PROP_VSCAN' value='37'/> + <enumerator name='ZFS_PROP_NBMAND' value='38'/> + <enumerator name='ZFS_PROP_SHARESMB' value='39'/> + <enumerator name='ZFS_PROP_REFQUOTA' value='40'/> + <enumerator name='ZFS_PROP_REFRESERVATION' value='41'/> + <enumerator name='ZFS_PROP_GUID' value='42'/> + <enumerator name='ZFS_PROP_PRIMARYCACHE' value='43'/> + <enumerator name='ZFS_PROP_SECONDARYCACHE' value='44'/> + <enumerator name='ZFS_PROP_USEDSNAP' value='45'/> + <enumerator name='ZFS_PROP_USEDDS' value='46'/> + <enumerator name='ZFS_PROP_USEDCHILD' value='47'/> + <enumerator name='ZFS_PROP_USEDREFRESERV' value='48'/> + <enumerator name='ZFS_PROP_USERACCOUNTING' value='49'/> + <enumerator name='ZFS_PROP_STMF_SHAREINFO' value='50'/> + <enumerator name='ZFS_PROP_DEFER_DESTROY' value='51'/> + <enumerator name='ZFS_PROP_USERREFS' value='52'/> + <enumerator name='ZFS_PROP_LOGBIAS' value='53'/> + <enumerator name='ZFS_PROP_UNIQUE' value='54'/> + <enumerator name='ZFS_PROP_OBJSETID' value='55'/> + <enumerator name='ZFS_PROP_DEDUP' value='56'/> + <enumerator name='ZFS_PROP_MLSLABEL' value='57'/> + <enumerator name='ZFS_PROP_SYNC' value='58'/> + <enumerator name='ZFS_PROP_DNODESIZE' value='59'/> + <enumerator name='ZFS_PROP_REFRATIO' value='60'/> + <enumerator name='ZFS_PROP_WRITTEN' value='61'/> + <enumerator name='ZFS_PROP_CLONES' value='62'/> + <enumerator name='ZFS_PROP_LOGICALUSED' value='63'/> + <enumerator name='ZFS_PROP_LOGICALREFERENCED' value='64'/> + <enumerator name='ZFS_PROP_INCONSISTENT' value='65'/> + <enumerator name='ZFS_PROP_VOLMODE' value='66'/> + <enumerator name='ZFS_PROP_FILESYSTEM_LIMIT' value='67'/> + <enumerator name='ZFS_PROP_SNAPSHOT_LIMIT' value='68'/> + <enumerator name='ZFS_PROP_FILESYSTEM_COUNT' value='69'/> + <enumerator name='ZFS_PROP_SNAPSHOT_COUNT' value='70'/> + <enumerator name='ZFS_PROP_SNAPDEV' value='71'/> + <enumerator name='ZFS_PROP_ACLTYPE' value='72'/> + <enumerator name='ZFS_PROP_SELINUX_CONTEXT' value='73'/> + <enumerator name='ZFS_PROP_SELINUX_FSCONTEXT' value='74'/> + <enumerator name='ZFS_PROP_SELINUX_DEFCONTEXT' value='75'/> + <enumerator name='ZFS_PROP_SELINUX_ROOTCONTEXT' value='76'/> + <enumerator name='ZFS_PROP_RELATIME' value='77'/> + <enumerator name='ZFS_PROP_REDUNDANT_METADATA' value='78'/> + <enumerator name='ZFS_PROP_OVERLAY' value='79'/> + <enumerator name='ZFS_PROP_PREV_SNAP' value='80'/> + <enumerator name='ZFS_PROP_RECEIVE_RESUME_TOKEN' value='81'/> + <enumerator name='ZFS_PROP_ENCRYPTION' value='82'/> + <enumerator name='ZFS_PROP_KEYLOCATION' value='83'/> + <enumerator name='ZFS_PROP_KEYFORMAT' value='84'/> + <enumerator name='ZFS_PROP_PBKDF2_SALT' value='85'/> + <enumerator name='ZFS_PROP_PBKDF2_ITERS' value='86'/> + <enumerator name='ZFS_PROP_ENCRYPTION_ROOT' value='87'/> + <enumerator name='ZFS_PROP_KEY_GUID' value='88'/> + <enumerator name='ZFS_PROP_KEYSTATUS' value='89'/> + <enumerator name='ZFS_PROP_REMAPTXG' value='90'/> + <enumerator name='ZFS_PROP_SPECIAL_SMALL_BLOCKS' value='91'/> + <enumerator name='ZFS_PROP_IVSET_GUID' value='92'/> + <enumerator name='ZFS_PROP_REDACTED' value='93'/> + <enumerator name='ZFS_PROP_REDACT_SNAPS' value='94'/> + <enumerator name='ZFS_PROP_SNAPSHOTS_CHANGED' value='95'/> + <enumerator name='ZFS_PROP_PREFETCH' value='96'/> + <enumerator name='ZFS_PROP_VOLTHREADING' value='97'/> + <enumerator name='ZFS_NUM_PROPS' value='98'/> + </enum-decl> + <typedef-decl name='zfs_prop_t' type-id='4b000d60' id='58603c44'/> + <enum-decl name='zprop_source_t' naming-typedef-id='a2256d42' id='5903f80e'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='ZPROP_SRC_NONE' value='1'/> + <enumerator name='ZPROP_SRC_DEFAULT' value='2'/> + <enumerator name='ZPROP_SRC_TEMPORARY' value='4'/> + <enumerator name='ZPROP_SRC_LOCAL' value='8'/> + <enumerator name='ZPROP_SRC_INHERITED' value='16'/> + <enumerator name='ZPROP_SRC_RECEIVED' value='32'/> + </enum-decl> + <typedef-decl name='zprop_source_t' type-id='5903f80e' id='a2256d42'/> <class-decl name='nvlist' size-in-bits='192' is-struct='yes' visibility='default' id='ac266fd9'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='nvl_version' type-id='3ff5601b' visibility='default'/> @@ -1904,15 +1852,23 @@ </data-member> </class-decl> <typedef-decl name='nvlist_t' type-id='ac266fd9' id='8e8d4be3'/> + <enum-decl name='sa_protocol' id='9155d4b5'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='SA_PROTOCOL_NFS' value='0'/> + <enumerator name='SA_PROTOCOL_SMB' value='1'/> + <enumerator name='SA_PROTOCOL_COUNT' value='2'/> + </enum-decl> <enum-decl name='boolean_t' naming-typedef-id='c19b74c3' id='f58c8277'> <underlying-type type-id='9cac1fee'/> <enumerator name='B_FALSE' value='0'/> <enumerator name='B_TRUE' value='1'/> </enum-decl> <typedef-decl name='boolean_t' type-id='f58c8277' id='c19b74c3'/> + <typedef-decl name='uint_t' type-id='f0981eeb' id='3502e3ff'/> <typedef-decl name='ulong_t' type-id='7359adad' id='ee1f298e'/> <typedef-decl name='longlong_t' type-id='1eb56b1e' id='9b3ff54f'/> <typedef-decl name='diskaddr_t' type-id='9b3ff54f' id='804dc465'/> + <typedef-decl name='zoneid_t' type-id='3502e3ff' id='4da03624'/> <typedef-decl name='__re_long_size_t' type-id='7359adad' id='ba516949'/> <typedef-decl name='reg_syntax_t' type-id='7359adad' id='1b72c3b3'/> <class-decl name='re_pattern_buffer' size-in-bits='512' is-struct='yes' visibility='default' id='19fc9a8c'> @@ -2145,27 +2101,656 @@ </class-decl> <pointer-type-def type-id='0e01899c' size-in-bits='64' id='4d98cd5a'/> <pointer-type-def type-id='428b67b3' size-in-bits='64' id='bf311473'/> - <pointer-type-def type-id='c19b74c3' size-in-bits='64' id='37e3bd22'/> <pointer-type-def type-id='a84c031d' size-in-bits='64' id='26a90f95'/> + <pointer-type-def type-id='26a90f95' size-in-bits='64' id='9b23c9ad'/> <qualified-type-def type-id='a84c031d' const='yes' id='9b45d938'/> <pointer-type-def type-id='9b45d938' size-in-bits='64' id='80f4b756'/> + <qualified-type-def type-id='9155d4b5' const='yes' id='9f2c1699'/> + <pointer-type-def type-id='9f2c1699' size-in-bits='64' id='4567bbc9'/> + <qualified-type-def type-id='775509eb' const='yes' id='5eadf2db'/> + <pointer-type-def type-id='5eadf2db' size-in-bits='64' id='fcd57163'/> <pointer-type-def type-id='96ee24a5' size-in-bits='64' id='585e1de9'/> <pointer-type-def type-id='cb9628fa' size-in-bits='64' id='5571cde4'/> - <pointer-type-def type-id='2bce87e3' size-in-bits='64' id='3aebb66f'/> <pointer-type-def type-id='95942d0c' size-in-bits='64' id='b0382bb3'/> <pointer-type-def type-id='8e8d4be3' size-in-bits='64' id='5ce45b60'/> - <pointer-type-def type-id='5ce45b60' size-in-bits='64' id='857bb57e'/> <pointer-type-def type-id='b48d2441' size-in-bits='64' id='33976309'/> <pointer-type-def type-id='b96825af' size-in-bits='64' id='ae3e8ca6'/> <pointer-type-def type-id='002ac4a6' size-in-bits='64' id='cf536864'/> + <pointer-type-def type-id='5d7f5fc8' size-in-bits='64' id='813a2225'/> + <pointer-type-def type-id='73a65116' size-in-bits='64' id='2dc35b9d'/> <pointer-type-def type-id='7f84e390' size-in-bits='64' id='de82c773'/> <pointer-type-def type-id='bb7f0973' size-in-bits='64' id='a5c21a38'/> + <pointer-type-def type-id='edd8457b' size-in-bits='64' id='5842d146'/> + <pointer-type-def type-id='40f93560' size-in-bits='64' id='d502b39f'/> <pointer-type-def type-id='48b5725f' size-in-bits='64' id='eaa32e2f'/> <pointer-type-def type-id='775509eb' size-in-bits='64' id='9200a744'/> <pointer-type-def type-id='b1efc708' size-in-bits='64' id='4c81de99'/> + <pointer-type-def type-id='a2256d42' size-in-bits='64' id='debc6aa3'/> <class-decl name='re_dfa_t' is-struct='yes' visibility='default' is-declaration-only='yes' id='b48d2441'/> <class-decl name='uu_avl' is-struct='yes' visibility='default' is-declaration-only='yes' id='4af029d1'/> <class-decl name='uu_avl_pool' is-struct='yes' visibility='default' is-declaration-only='yes' id='12a530a8'/> + <class-decl name='uu_avl_walk' is-struct='yes' visibility='default' is-declaration-only='yes' id='e70a39e3'/> + <function-decl name='uu_avl_pool_create' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='d502b39f'/> + <parameter type-id='8f92235e'/> + <return type-id='de82c773'/> + </function-decl> + <function-decl name='uu_avl_pool_destroy' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='de82c773'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='uu_avl_node_init' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='2dc35b9d'/> + <parameter type-id='de82c773'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='uu_avl_create' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='de82c773'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='8f92235e'/> + <return type-id='a5c21a38'/> + </function-decl> + <function-decl name='uu_avl_destroy' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a5c21a38'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='uu_avl_last' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a5c21a38'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='uu_avl_walk_start' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a5c21a38'/> + <parameter type-id='8f92235e'/> + <return type-id='5842d146'/> + </function-decl> + <function-decl name='uu_avl_walk_next' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5842d146'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='uu_avl_walk_end' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5842d146'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='uu_avl_find' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a5c21a38'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='813a2225'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='uu_avl_insert' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a5c21a38'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='5d7f5fc8'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='uu_avl_remove' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a5c21a38'/> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zfs_get_handle' mangled-name='zfs_get_handle' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_get_handle'> + <parameter type-id='9200a744'/> + <return type-id='b0382bb3'/> + </function-decl> + <function-decl name='zfs_open' mangled-name='zfs_open' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_open'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='9200a744'/> + </function-decl> + <function-decl name='zfs_close' mangled-name='zfs_close' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_close'> + <parameter type-id='9200a744'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zfs_get_name' mangled-name='zfs_get_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_get_name'> + <parameter type-id='fcd57163'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='zfs_prop_get' mangled-name='zfs_prop_get' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_get'> + <parameter type-id='9200a744'/> + <parameter type-id='58603c44'/> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='debc6aa3'/> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='c19b74c3'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_prop_get_int' mangled-name='zfs_prop_get_int' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_get_int'> + <parameter type-id='9200a744'/> + <parameter type-id='58603c44'/> + <return type-id='9c313c2d'/> + </function-decl> + <function-decl name='zfs_iter_children_v2' mangled-name='zfs_iter_children_v2' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_children_v2'> + <parameter type-id='9200a744'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='d8e49ab9'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_iter_dependents_v2' mangled-name='zfs_iter_dependents_v2' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_dependents_v2'> + <parameter type-id='9200a744'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='d8e49ab9'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_iter_mounted' mangled-name='zfs_iter_mounted' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_mounted'> + <parameter type-id='9200a744'/> + <parameter type-id='d8e49ab9'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_refresh_properties' mangled-name='zfs_refresh_properties' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_refresh_properties'> + <parameter type-id='9200a744'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zfs_is_mounted' mangled-name='zfs_is_mounted' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_is_mounted'> + <parameter type-id='9200a744'/> + <parameter type-id='9b23c9ad'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zfs_mount' mangled-name='zfs_mount' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_mount'> + <parameter type-id='9200a744'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_unmount' mangled-name='zfs_unmount' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_unmount'> + <parameter type-id='9200a744'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_is_shared' mangled-name='zfs_is_shared' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_is_shared'> + <parameter type-id='9200a744'/> + <parameter type-id='9b23c9ad'/> + <parameter type-id='4567bbc9'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zfs_share' mangled-name='zfs_share' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_share'> + <parameter type-id='9200a744'/> + <parameter type-id='4567bbc9'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_unshare' mangled-name='zfs_unshare' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_unshare'> + <parameter type-id='9200a744'/> + <parameter type-id='80f4b756'/> + <parameter type-id='4567bbc9'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_commit_shares' mangled-name='zfs_commit_shares' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_commit_shares'> + <parameter type-id='4567bbc9'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='getzoneid' mangled-name='getzoneid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getzoneid'> + <return type-id='4da03624'/> + </function-decl> + <function-decl name='sa_commit_shares' mangled-name='sa_commit_shares' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_commit_shares'> + <parameter type-id='9155d4b5'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='strlcat' mangled-name='strlcat' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='strlcat'> + <parameter type-id='26a90f95'/> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='strlcpy' mangled-name='strlcpy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='strlcpy'> + <parameter type-id='26a90f95'/> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='strcmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strncmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strlen' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='zfs_error' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_alloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='remove_mountpoint' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9200a744'/> + <return type-id='48b5725f'/> + </function-decl> + <function-type size-in-bits='64' id='96ee24a5'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-type> + <function-type size-in-bits='64' id='add6e811'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-type> + <function-type size-in-bits='64' id='cb9628fa'> + <parameter type-id='9200a744'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-type> + </abi-instr> + <abi-instr address-size='64' path='lib/libzfs/libzfs_config.c' language='LANG_C99'> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='32768' id='d16c6df4'> + <subrange length='4096' type-id='7359adad' id='bc1b5ddc'/> + </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='65536' id='163f6aa5'> + <subrange length='8192' type-id='7359adad' id='c88f397d'/> + </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='infinite' id='e84913bd'> + <subrange length='infinite' type-id='7359adad' id='031f2035'/> + </array-type-def> + <array-type-def dimensions='1' type-id='9c313c2d' size-in-bits='128' id='c1c22e6c'> + <subrange length='2' type-id='7359adad' id='52efc4ef'/> + </array-type-def> + <array-type-def dimensions='1' type-id='b96825af' size-in-bits='24' id='d3490169'> + <subrange length='3' type-id='7359adad' id='56f209d2'/> + </array-type-def> + <type-decl name='variadic parameter type' id='2c1145c5'/> + <typedef-decl name='zpool_iter_f' type-id='3aebb66f' id='fa476e62'/> + <enum-decl name='data_type_t' naming-typedef-id='8d0687d2' id='aeeae136'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='DATA_TYPE_DONTCARE' value='-1'/> + <enumerator name='DATA_TYPE_UNKNOWN' value='0'/> + <enumerator name='DATA_TYPE_BOOLEAN' value='1'/> + <enumerator name='DATA_TYPE_BYTE' value='2'/> + <enumerator name='DATA_TYPE_INT16' value='3'/> + <enumerator name='DATA_TYPE_UINT16' value='4'/> + <enumerator name='DATA_TYPE_INT32' value='5'/> + <enumerator name='DATA_TYPE_UINT32' value='6'/> + <enumerator name='DATA_TYPE_INT64' value='7'/> + <enumerator name='DATA_TYPE_UINT64' value='8'/> + <enumerator name='DATA_TYPE_STRING' value='9'/> + <enumerator name='DATA_TYPE_BYTE_ARRAY' value='10'/> + <enumerator name='DATA_TYPE_INT16_ARRAY' value='11'/> + <enumerator name='DATA_TYPE_UINT16_ARRAY' value='12'/> + <enumerator name='DATA_TYPE_INT32_ARRAY' value='13'/> + <enumerator name='DATA_TYPE_UINT32_ARRAY' value='14'/> + <enumerator name='DATA_TYPE_INT64_ARRAY' value='15'/> + <enumerator name='DATA_TYPE_UINT64_ARRAY' value='16'/> + <enumerator name='DATA_TYPE_STRING_ARRAY' value='17'/> + <enumerator name='DATA_TYPE_HRTIME' value='18'/> + <enumerator name='DATA_TYPE_NVLIST' value='19'/> + <enumerator name='DATA_TYPE_NVLIST_ARRAY' value='20'/> + <enumerator name='DATA_TYPE_BOOLEAN_VALUE' value='21'/> + <enumerator name='DATA_TYPE_INT8' value='22'/> + <enumerator name='DATA_TYPE_UINT8' value='23'/> + <enumerator name='DATA_TYPE_BOOLEAN_ARRAY' value='24'/> + <enumerator name='DATA_TYPE_INT8_ARRAY' value='25'/> + <enumerator name='DATA_TYPE_UINT8_ARRAY' value='26'/> + <enumerator name='DATA_TYPE_DOUBLE' value='27'/> + </enum-decl> + <typedef-decl name='data_type_t' type-id='aeeae136' id='8d0687d2'/> + <class-decl name='nvpair' size-in-bits='128' is-struct='yes' visibility='default' id='1c34e459'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='nvp_size' type-id='3ff5601b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='nvp_name_sz' type-id='23bd8cb5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='48'> + <var-decl name='nvp_reserve' type-id='23bd8cb5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='nvp_value_elem' type-id='3ff5601b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='nvp_type' type-id='8d0687d2' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='nvp_name' type-id='e84913bd' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='nvpair_t' type-id='1c34e459' id='57928edf'/> + <class-decl name='drr_begin' size-in-bits='2432' is-struct='yes' visibility='default' id='09fcdc01'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_magic' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='drr_versioninfo' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='drr_creation_time' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='drr_type' type-id='230f1e16' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='224'> + <var-decl name='drr_flags' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='drr_fromguid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='drr_toname' type-id='d1617432' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='zinject_record' size-in-bits='2816' is-struct='yes' visibility='default' id='3216f820'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='zi_objset' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='zi_object' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='zi_start' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='zi_end' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='zi_guid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='zi_level' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='352'> + <var-decl name='zi_error' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='zi_type' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='zi_freq' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='480'> + <var-decl name='zi_failfast' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='zi_func' type-id='d1617432' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2560'> + <var-decl name='zi_iotype' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2592'> + <var-decl name='zi_duration' type-id='3ff5601b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2624'> + <var-decl name='zi_timer' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2688'> + <var-decl name='zi_nlanes' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2752'> + <var-decl name='zi_cmd' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2784'> + <var-decl name='zi_dvas' type-id='8f92235e' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='zinject_record_t' type-id='3216f820' id='a4301ca6'/> + <class-decl name='zfs_share' size-in-bits='256' is-struct='yes' visibility='default' id='feb6f2da'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='z_exportdata' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='z_sharedata' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='z_sharetype' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='z_sharemax' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='zfs_share_t' type-id='feb6f2da' id='ee5cec36'/> + <class-decl name='zfs_cmd' size-in-bits='109952' is-struct='yes' visibility='default' id='3522cd69'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='zc_name' type-id='d16c6df4' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32768'> + <var-decl name='zc_nvlist_src' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32832'> + <var-decl name='zc_nvlist_src_size' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32896'> + <var-decl name='zc_nvlist_dst' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32960'> + <var-decl name='zc_nvlist_dst_size' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='33024'> + <var-decl name='zc_nvlist_dst_filled' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='33056'> + <var-decl name='zc_pad2' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='33088'> + <var-decl name='zc_history' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='33152'> + <var-decl name='zc_value' type-id='163f6aa5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='98688'> + <var-decl name='zc_string' type-id='d1617432' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='100736'> + <var-decl name='zc_guid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='100800'> + <var-decl name='zc_nvlist_conf' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='100864'> + <var-decl name='zc_nvlist_conf_size' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='100928'> + <var-decl name='zc_cookie' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='100992'> + <var-decl name='zc_objset_type' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101056'> + <var-decl name='zc_perm_action' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101120'> + <var-decl name='zc_history_len' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101184'> + <var-decl name='zc_history_offset' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101248'> + <var-decl name='zc_obj' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101312'> + <var-decl name='zc_iflags' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101376'> + <var-decl name='zc_share' type-id='ee5cec36' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101632'> + <var-decl name='zc_objset_stats' type-id='b2c14f17' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='103936'> + <var-decl name='zc_begin_record' type-id='09fcdc01' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='106368'> + <var-decl name='zc_inject_record' type-id='a4301ca6' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109184'> + <var-decl name='zc_defer_destroy' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109216'> + <var-decl name='zc_flags' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109248'> + <var-decl name='zc_action_handle' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109312'> + <var-decl name='zc_cleanup_fd' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109344'> + <var-decl name='zc_simple' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109352'> + <var-decl name='zc_pad' type-id='d3490169' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109376'> + <var-decl name='zc_sendobj' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109440'> + <var-decl name='zc_fromobj' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109504'> + <var-decl name='zc_createtxg' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109568'> + <var-decl name='zc_stat' type-id='0371a9c7' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109888'> + <var-decl name='zc_zoneid' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='zfs_cmd_t' type-id='3522cd69' id='a5559cdd'/> + <class-decl name='zfs_stat' size-in-bits='320' is-struct='yes' visibility='default' id='6417f0b9'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='zs_gen' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='zs_mode' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='zs_links' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='zs_ctime' type-id='c1c22e6c' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='zfs_stat_t' type-id='6417f0b9' id='0371a9c7'/> + <typedef-decl name='int16_t' type-id='03896e23' id='23bd8cb5'/> + <typedef-decl name='__int16_t' type-id='a2185560' id='03896e23'/> + <pointer-type-def type-id='c19b74c3' size-in-bits='64' id='37e3bd22'/> + <qualified-type-def type-id='8e8d4be3' const='yes' id='693c3853'/> + <pointer-type-def type-id='693c3853' size-in-bits='64' id='22cce67b'/> + <qualified-type-def type-id='57928edf' const='yes' id='642ee20f'/> + <pointer-type-def type-id='642ee20f' size-in-bits='64' id='dace003f'/> + <pointer-type-def type-id='2bce87e3' size-in-bits='64' id='3aebb66f'/> + <pointer-type-def type-id='95e97e5e' size-in-bits='64' id='7292109c'/> + <pointer-type-def type-id='5ce45b60' size-in-bits='64' id='857bb57e'/> + <pointer-type-def type-id='57928edf' size-in-bits='64' id='3fa542f0'/> + <pointer-type-def type-id='eaa32e2f' size-in-bits='64' id='63e171df'/> + <pointer-type-def type-id='3522cd69' size-in-bits='64' id='b65f7fd1'/> + <pointer-type-def type-id='a5559cdd' size-in-bits='64' id='e4ec4540'/> + <pointer-type-def type-id='4c81de99' size-in-bits='64' id='237193c9'/> + <function-decl name='uu_avl_first' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a5c21a38'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='uu_avl_next' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a5c21a38'/> + <parameter type-id='eaa32e2f'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='uu_avl_teardown' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a5c21a38'/> + <parameter type-id='63e171df'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='zfs_standard_error' mangled-name='zfs_standard_error' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_standard_error'> + <parameter type-id='b0382bb3'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_ioctl' mangled-name='zfs_ioctl' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_ioctl'> + <parameter type-id='b0382bb3'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='b65f7fd1'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='nvlist_dup' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='857bb57e'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_exists' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='nvlist_next_nvpair' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='dace003f'/> + <return type-id='3fa542f0'/> + </function-decl> + <function-decl name='nvpair_name' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='dace003f'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='fnvpair_value_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='3fa542f0'/> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='libspl_assertf' mangled-name='libspl_assertf' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_assertf'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__errno_location' visibility='default' binding='global' size-in-bits='64'> + <return type-id='7292109c'/> + </function-decl> + <function-decl name='dcgettext' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='getenv' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strchr' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> + </function-decl> <function-decl name='zpool_get_config' mangled-name='zpool_get_config' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_config'> <parameter type-id='4c81de99' name='zhp'/> <parameter type-id='857bb57e' name='oldconfig'/> @@ -2196,16 +2781,47 @@ <parameter type-id='eaa32e2f' name='data'/> <return type-id='95e97e5e'/> </function-decl> - <function-type size-in-bits='64' id='96ee24a5'> - <parameter type-id='eaa32e2f'/> - <parameter type-id='eaa32e2f'/> + <function-decl name='zfs_strdup' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='no_memory' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> <return type-id='95e97e5e'/> - </function-type> - <function-type size-in-bits='64' id='cb9628fa'> - <parameter type-id='9200a744'/> - <parameter type-id='eaa32e2f'/> + </function-decl> + <function-decl name='zcmd_alloc_dst_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='e4ec4540'/> + <parameter type-id='b59d7dce'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zcmd_expand_dst_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='e4ec4540'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zcmd_read_dst_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='e4ec4540'/> + <parameter type-id='857bb57e'/> <return type-id='95e97e5e'/> - </function-type> + </function-decl> + <function-decl name='zcmd_free_nvlists' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e4ec4540'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='make_dataset_handle' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <return type-id='9200a744'/> + </function-decl> + <function-decl name='zpool_open_silent' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <parameter type-id='237193c9'/> + <return type-id='95e97e5e'/> + </function-decl> <function-type size-in-bits='64' id='2bce87e3'> <parameter type-id='4c81de99'/> <parameter type-id='eaa32e2f'/> @@ -2213,9 +2829,710 @@ </function-type> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/libzfs_crypto.c' language='LANG_C99'> - <typedef-decl name='uint_t' type-id='f0981eeb' id='3502e3ff'/> + <array-type-def dimensions='1' type-id='38b51b3c' size-in-bits='832' id='02b72c00'> + <subrange length='13' type-id='7359adad' id='487fded1'/> + </array-type-def> + <array-type-def dimensions='1' type-id='fb7c6451' size-in-bits='256' id='64177143'> + <subrange length='32' type-id='7359adad' id='ae5bde82'/> + </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='8' id='89feb1ec'> + <subrange length='1' type-id='7359adad' id='52f813b4'/> + </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='160' id='664ac0b7'> + <subrange length='20' type-id='7359adad' id='fdca39cf'/> + </array-type-def> + <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> + <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> + <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> + <class-decl name='__locale_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='23de8b96'/> + <array-type-def dimensions='1' type-id='80f4b756' size-in-bits='832' id='39e6f84a'> + <subrange length='13' type-id='7359adad' id='487fded1'/> + </array-type-def> + <array-type-def dimensions='1' type-id='95e97e5e' size-in-bits='896' id='47394ee0'> + <subrange length='28' type-id='7359adad' id='3db583d7'/> + </array-type-def> + <type-decl name='signed char' size-in-bits='8' id='28577a57'/> + <array-type-def dimensions='1' type-id='7359adad' size-in-bits='1024' id='d2baa450'> + <subrange length='16' type-id='7359adad' id='848d0938'/> + </array-type-def> + <type-decl name='unsigned short int' size-in-bits='16' id='8efea9e5'/> + <enum-decl name='zpool_prop_t' naming-typedef-id='5d0c23fb' id='af1ba157'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='ZPOOL_PROP_INVAL' value='-1'/> + <enumerator name='ZPOOL_PROP_NAME' value='0'/> + <enumerator name='ZPOOL_PROP_SIZE' value='1'/> + <enumerator name='ZPOOL_PROP_CAPACITY' value='2'/> + <enumerator name='ZPOOL_PROP_ALTROOT' value='3'/> + <enumerator name='ZPOOL_PROP_HEALTH' value='4'/> + <enumerator name='ZPOOL_PROP_GUID' value='5'/> + <enumerator name='ZPOOL_PROP_VERSION' value='6'/> + <enumerator name='ZPOOL_PROP_BOOTFS' value='7'/> + <enumerator name='ZPOOL_PROP_DELEGATION' value='8'/> + <enumerator name='ZPOOL_PROP_AUTOREPLACE' value='9'/> + <enumerator name='ZPOOL_PROP_CACHEFILE' value='10'/> + <enumerator name='ZPOOL_PROP_FAILUREMODE' value='11'/> + <enumerator name='ZPOOL_PROP_LISTSNAPS' value='12'/> + <enumerator name='ZPOOL_PROP_AUTOEXPAND' value='13'/> + <enumerator name='ZPOOL_PROP_DEDUPDITTO' value='14'/> + <enumerator name='ZPOOL_PROP_DEDUPRATIO' value='15'/> + <enumerator name='ZPOOL_PROP_FREE' value='16'/> + <enumerator name='ZPOOL_PROP_ALLOCATED' value='17'/> + <enumerator name='ZPOOL_PROP_READONLY' value='18'/> + <enumerator name='ZPOOL_PROP_ASHIFT' value='19'/> + <enumerator name='ZPOOL_PROP_COMMENT' value='20'/> + <enumerator name='ZPOOL_PROP_EXPANDSZ' value='21'/> + <enumerator name='ZPOOL_PROP_FREEING' value='22'/> + <enumerator name='ZPOOL_PROP_FRAGMENTATION' value='23'/> + <enumerator name='ZPOOL_PROP_LEAKED' value='24'/> + <enumerator name='ZPOOL_PROP_MAXBLOCKSIZE' value='25'/> + <enumerator name='ZPOOL_PROP_TNAME' value='26'/> + <enumerator name='ZPOOL_PROP_MAXDNODESIZE' value='27'/> + <enumerator name='ZPOOL_PROP_MULTIHOST' value='28'/> + <enumerator name='ZPOOL_PROP_CHECKPOINT' value='29'/> + <enumerator name='ZPOOL_PROP_LOAD_GUID' value='30'/> + <enumerator name='ZPOOL_PROP_AUTOTRIM' value='31'/> + <enumerator name='ZPOOL_PROP_COMPATIBILITY' value='32'/> + <enumerator name='ZPOOL_PROP_BCLONEUSED' value='33'/> + <enumerator name='ZPOOL_PROP_BCLONESAVED' value='34'/> + <enumerator name='ZPOOL_PROP_BCLONERATIO' value='35'/> + <enumerator name='ZPOOL_NUM_PROPS' value='36'/> + </enum-decl> + <typedef-decl name='zpool_prop_t' type-id='af1ba157' id='5d0c23fb'/> + <typedef-decl name='regoff_t' type-id='95e97e5e' id='54a2a2a8'/> + <class-decl name='regmatch_t' size-in-bits='64' is-struct='yes' naming-typedef-id='1b941664' visibility='default' id='4f932615'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='rm_so' type-id='54a2a2a8' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='rm_eo' type-id='54a2a2a8' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='regmatch_t' type-id='4f932615' id='1b941664'/> + <typedef-decl name='__sighandler_t' type-id='03347643' id='8cdd9566'/> + <typedef-decl name='ssize_t' type-id='41060289' id='79a0948f'/> + <class-decl name='sigaction' size-in-bits='1216' is-struct='yes' visibility='default' id='fe391c48'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='__sigaction_handler' type-id='ac5ab595' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='sa_mask' type-id='b9c97942' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1088'> + <var-decl name='sa_flags' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1152'> + <var-decl name='sa_restorer' type-id='953b12f8' visibility='default'/> + </data-member> + </class-decl> + <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' id='ac5ab595'> + <data-member access='public'> + <var-decl name='sa_handler' type-id='8cdd9566' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='sa_sigaction' type-id='6e756877' visibility='default'/> + </data-member> + </union-decl> + <class-decl name='termios' size-in-bits='480' is-struct='yes' visibility='default' id='ad55d2bc'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='c_iflag' type-id='241ce6f8' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='c_oflag' type-id='241ce6f8' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='c_cflag' type-id='241ce6f8' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='c_lflag' type-id='241ce6f8' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='c_line' type-id='fb7c6451' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='136'> + <var-decl name='c_cc' type-id='64177143' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='416'> + <var-decl name='c_ispeed' type-id='6a8e8a14' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='c_ospeed' type-id='6a8e8a14' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='cc_t' type-id='002ac4a6' id='fb7c6451'/> + <typedef-decl name='speed_t' type-id='f0981eeb' id='6a8e8a14'/> + <typedef-decl name='tcflag_t' type-id='f0981eeb' id='241ce6f8'/> + <typedef-decl name='__uid_t' type-id='f0981eeb' id='cc5fcceb'/> + <typedef-decl name='__off_t' type-id='bd54fe1a' id='79989e9c'/> + <typedef-decl name='__off64_t' type-id='bd54fe1a' id='724e4de6'/> + <typedef-decl name='__pid_t' type-id='95e97e5e' id='3629bad8'/> + <typedef-decl name='__clock_t' type-id='bd54fe1a' id='4d66c6d7'/> + <typedef-decl name='__ssize_t' type-id='bd54fe1a' id='41060289'/> + <typedef-decl name='FILE' type-id='ec1ed955' id='aa12d1ba'/> + <class-decl name='__locale_struct' size-in-bits='1856' is-struct='yes' visibility='default' id='90cc1ce3'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='__locales' type-id='02b72c00' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='832'> + <var-decl name='__ctype_b' type-id='31347b7a' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='896'> + <var-decl name='__ctype_tolower' type-id='6d60f45d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='960'> + <var-decl name='__ctype_toupper' type-id='6d60f45d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1024'> + <var-decl name='__names' type-id='39e6f84a' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='__locale_t' type-id='f01e1813' id='b7ac9b5f'/> + <class-decl name='__sigset_t' size-in-bits='1024' is-struct='yes' naming-typedef-id='b9c97942' visibility='default' id='2616147f'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='__val' type-id='d2baa450' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='__sigset_t' type-id='2616147f' id='b9c97942'/> + <union-decl name='sigval' size-in-bits='64' visibility='default' id='a094b870'> + <data-member access='public'> + <var-decl name='sival_int' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='sival_ptr' type-id='eaa32e2f' visibility='default'/> + </data-member> + </union-decl> + <typedef-decl name='__sigval_t' type-id='a094b870' id='eabacd01'/> + <typedef-decl name='locale_t' type-id='b7ac9b5f' id='973a4f8d'/> + <class-decl name='siginfo_t' size-in-bits='1024' is-struct='yes' naming-typedef-id='cb681f62' visibility='default' id='d8149419'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='si_signo' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='si_errno' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='si_code' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='__pad0' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='_sifields' type-id='ac5ab596' visibility='default'/> + </data-member> + </class-decl> + <union-decl name='__anonymous_union__1' size-in-bits='896' is-anonymous='yes' visibility='default' id='ac5ab596'> + <data-member access='public'> + <var-decl name='_pad' type-id='47394ee0' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='_kill' type-id='e7f43f73' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='_timer' type-id='e7f43f74' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='_rt' type-id='e7f43f75' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='_sigchld' type-id='e7f43f76' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='_sigfault' type-id='e7f43f77' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='_sigpoll' type-id='e7f43f78' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='_sigsys' type-id='e7f43f79' visibility='default'/> + </data-member> + </union-decl> + <class-decl name='__anonymous_struct__1' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f73'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='si_pid' type-id='3629bad8' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='si_uid' type-id='cc5fcceb' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='__anonymous_struct__2' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f74'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='si_tid' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='si_overrun' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='si_sigval' type-id='eabacd01' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='__anonymous_struct__3' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f75'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='si_pid' type-id='3629bad8' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='si_uid' type-id='cc5fcceb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='si_sigval' type-id='eabacd01' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='__anonymous_struct__4' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f76'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='si_pid' type-id='3629bad8' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='si_uid' type-id='cc5fcceb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='si_status' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='si_utime' type-id='4d66c6d7' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='si_stime' type-id='4d66c6d7' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='__anonymous_struct__5' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f77'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='si_addr' type-id='eaa32e2f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='si_addr_lsb' type-id='a2185560' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='_bounds' type-id='ac5ab597' visibility='default'/> + </data-member> + </class-decl> + <union-decl name='__anonymous_union__2' size-in-bits='128' is-anonymous='yes' visibility='default' id='ac5ab597'> + <data-member access='public'> + <var-decl name='_addr_bnd' type-id='e7f43f7a' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='_pkey' type-id='62f1140c' visibility='default'/> + </data-member> + </union-decl> + <class-decl name='__anonymous_struct__6' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f7a'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='_lower' type-id='eaa32e2f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='_upper' type-id='eaa32e2f' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='__anonymous_struct__7' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f78'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='si_band' type-id='bd54fe1a' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='si_fd' type-id='95e97e5e' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='__anonymous_struct__8' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f79'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='_call_addr' type-id='eaa32e2f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='_syscall' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='_arch' type-id='f0981eeb' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='siginfo_t' type-id='d8149419' id='cb681f62'/> + <typedef-decl name='sigset_t' type-id='b9c97942' id='daf33c64'/> + <typedef-decl name='_IO_lock_t' type-id='48b5725f' id='bb4788fa'/> + <class-decl name='_IO_FILE' size-in-bits='1728' is-struct='yes' visibility='default' id='ec1ed955'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='_flags' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='_IO_read_ptr' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='_IO_read_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='_IO_read_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='_IO_write_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='_IO_write_ptr' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='_IO_write_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='_IO_buf_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='_IO_buf_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='_IO_save_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='640'> + <var-decl name='_IO_backup_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='704'> + <var-decl name='_IO_save_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='768'> + <var-decl name='_markers' type-id='e4c6fa61' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='832'> + <var-decl name='_chain' type-id='dca988a5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='896'> + <var-decl name='_fileno' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='928'> + <var-decl name='_flags2' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='960'> + <var-decl name='_old_offset' type-id='79989e9c' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1024'> + <var-decl name='_cur_column' type-id='8efea9e5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1040'> + <var-decl name='_vtable_offset' type-id='28577a57' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1048'> + <var-decl name='_shortbuf' type-id='89feb1ec' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1088'> + <var-decl name='_lock' type-id='cecf4ea7' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1152'> + <var-decl name='_offset' type-id='724e4de6' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1216'> + <var-decl name='_codecvt' type-id='570f8c59' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1280'> + <var-decl name='_wide_data' type-id='c65a1f29' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1344'> + <var-decl name='_freeres_list' type-id='dca988a5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1408'> + <var-decl name='_freeres_buf' type-id='eaa32e2f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1472'> + <var-decl name='__pad5' type-id='b59d7dce' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1536'> + <var-decl name='_mode' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1568'> + <var-decl name='_unused2' type-id='664ac0b7' visibility='default'/> + </data-member> + </class-decl> + <pointer-type-def type-id='aa12d1ba' size-in-bits='64' id='822cd80b'/> + <qualified-type-def type-id='822cd80b' restrict='yes' id='e75a27e9'/> + <pointer-type-def type-id='ec1ed955' size-in-bits='64' id='dca988a5'/> + <pointer-type-def type-id='a4036571' size-in-bits='64' id='570f8c59'/> + <pointer-type-def type-id='bb4788fa' size-in-bits='64' id='cecf4ea7'/> + <pointer-type-def type-id='010ae0b9' size-in-bits='64' id='e4c6fa61'/> + <pointer-type-def type-id='79bd3751' size-in-bits='64' id='c65a1f29'/> + <pointer-type-def type-id='23de8b96' size-in-bits='64' id='38b51b3c'/> + <pointer-type-def type-id='90cc1ce3' size-in-bits='64' id='f01e1813'/> + <qualified-type-def type-id='9b23c9ad' restrict='yes' id='8c85230f'/> + <qualified-type-def type-id='80f4b756' restrict='yes' id='9d26089a'/> + <pointer-type-def type-id='80f4b756' size-in-bits='64' id='7d3cd834'/> + <qualified-type-def type-id='95e97e5e' const='yes' id='2448a865'/> + <pointer-type-def type-id='2448a865' size-in-bits='64' id='6d60f45d'/> + <qualified-type-def type-id='aca3bac8' const='yes' id='2498fd78'/> + <pointer-type-def type-id='2498fd78' size-in-bits='64' id='eed6c816'/> + <qualified-type-def type-id='eed6c816' restrict='yes' id='a431a9da'/> + <qualified-type-def type-id='fe391c48' const='yes' id='14a93b33'/> + <pointer-type-def type-id='14a93b33' size-in-bits='64' id='9f68085b'/> + <qualified-type-def type-id='9f68085b' restrict='yes' id='e2a5e6f9'/> + <qualified-type-def type-id='ad55d2bc' const='yes' id='a46bf13f'/> + <pointer-type-def type-id='a46bf13f' size-in-bits='64' id='eaec840f'/> + <qualified-type-def type-id='002ac4a6' const='yes' id='ea86de29'/> + <pointer-type-def type-id='ea86de29' size-in-bits='64' id='354f7eb9'/> + <qualified-type-def type-id='8efea9e5' const='yes' id='3beb2af4'/> + <pointer-type-def type-id='3beb2af4' size-in-bits='64' id='31347b7a'/> + <pointer-type-def type-id='31347b7a' size-in-bits='64' id='c59e1ef0'/> + <pointer-type-def type-id='1b941664' size-in-bits='64' id='7e2979d5'/> + <qualified-type-def type-id='7e2979d5' restrict='yes' id='fc212857'/> + <pointer-type-def type-id='fe391c48' size-in-bits='64' id='568dd84e'/> + <qualified-type-def type-id='568dd84e' restrict='yes' id='3d8ee6f2'/> + <pointer-type-def type-id='cb681f62' size-in-bits='64' id='185869c1'/> + <pointer-type-def type-id='daf33c64' size-in-bits='64' id='9e80f729'/> + <pointer-type-def type-id='b59d7dce' size-in-bits='64' id='78c01427'/> + <qualified-type-def type-id='78c01427' restrict='yes' id='d19b2c25'/> + <pointer-type-def type-id='ad55d2bc' size-in-bits='64' id='665a4eda'/> + <pointer-type-def type-id='9c313c2d' size-in-bits='64' id='5d6479ae'/> <pointer-type-def type-id='ae3e8ca6' size-in-bits='64' id='d8774064'/> <pointer-type-def type-id='3502e3ff' size-in-bits='64' id='4dd26a40'/> + <pointer-type-def type-id='ee076206' size-in-bits='64' id='953b12f8'/> + <pointer-type-def type-id='f712e2b7' size-in-bits='64' id='03347643'/> + <pointer-type-def type-id='ef70d893' size-in-bits='64' id='6e756877'/> + <qualified-type-def type-id='eaa32e2f' restrict='yes' id='1b7446cd'/> + <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> + <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> + <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> + <class-decl name='__locale_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='23de8b96'/> + <function-decl name='zpool_get_prop_int' mangled-name='zpool_get_prop_int' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_prop_int'> + <parameter type-id='4c81de99'/> + <parameter type-id='5d0c23fb'/> + <parameter type-id='debc6aa3'/> + <return type-id='9c313c2d'/> + </function-decl> + <function-decl name='zfs_handle_dup' mangled-name='zfs_handle_dup' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_handle_dup'> + <parameter type-id='9200a744'/> + <return type-id='9200a744'/> + </function-decl> + <function-decl name='zfs_valid_proplist' mangled-name='zfs_valid_proplist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_valid_proplist'> + <parameter type-id='b0382bb3'/> + <parameter type-id='2e45de5d'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='9200a744'/> + <parameter type-id='4c81de99'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='80f4b756'/> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='zfs_prop_to_name' mangled-name='zfs_prop_to_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_to_name'> + <parameter type-id='58603c44'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='zfs_iter_filesystems_v2' mangled-name='zfs_iter_filesystems_v2' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_filesystems_v2'> + <parameter type-id='9200a744'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='d8e49ab9'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_parent_name' mangled-name='zfs_parent_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_parent_name'> + <parameter type-id='9200a744'/> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_load_key' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='ae3e8ca6'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_unload_key' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_change_key' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='ae3e8ca6'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_name_to_prop' mangled-name='zfs_name_to_prop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_name_to_prop'> + <parameter type-id='80f4b756'/> + <return type-id='58603c44'/> + </function-decl> + <function-decl name='nvlist_add_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9c313c2d'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <parameter type-id='5d6479ae'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <parameter type-id='7d3cd834'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fnvlist_alloc' visibility='default' binding='global' size-in-bits='64'> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='__ctype_b_loc' visibility='default' binding='global' size-in-bits='64'> + <return type-id='c59e1ef0'/> + </function-decl> + <function-decl name='dlopen' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='dlsym' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='1b7446cd'/> + <parameter type-id='9d26089a'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='dlerror' visibility='default' binding='global' size-in-bits='64'> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='uselocale' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='973a4f8d'/> + <return type-id='973a4f8d'/> + </function-decl> + <function-decl name='PKCS5_PBKDF2_HMAC_SHA1' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='354f7eb9'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='cf536864'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='regexec' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a431a9da'/> + <parameter type-id='9d26089a'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='fc212857'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='kill' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='3629bad8'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='sigemptyset' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9e80f729'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='sigaction' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='e2a5e6f9'/> + <parameter type-id='3d8ee6f2'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fclose' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fflush' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fdopen' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <return type-id='822cd80b'/> + </function-decl> + <function-decl name='fputc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='822cd80b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__getdelim' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='8c85230f'/> + <parameter type-id='d19b2c25'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='e75a27e9'/> + <return type-id='41060289'/> + </function-decl> + <function-decl name='rewind' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='ferror' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fileno' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='malloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='calloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='strdup' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strerror_l' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='973a4f8d'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='tcgetattr' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='665a4eda'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='tcsetattr' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='eaec840f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='close' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='getpid' visibility='default' binding='global' size-in-bits='64'> + <return type-id='3629bad8'/> + </function-decl> + <function-decl name='isatty' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='unlink' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__open_too_many_args' visibility='default' binding='global' size-in-bits='64'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__open_missing_mode' visibility='default' binding='global' size-in-bits='64'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__printf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__asprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='8c85230f'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__fread_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='1b7446cd'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='e75a27e9'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='__read_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='79a0948f'/> + </function-decl> <function-decl name='zfs_crypto_get_encryption_root' mangled-name='zfs_crypto_get_encryption_root' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_crypto_get_encryption_root'> <parameter type-id='9200a744' name='zhp'/> <parameter type-id='37e3bd22' name='is_encroot'/> @@ -2260,8 +3577,28 @@ <parameter type-id='c19b74c3' name='inheritkey'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='zfs_error_aux' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='48b5725f'/> + </function-decl> + <function-type size-in-bits='64' id='f712e2b7'> + <parameter type-id='95e97e5e'/> + <return type-id='48b5725f'/> + </function-type> + <function-type size-in-bits='64' id='ef70d893'> + <parameter type-id='95e97e5e'/> + <parameter type-id='185869c1'/> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-type> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/libzfs_dataset.c' language='LANG_C99'> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='32' id='8e0573fd'> + <subrange length='4' type-id='7359adad' id='16fe7105'/> + </array-type-def> + <class-decl name='prop_changelist' is-struct='yes' visibility='default' is-declaration-only='yes' id='d86edc51'/> <class-decl name='zprop_list' size-in-bits='448' is-struct='yes' visibility='default' id='bd9b4291'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='pl_prop' type-id='95e97e5e' visibility='default'/> @@ -2288,119 +3625,23 @@ <typedef-decl name='zprop_list_t' type-id='bd9b4291' id='bdb8ac4f'/> <class-decl name='renameflags' size-in-bits='32' is-struct='yes' visibility='default' id='7aee5792'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='recursive' type-id='95e97e5e' visibility='default'/> + <var-decl name='recursive' type-id='f0981eeb' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='1'> - <var-decl name='nounmount' type-id='95e97e5e' visibility='default'/> + <var-decl name='nounmount' type-id='f0981eeb' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='2'> - <var-decl name='forceunmount' type-id='95e97e5e' visibility='default'/> + <var-decl name='forceunmount' type-id='f0981eeb' visibility='default'/> </data-member> </class-decl> <typedef-decl name='renameflags_t' type-id='7aee5792' id='067170c2'/> <typedef-decl name='zfs_userspace_cb_t' type-id='ca64ff60' id='16c5f410'/> - <enum-decl name='zfs_prop_t' naming-typedef-id='58603c44' id='4b000d60'> + <enum-decl name='lzc_dataset_type' id='bc9887f1'> <underlying-type type-id='9cac1fee'/> - <enumerator name='ZPROP_CONT' value='-2'/> - <enumerator name='ZPROP_INVAL' value='-1'/> - <enumerator name='ZFS_PROP_TYPE' value='0'/> - <enumerator name='ZFS_PROP_CREATION' value='1'/> - <enumerator name='ZFS_PROP_USED' value='2'/> - <enumerator name='ZFS_PROP_AVAILABLE' value='3'/> - <enumerator name='ZFS_PROP_REFERENCED' value='4'/> - <enumerator name='ZFS_PROP_COMPRESSRATIO' value='5'/> - <enumerator name='ZFS_PROP_MOUNTED' value='6'/> - <enumerator name='ZFS_PROP_ORIGIN' value='7'/> - <enumerator name='ZFS_PROP_QUOTA' value='8'/> - <enumerator name='ZFS_PROP_RESERVATION' value='9'/> - <enumerator name='ZFS_PROP_VOLSIZE' value='10'/> - <enumerator name='ZFS_PROP_VOLBLOCKSIZE' value='11'/> - <enumerator name='ZFS_PROP_RECORDSIZE' value='12'/> - <enumerator name='ZFS_PROP_MOUNTPOINT' value='13'/> - <enumerator name='ZFS_PROP_SHARENFS' value='14'/> - <enumerator name='ZFS_PROP_CHECKSUM' value='15'/> - <enumerator name='ZFS_PROP_COMPRESSION' value='16'/> - <enumerator name='ZFS_PROP_ATIME' value='17'/> - <enumerator name='ZFS_PROP_DEVICES' value='18'/> - <enumerator name='ZFS_PROP_EXEC' value='19'/> - <enumerator name='ZFS_PROP_SETUID' value='20'/> - <enumerator name='ZFS_PROP_READONLY' value='21'/> - <enumerator name='ZFS_PROP_ZONED' value='22'/> - <enumerator name='ZFS_PROP_SNAPDIR' value='23'/> - <enumerator name='ZFS_PROP_ACLMODE' value='24'/> - <enumerator name='ZFS_PROP_ACLINHERIT' value='25'/> - <enumerator name='ZFS_PROP_CREATETXG' value='26'/> - <enumerator name='ZFS_PROP_NAME' value='27'/> - <enumerator name='ZFS_PROP_CANMOUNT' value='28'/> - <enumerator name='ZFS_PROP_ISCSIOPTIONS' value='29'/> - <enumerator name='ZFS_PROP_XATTR' value='30'/> - <enumerator name='ZFS_PROP_NUMCLONES' value='31'/> - <enumerator name='ZFS_PROP_COPIES' value='32'/> - <enumerator name='ZFS_PROP_VERSION' value='33'/> - <enumerator name='ZFS_PROP_UTF8ONLY' value='34'/> - <enumerator name='ZFS_PROP_NORMALIZE' value='35'/> - <enumerator name='ZFS_PROP_CASE' value='36'/> - <enumerator name='ZFS_PROP_VSCAN' value='37'/> - <enumerator name='ZFS_PROP_NBMAND' value='38'/> - <enumerator name='ZFS_PROP_SHARESMB' value='39'/> - <enumerator name='ZFS_PROP_REFQUOTA' value='40'/> - <enumerator name='ZFS_PROP_REFRESERVATION' value='41'/> - <enumerator name='ZFS_PROP_GUID' value='42'/> - <enumerator name='ZFS_PROP_PRIMARYCACHE' value='43'/> - <enumerator name='ZFS_PROP_SECONDARYCACHE' value='44'/> - <enumerator name='ZFS_PROP_USEDSNAP' value='45'/> - <enumerator name='ZFS_PROP_USEDDS' value='46'/> - <enumerator name='ZFS_PROP_USEDCHILD' value='47'/> - <enumerator name='ZFS_PROP_USEDREFRESERV' value='48'/> - <enumerator name='ZFS_PROP_USERACCOUNTING' value='49'/> - <enumerator name='ZFS_PROP_STMF_SHAREINFO' value='50'/> - <enumerator name='ZFS_PROP_DEFER_DESTROY' value='51'/> - <enumerator name='ZFS_PROP_USERREFS' value='52'/> - <enumerator name='ZFS_PROP_LOGBIAS' value='53'/> - <enumerator name='ZFS_PROP_UNIQUE' value='54'/> - <enumerator name='ZFS_PROP_OBJSETID' value='55'/> - <enumerator name='ZFS_PROP_DEDUP' value='56'/> - <enumerator name='ZFS_PROP_MLSLABEL' value='57'/> - <enumerator name='ZFS_PROP_SYNC' value='58'/> - <enumerator name='ZFS_PROP_DNODESIZE' value='59'/> - <enumerator name='ZFS_PROP_REFRATIO' value='60'/> - <enumerator name='ZFS_PROP_WRITTEN' value='61'/> - <enumerator name='ZFS_PROP_CLONES' value='62'/> - <enumerator name='ZFS_PROP_LOGICALUSED' value='63'/> - <enumerator name='ZFS_PROP_LOGICALREFERENCED' value='64'/> - <enumerator name='ZFS_PROP_INCONSISTENT' value='65'/> - <enumerator name='ZFS_PROP_VOLMODE' value='66'/> - <enumerator name='ZFS_PROP_FILESYSTEM_LIMIT' value='67'/> - <enumerator name='ZFS_PROP_SNAPSHOT_LIMIT' value='68'/> - <enumerator name='ZFS_PROP_FILESYSTEM_COUNT' value='69'/> - <enumerator name='ZFS_PROP_SNAPSHOT_COUNT' value='70'/> - <enumerator name='ZFS_PROP_SNAPDEV' value='71'/> - <enumerator name='ZFS_PROP_ACLTYPE' value='72'/> - <enumerator name='ZFS_PROP_SELINUX_CONTEXT' value='73'/> - <enumerator name='ZFS_PROP_SELINUX_FSCONTEXT' value='74'/> - <enumerator name='ZFS_PROP_SELINUX_DEFCONTEXT' value='75'/> - <enumerator name='ZFS_PROP_SELINUX_ROOTCONTEXT' value='76'/> - <enumerator name='ZFS_PROP_RELATIME' value='77'/> - <enumerator name='ZFS_PROP_REDUNDANT_METADATA' value='78'/> - <enumerator name='ZFS_PROP_OVERLAY' value='79'/> - <enumerator name='ZFS_PROP_PREV_SNAP' value='80'/> - <enumerator name='ZFS_PROP_RECEIVE_RESUME_TOKEN' value='81'/> - <enumerator name='ZFS_PROP_ENCRYPTION' value='82'/> - <enumerator name='ZFS_PROP_KEYLOCATION' value='83'/> - <enumerator name='ZFS_PROP_KEYFORMAT' value='84'/> - <enumerator name='ZFS_PROP_PBKDF2_SALT' value='85'/> - <enumerator name='ZFS_PROP_PBKDF2_ITERS' value='86'/> - <enumerator name='ZFS_PROP_ENCRYPTION_ROOT' value='87'/> - <enumerator name='ZFS_PROP_KEY_GUID' value='88'/> - <enumerator name='ZFS_PROP_KEYSTATUS' value='89'/> - <enumerator name='ZFS_PROP_REMAPTXG' value='90'/> - <enumerator name='ZFS_PROP_SPECIAL_SMALL_BLOCKS' value='91'/> - <enumerator name='ZFS_PROP_IVSET_GUID' value='92'/> - <enumerator name='ZFS_PROP_REDACTED' value='93'/> - <enumerator name='ZFS_PROP_REDACT_SNAPS' value='94'/> - <enumerator name='ZFS_NUM_PROPS' value='95'/> + <enumerator name='LZC_DATSET_TYPE_ZFS' value='2'/> + <enumerator name='LZC_DATSET_TYPE_ZVOL' value='3'/> </enum-decl> - <typedef-decl name='zfs_prop_t' type-id='4b000d60' id='58603c44'/> + <typedef-decl name='avl_index_t' type-id='e475ab95' id='fba6cb51'/> <enum-decl name='zfs_userquota_prop_t' naming-typedef-id='279fde6a' id='5258d2f6'> <underlying-type type-id='9cac1fee'/> <enumerator name='ZFS_PROP_USERUSED' value='0'/> @@ -2418,22 +3659,36 @@ <enumerator name='ZFS_NUM_USERQUOTA_PROPS' value='12'/> </enum-decl> <typedef-decl name='zfs_userquota_prop_t' type-id='5258d2f6' id='279fde6a'/> - <enum-decl name='zprop_source_t' naming-typedef-id='a2256d42' id='5903f80e'> - <underlying-type type-id='9cac1fee'/> - <enumerator name='ZPROP_SRC_NONE' value='1'/> - <enumerator name='ZPROP_SRC_DEFAULT' value='2'/> - <enumerator name='ZPROP_SRC_TEMPORARY' value='4'/> - <enumerator name='ZPROP_SRC_LOCAL' value='8'/> - <enumerator name='ZPROP_SRC_INHERITED' value='16'/> - <enumerator name='ZPROP_SRC_RECEIVED' value='32'/> - </enum-decl> - <typedef-decl name='zprop_source_t' type-id='5903f80e' id='a2256d42'/> <enum-decl name='zfs_wait_activity_t' naming-typedef-id='3024501a' id='527d5dc6'> <underlying-type type-id='9cac1fee'/> <enumerator name='ZFS_WAIT_DELETEQ' value='0'/> <enumerator name='ZFS_WAIT_NUM_ACTIVITIES' value='1'/> </enum-decl> <typedef-decl name='zfs_wait_activity_t' type-id='527d5dc6' id='3024501a'/> + <enum-decl name='namecheck_err_t' naming-typedef-id='8e0af06e' id='f43bbcda'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='NAME_ERR_LEADING_SLASH' value='0'/> + <enumerator name='NAME_ERR_EMPTY_COMPONENT' value='1'/> + <enumerator name='NAME_ERR_TRAILING_SLASH' value='2'/> + <enumerator name='NAME_ERR_INVALCHAR' value='3'/> + <enumerator name='NAME_ERR_MULTIPLE_DELIMITERS' value='4'/> + <enumerator name='NAME_ERR_NOLETTER' value='5'/> + <enumerator name='NAME_ERR_RESERVED' value='6'/> + <enumerator name='NAME_ERR_DISKLIKE' value='7'/> + <enumerator name='NAME_ERR_TOOLONG' value='8'/> + <enumerator name='NAME_ERR_SELF_REF' value='9'/> + <enumerator name='NAME_ERR_PARENT_REF' value='10'/> + <enumerator name='NAME_ERR_NO_AT' value='11'/> + <enumerator name='NAME_ERR_NO_POUND' value='12'/> + </enum-decl> + <typedef-decl name='namecheck_err_t' type-id='f43bbcda' id='8e0af06e'/> + <enum-decl name='zprop_type_t' naming-typedef-id='31429eff' id='87676253'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='PROP_TYPE_NUMBER' value='0'/> + <enumerator name='PROP_TYPE_STRING' value='1'/> + <enumerator name='PROP_TYPE_INDEX' value='2'/> + </enum-decl> + <typedef-decl name='zprop_type_t' type-id='87676253' id='31429eff'/> <class-decl name='mnttab' size-in-bits='256' is-struct='yes' visibility='default' id='1b055409'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='mnt_special' type-id='26a90f95' visibility='default'/> @@ -2448,19 +3703,672 @@ <var-decl name='mnt_mntopts' type-id='26a90f95' visibility='default'/> </data-member> </class-decl> - <typedef-decl name='__uid_t' type-id='f0981eeb' id='cc5fcceb'/> + <class-decl name='group' size-in-bits='256' is-struct='yes' visibility='default' id='01a1b934'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='gr_name' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='gr_passwd' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='gr_gid' type-id='d94ec6d9' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='gr_mem' type-id='9b23c9ad' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='mntent' size-in-bits='320' is-struct='yes' visibility='default' id='56fe4a37'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='mnt_fsname' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='mnt_dir' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='mnt_type' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='mnt_opts' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='mnt_freq' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='288'> + <var-decl name='mnt_passno' type-id='95e97e5e' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='passwd' size-in-bits='384' is-struct='yes' visibility='default' id='a63d15a3'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='pw_name' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='pw_passwd' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='pw_uid' type-id='cc5fcceb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='160'> + <var-decl name='pw_gid' type-id='d94ec6d9' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='pw_gecos' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='pw_dir' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='pw_shell' type-id='26a90f95' visibility='default'/> + </data-member> + </class-decl> + <union-decl name='pthread_mutexattr_t' size-in-bits='32' naming-typedef-id='8afd6070' visibility='default' id='7300eb00'> + <data-member access='public'> + <var-decl name='__size' type-id='8e0573fd' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='__align' type-id='95e97e5e' visibility='default'/> + </data-member> + </union-decl> + <typedef-decl name='pthread_mutexattr_t' type-id='7300eb00' id='8afd6070'/> + <typedef-decl name='int64_t' type-id='0c9942d2' id='9da381c4'/> + <typedef-decl name='__int64_t' type-id='bd54fe1a' id='0c9942d2'/> + <typedef-decl name='__gid_t' type-id='f0981eeb' id='d94ec6d9'/> + <typedef-decl name='__time_t' type-id='bd54fe1a' id='65eda9c0'/> + <class-decl name='tm' size-in-bits='448' is-struct='yes' visibility='default' id='dddf6ca2'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='tm_sec' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='tm_min' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='tm_hour' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='tm_mday' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='tm_mon' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='160'> + <var-decl name='tm_year' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='tm_wday' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='224'> + <var-decl name='tm_yday' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='tm_isdst' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='tm_gmtoff' type-id='bd54fe1a' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='tm_zone' type-id='80f4b756' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='time_t' type-id='65eda9c0' id='c9d12d66'/> <typedef-decl name='uid_t' type-id='cc5fcceb' id='354978ed'/> - <pointer-type-def type-id='26a90f95' size-in-bits='64' id='9b23c9ad'/> - <qualified-type-def type-id='775509eb' const='yes' id='5eadf2db'/> - <pointer-type-def type-id='5eadf2db' size-in-bits='64' id='fcd57163'/> + <typedef-decl name='prop_changelist_t' type-id='d86edc51' id='eae6431d'/> + <pointer-type-def type-id='fba6cb51' size-in-bits='64' id='32adbf30'/> + <pointer-type-def type-id='f20fbd51' size-in-bits='64' id='a3681dea'/> + <qualified-type-def type-id='26a90f95' restrict='yes' id='266fe297'/> + <qualified-type-def type-id='56fe4a37' const='yes' id='a75125ce'/> + <pointer-type-def type-id='a75125ce' size-in-bits='64' id='48bea5ec'/> + <qualified-type-def type-id='8afd6070' const='yes' id='1d853360'/> + <pointer-type-def type-id='1d853360' size-in-bits='64' id='c2afbd7e'/> + <qualified-type-def type-id='c9d12d66' const='yes' id='588b3216'/> + <pointer-type-def type-id='588b3216' size-in-bits='64' id='9f201474'/> + <qualified-type-def type-id='9f201474' restrict='yes' id='d6e2847c'/> + <qualified-type-def type-id='dddf6ca2' const='yes' id='e824a34f'/> + <pointer-type-def type-id='e824a34f' size-in-bits='64' id='d6ad37ff'/> + <qualified-type-def type-id='d6ad37ff' restrict='yes' id='f8c6051d'/> + <qualified-type-def type-id='9c313c2d' const='yes' id='c3b7ba7d'/> + <pointer-type-def type-id='c3b7ba7d' size-in-bits='64' id='713a56f5'/> + <pointer-type-def type-id='01a1b934' size-in-bits='64' id='566b3f52'/> + <qualified-type-def type-id='566b3f52' restrict='yes' id='c878edd6'/> + <pointer-type-def type-id='566b3f52' size-in-bits='64' id='82d4e9e8'/> + <qualified-type-def type-id='82d4e9e8' restrict='yes' id='aa19c230'/> <pointer-type-def type-id='7e291ce6' size-in-bits='64' id='ca64ff60'/> - <pointer-type-def type-id='95e97e5e' size-in-bits='64' id='7292109c'/> + <pointer-type-def type-id='9da381c4' size-in-bits='64' id='cb785ebf'/> <pointer-type-def type-id='1b055409' size-in-bits='64' id='9d424d31'/> - <pointer-type-def type-id='9c313c2d' size-in-bits='64' id='5d6479ae'/> + <pointer-type-def type-id='8e0af06e' size-in-bits='64' id='053457bd'/> + <pointer-type-def type-id='857bb57e' size-in-bits='64' id='75be733c'/> + <pointer-type-def type-id='a63d15a3' size-in-bits='64' id='a195f4a3'/> + <qualified-type-def type-id='a195f4a3' restrict='yes' id='33518961'/> + <pointer-type-def type-id='a195f4a3' size-in-bits='64' id='e80ff3ab'/> + <qualified-type-def type-id='e80ff3ab' restrict='yes' id='8f2c7109'/> + <pointer-type-def type-id='eae6431d' size-in-bits='64' id='0d41d328'/> + <pointer-type-def type-id='7a6844eb' size-in-bits='64' id='18c91f9e'/> + <pointer-type-def type-id='dddf6ca2' size-in-bits='64' id='d915a820'/> + <qualified-type-def type-id='d915a820' restrict='yes' id='f099ad08'/> + <pointer-type-def type-id='5d6479ae' size-in-bits='64' id='892b4acc'/> <pointer-type-def type-id='bd9b4291' size-in-bits='64' id='9f1a1109'/> <pointer-type-def type-id='bdb8ac4f' size-in-bits='64' id='3a9b2288'/> <pointer-type-def type-id='3a9b2288' size-in-bits='64' id='e4378506'/> - <pointer-type-def type-id='a2256d42' size-in-bits='64' id='debc6aa3'/> + <class-decl name='prop_changelist' is-struct='yes' visibility='default' is-declaration-only='yes' id='d86edc51'/> + <function-decl name='zpool_open' mangled-name='zpool_open' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_open'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <return type-id='4c81de99'/> + </function-decl> + <function-decl name='zpool_open_canfail' mangled-name='zpool_open_canfail' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_open_canfail'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <return type-id='4c81de99'/> + </function-decl> + <function-decl name='zpool_close' mangled-name='zpool_close' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_close'> + <parameter type-id='4c81de99'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zpool_get_name' mangled-name='zpool_get_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_name'> + <parameter type-id='4c81de99'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='zpool_get_prop' mangled-name='zpool_get_prop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_prop'> + <parameter type-id='4c81de99'/> + <parameter type-id='5d0c23fb'/> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='debc6aa3'/> + <parameter type-id='c19b74c3'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_prop_default_string' mangled-name='zfs_prop_default_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_default_string'> + <parameter type-id='58603c44'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='zfs_prop_default_numeric' mangled-name='zfs_prop_default_numeric' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_default_numeric'> + <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'/> + <parameter type-id='d8e49ab9'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='9c313c2d'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_iter_bookmarks_v2' mangled-name='zfs_iter_bookmarks_v2' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_bookmarks_v2'> + <parameter type-id='9200a744'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='d8e49ab9'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_destroy_snaps_nvl_os' mangled-name='zfs_destroy_snaps_nvl_os' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_destroy_snaps_nvl_os'> + <parameter type-id='b0382bb3'/> + <parameter type-id='5ce45b60'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_nicestrtonum' mangled-name='zfs_nicestrtonum' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_nicestrtonum'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <parameter type-id='5d6479ae'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_snapshot' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_create' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='bc9887f1'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='ae3e8ca6'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_clone' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='5ce45b60'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_promote' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='26a90f95'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_destroy_snaps' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_get_bookmarks' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_destroy_bookmarks' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_hold' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_release' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_get_holds' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_exists' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='lzc_rollback_to' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_destroy' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_channel_program_nosync' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_wait_fs' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='3024501a'/> + <parameter type-id='37e3bd22'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_nicebytes' mangled-name='zfs_nicebytes' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_nicebytes'> + <parameter type-id='9c313c2d'/> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zfs_nicenum' mangled-name='zfs_nicenum' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_nicenum'> + <parameter type-id='9c313c2d'/> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_create' mangled-name='avl_create' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_create'> + <parameter type-id='a3681dea'/> + <parameter type-id='585e1de9'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_find' mangled-name='avl_find' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_find'> + <parameter type-id='a3681dea'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='32adbf30'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='avl_add' mangled-name='avl_add' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_add'> + <parameter type-id='a3681dea'/> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_remove' mangled-name='avl_remove' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_remove'> + <parameter type-id='a3681dea'/> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_numnodes' mangled-name='avl_numnodes' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_numnodes'> + <parameter type-id='a3681dea'/> + <return type-id='ee1f298e'/> + </function-decl> + <function-decl name='avl_destroy_nodes' mangled-name='avl_destroy_nodes' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_destroy_nodes'> + <parameter type-id='a3681dea'/> + <parameter type-id='63e171df'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='avl_destroy' mangled-name='avl_destroy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_destroy'> + <parameter type-id='a3681dea'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zfs_prop_readonly' mangled-name='zfs_prop_readonly' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_readonly'> + <parameter type-id='58603c44'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zfs_prop_inheritable' mangled-name='zfs_prop_inheritable' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_inheritable'> + <parameter type-id='58603c44'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zfs_prop_setonce' mangled-name='zfs_prop_setonce' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_setonce'> + <parameter type-id='58603c44'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zfs_prop_encryption_key_param' mangled-name='zfs_prop_encryption_key_param' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_encryption_key_param'> + <parameter type-id='58603c44'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zfs_prop_valid_keylocation' mangled-name='zfs_prop_valid_keylocation' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_valid_keylocation'> + <parameter type-id='80f4b756'/> + <parameter type-id='c19b74c3'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zfs_prop_user' mangled-name='zfs_prop_user' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_user'> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zfs_prop_userquota' mangled-name='zfs_prop_userquota' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_userquota'> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zfs_prop_written' mangled-name='zfs_prop_written' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_written'> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zfs_prop_index_to_string' mangled-name='zfs_prop_index_to_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_index_to_string'> + <parameter type-id='58603c44'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='7d3cd834'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_prop_valid_for_type' mangled-name='zfs_prop_valid_for_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_valid_for_type'> + <parameter type-id='95e97e5e'/> + <parameter type-id='2e45de5d'/> + <parameter type-id='c19b74c3'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='nvlist_alloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='857bb57e'/> + <parameter type-id='3502e3ff'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_size' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='78c01427'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_pack' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='9b23c9ad'/> + <parameter type-id='78c01427'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_unpack' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='857bb57e'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='22cce67b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint64_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='713a56f5'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_remove' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='8d0687d2'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_remove_all' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_int64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <parameter type-id='cb785ebf'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_uint64_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='892b4acc'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_nvlist_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='75be733c'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_empty' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='nvpair_type' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='dace003f'/> + <return type-id='8d0687d2'/> + </function-decl> + <function-decl name='nvpair_value_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='dace003f'/> + <parameter type-id='5d6479ae'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='dace003f'/> + <parameter type-id='7d3cd834'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fnvlist_free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_boolean' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9c313c2d'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_lookup_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <return type-id='9c313c2d'/> + </function-decl> + <function-decl name='fnvlist_lookup_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='fnvlist_lookup_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='fnvpair_value_int32' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='dace003f'/> + <return type-id='3ff5601b'/> + </function-decl> + <function-decl name='fnvpair_value_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='dace003f'/> + <return type-id='9c313c2d'/> + </function-decl> + <function-decl name='entity_namecheck' mangled-name='entity_namecheck' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='entity_namecheck'> + <parameter type-id='80f4b756'/> + <parameter type-id='053457bd'/> + <parameter type-id='26a90f95'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='dataset_nestcheck' mangled-name='dataset_nestcheck' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dataset_nestcheck'> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='mountpoint_namecheck' mangled-name='mountpoint_namecheck' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mountpoint_namecheck'> + <parameter type-id='80f4b756'/> + <parameter type-id='053457bd'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_prop_get_type' mangled-name='zfs_prop_get_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_get_type'> + <parameter type-id='58603c44'/> + <return type-id='31429eff'/> + </function-decl> + <function-decl name='sa_validate_shareopts' mangled-name='sa_validate_shareopts' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_validate_shareopts'> + <parameter type-id='80f4b756'/> + <parameter type-id='9155d4b5'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='getmntany' mangled-name='getmntany' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getmntany'> + <parameter type-id='822cd80b'/> + <parameter type-id='9d424d31'/> + <parameter type-id='9d424d31'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='_sol_getmntent' mangled-name='_sol_getmntent' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_sol_getmntent'> + <parameter type-id='822cd80b'/> + <parameter type-id='9d424d31'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='getgrnam_r' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='c878edd6'/> + <parameter type-id='266fe297'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='aa19c230'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='hasmntopt' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='48bea5ec'/> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='pthread_mutex_init' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='18c91f9e'/> + <parameter type-id='c2afbd7e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_mutex_destroy' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='18c91f9e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_mutex_lock' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='18c91f9e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_mutex_unlock' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='18c91f9e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='getpwnam_r' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='33518961'/> + <parameter type-id='266fe297'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='8f2c7109'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strtol' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='8c85230f'/> + <parameter type-id='95e97e5e'/> + <return type-id='bd54fe1a'/> + </function-decl> + <function-decl name='strtoul' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='8c85230f'/> + <parameter type-id='95e97e5e'/> + <return type-id='7359adad'/> + </function-decl> + <function-decl name='abort' visibility='default' binding='global' size-in-bits='64'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='strrchr' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strcspn' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='strstr' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strsep' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='8c85230f'/> + <parameter type-id='9d26089a'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strftime' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='266fe297'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='9d26089a'/> + <parameter type-id='f8c6051d'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='localtime_r' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='d6e2847c'/> + <parameter type-id='f099ad08'/> + <return type-id='d915a820'/> + </function-decl> + <function-decl name='__fprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='ioctl' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='7359adad'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='zfs_type_to_name' mangled-name='zfs_type_to_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_type_to_name'> <parameter type-id='2e45de5d' name='type'/> <return type-id='80f4b756'/> @@ -2474,28 +4382,10 @@ <parameter type-id='b0382bb3' name='hdl'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='zfs_refresh_properties' mangled-name='zfs_refresh_properties' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_refresh_properties'> - <parameter type-id='9200a744' name='zhp'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='zfs_handle_dup' mangled-name='zfs_handle_dup' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_handle_dup'> - <parameter type-id='9200a744' name='zhp_orig'/> - <return type-id='9200a744'/> - </function-decl> <function-decl name='zfs_bookmark_exists' mangled-name='zfs_bookmark_exists' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_bookmark_exists'> <parameter type-id='80f4b756' name='path'/> <return type-id='c19b74c3'/> </function-decl> - <function-decl name='zfs_open' mangled-name='zfs_open' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_open'> - <parameter type-id='b0382bb3' name='hdl'/> - <parameter type-id='80f4b756' name='path'/> - <parameter type-id='95e97e5e' name='types'/> - <return type-id='9200a744'/> - </function-decl> - <function-decl name='zfs_close' mangled-name='zfs_close' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_close'> - <parameter type-id='9200a744' name='zhp'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='libzfs_mnttab_init' mangled-name='libzfs_mnttab_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libzfs_mnttab_init'> <parameter type-id='b0382bb3' name='hdl'/> <return type-id='48b5725f'/> @@ -2532,17 +4422,6 @@ <parameter type-id='7292109c' name='spa_version'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zfs_valid_proplist' mangled-name='zfs_valid_proplist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_valid_proplist'> - <parameter type-id='b0382bb3' name='hdl'/> - <parameter type-id='2e45de5d' name='type'/> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='9c313c2d' name='zoned'/> - <parameter type-id='9200a744' name='zhp'/> - <parameter type-id='4c81de99' name='zpool_hdl'/> - <parameter type-id='c19b74c3' name='key_params_ok'/> - <parameter type-id='80f4b756' name='errbuf'/> - <return type-id='5ce45b60'/> - </function-decl> <function-decl name='zfs_prop_set' mangled-name='zfs_prop_set' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_set'> <parameter type-id='9200a744' name='zhp'/> <parameter type-id='80f4b756' name='propname'/> @@ -2554,6 +4433,12 @@ <parameter type-id='5ce45b60' name='props'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='zfs_prop_set_list_flags' mangled-name='zfs_prop_set_list_flags' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_set_list_flags'> + <parameter type-id='9200a744' name='zhp'/> + <parameter type-id='5ce45b60' name='props'/> + <parameter type-id='95e97e5e' name='flags'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='zfs_prop_inherit' mangled-name='zfs_prop_inherit' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_inherit'> <parameter type-id='9200a744' name='zhp'/> <parameter type-id='80f4b756' name='propname'/> @@ -2563,7 +4448,7 @@ <function-decl name='getprop_uint64' mangled-name='getprop_uint64' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getprop_uint64'> <parameter type-id='9200a744' name='zhp'/> <parameter type-id='58603c44' name='prop'/> - <parameter type-id='9b23c9ad' name='source'/> + <parameter type-id='7d3cd834' name='source'/> <return type-id='9c313c2d'/> </function-decl> <function-decl name='zfs_prop_get_recvd' mangled-name='zfs_prop_get_recvd' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_get_recvd'> @@ -2578,22 +4463,6 @@ <parameter type-id='9200a744' name='zhp'/> <return type-id='5ce45b60'/> </function-decl> - <function-decl name='zfs_prop_get' mangled-name='zfs_prop_get' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_get'> - <parameter type-id='9200a744' name='zhp'/> - <parameter type-id='58603c44' name='prop'/> - <parameter type-id='26a90f95' name='propbuf'/> - <parameter type-id='b59d7dce' name='proplen'/> - <parameter type-id='debc6aa3' name='src'/> - <parameter type-id='26a90f95' name='statbuf'/> - <parameter type-id='b59d7dce' name='statlen'/> - <parameter type-id='c19b74c3' name='literal'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='zfs_prop_get_int' mangled-name='zfs_prop_get_int' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_get_int'> - <parameter type-id='9200a744' name='zhp'/> - <parameter type-id='58603c44' name='prop'/> - <return type-id='9c313c2d'/> - </function-decl> <function-decl name='zfs_prop_get_numeric' mangled-name='zfs_prop_get_numeric' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_get_numeric'> <parameter type-id='9200a744' name='zhp'/> <parameter type-id='58603c44' name='prop'/> @@ -2631,10 +4500,6 @@ <parameter type-id='c19b74c3' name='literal'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zfs_get_name' mangled-name='zfs_get_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_get_name'> - <parameter type-id='fcd57163' name='zhp'/> - <return type-id='80f4b756'/> - </function-decl> <function-decl name='zfs_get_pool_name' mangled-name='zfs_get_pool_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_get_pool_name'> <parameter type-id='fcd57163' name='zhp'/> <return type-id='80f4b756'/> @@ -2647,12 +4512,6 @@ <parameter type-id='fcd57163' name='zhp'/> <return type-id='2e45de5d'/> </function-decl> - <function-decl name='zfs_parent_name' mangled-name='zfs_parent_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_parent_name'> - <parameter type-id='9200a744' name='zhp'/> - <parameter type-id='26a90f95' name='buf'/> - <parameter type-id='b59d7dce' name='buflen'/> - <return type-id='95e97e5e'/> - </function-decl> <function-decl name='zfs_dataset_exists' mangled-name='zfs_dataset_exists' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_dataset_exists'> <parameter type-id='b0382bb3' name='hdl'/> <parameter type-id='80f4b756' name='path'/> @@ -2832,6 +4691,90 @@ <parameter type-id='37e3bd22' name='waited'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='zfs_error_fmt' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_standard_error_fmt' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_setprop_error' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='58603c44'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='26a90f95'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zprop_parse_value' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='3fa542f0'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='2e45de5d'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='7d3cd834'/> + <parameter type-id='5d6479ae'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zprop_expand_list' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='e4378506'/> + <parameter type-id='2e45de5d'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zcmd_write_src_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='e4ec4540'/> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='changelist_prefix' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='0d41d328'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='changelist_postfix' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='0d41d328'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='changelist_rename' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='0d41d328'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='changelist_remove' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='0d41d328'/> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='changelist_free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='0d41d328'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='changelist_gather' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9200a744'/> + <parameter type-id='58603c44'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='95e97e5e'/> + <return type-id='0d41d328'/> + </function-decl> + <function-decl name='changelist_haszonedchild' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='0d41d328'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zpool_name_valid' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> <function-type size-in-bits='64' id='7e291ce6'> <parameter type-id='eaa32e2f'/> <parameter type-id='80f4b756'/> @@ -2841,6 +4784,125 @@ </function-type> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/libzfs_diff.c' language='LANG_C99'> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='448' id='6093ff7c'> + <subrange length='56' type-id='7359adad' id='f8137894'/> + </array-type-def> + <typedef-decl name='pthread_t' type-id='7359adad' id='4051f5e7'/> + <union-decl name='pthread_attr_t' size-in-bits='448' visibility='default' id='b63afacd'> + <data-member access='public'> + <var-decl name='__size' type-id='6093ff7c' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='__align' type-id='bd54fe1a' visibility='default'/> + </data-member> + </union-decl> + <typedef-decl name='pthread_attr_t' type-id='b63afacd' id='7d8569fd'/> + <class-decl name='differ_info' size-in-bits='9088' is-struct='yes' visibility='default' id='d41965ee'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='zhp' type-id='9200a744' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='fromsnap' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='frommnt' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='tosnap' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='tomnt' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='ds' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='dsmnt' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='tmpsnap' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='errbuf' type-id='b54ce520' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='8704'> + <var-decl name='isclone' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='8736'> + <var-decl name='scripted' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='8768'> + <var-decl name='classify' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='8800'> + <var-decl name='timestamped' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='8832'> + <var-decl name='no_mangle' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='8896'> + <var-decl name='shares' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='8960'> + <var-decl name='zerr' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='8992'> + <var-decl name='cleanupfd' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='9024'> + <var-decl name='outputfd' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='9056'> + <var-decl name='datafd' type-id='95e97e5e' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='differ_info_t' type-id='d41965ee' id='e8525f0e'/> + <qualified-type-def type-id='7d8569fd' const='yes' id='e06dee2d'/> + <pointer-type-def type-id='e06dee2d' size-in-bits='64' id='540db505'/> + <qualified-type-def type-id='540db505' restrict='yes' id='e1815e87'/> + <pointer-type-def type-id='e8525f0e' size-in-bits='64' id='ee78f675'/> + <pointer-type-def type-id='4051f5e7' size-in-bits='64' id='e01b5462'/> + <qualified-type-def type-id='e01b5462' restrict='yes' id='cc338b26'/> + <pointer-type-def type-id='cd5d79f4' size-in-bits='64' id='5ad9edb6'/> + <function-decl name='is_mounted' mangled-name='is_mounted' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='is_mounted'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9b23c9ad'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='color_start' mangled-name='color_start' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='color_start'> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='color_end' mangled-name='color_end' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='color_end'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='pthread_create' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='cc338b26'/> + <parameter type-id='e1815e87'/> + <parameter type-id='5ad9edb6'/> + <parameter type-id='1b7446cd'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_join' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='4051f5e7'/> + <parameter type-id='63e171df'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_cancel' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='4051f5e7'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fputs' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='e75a27e9'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pipe2' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='7292109c'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='zfs_show_diffs' mangled-name='zfs_show_diffs' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_show_diffs'> <parameter type-id='9200a744' name='zhp'/> <parameter type-id='95e97e5e' name='outfd'/> @@ -2849,8 +4911,32 @@ <parameter type-id='95e97e5e' name='flags'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='zfs_asprintf' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='zfs_validate_name' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='c19b74c3'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='find_shares_object' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='ee78f675'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-type size-in-bits='64' id='cd5d79f4'> + <parameter type-id='eaa32e2f'/> + <return type-id='eaa32e2f'/> + </function-type> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/libzfs_import.c' language='LANG_C99'> + <array-type-def dimensions='1' type-id='03085adc' size-in-bits='192' id='083f8d58'> + <subrange length='3' type-id='7359adad' id='56f209d2'/> + </array-type-def> <typedef-decl name='refresh_config_func_t' type-id='29f040d2' id='b7c58eaa'/> <typedef-decl name='pool_active_func_t' type-id='baa42fef' id='de5d1d8f'/> <class-decl name='pool_config_ops' size-in-bits='128' is-struct='yes' visibility='default' id='8b092c69'> @@ -2874,11 +4960,106 @@ <enumerator name='POOL_STATE_POTENTIALLY_ACTIVE' value='7'/> </enum-decl> <typedef-decl name='pool_state_t' type-id='4871ac24' id='084a08a3'/> + <class-decl name='stat64' size-in-bits='1152' is-struct='yes' visibility='default' id='0bbec9cd'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='st_dev' type-id='35ed8932' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='st_ino' type-id='71288a47' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='st_nlink' type-id='80f0b9df' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='st_mode' type-id='e1c52942' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='224'> + <var-decl name='st_uid' type-id='cc5fcceb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='st_gid' type-id='d94ec6d9' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='288'> + <var-decl name='__pad0' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='st_rdev' type-id='35ed8932' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='st_size' type-id='79989e9c' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='st_blksize' type-id='d3f10a7f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='st_blocks' type-id='4e711bf1' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='st_atim' type-id='a9c79a1f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='704'> + <var-decl name='st_mtim' type-id='a9c79a1f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='832'> + <var-decl name='st_ctim' type-id='a9c79a1f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='960'> + <var-decl name='__glibc_reserved' type-id='083f8d58' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='__dev_t' type-id='7359adad' id='35ed8932'/> + <typedef-decl name='__ino64_t' type-id='7359adad' id='71288a47'/> + <typedef-decl name='__mode_t' type-id='f0981eeb' id='e1c52942'/> + <typedef-decl name='__nlink_t' type-id='7359adad' id='80f0b9df'/> + <typedef-decl name='__blksize_t' type-id='bd54fe1a' id='d3f10a7f'/> + <typedef-decl name='__blkcnt64_t' type-id='bd54fe1a' id='4e711bf1'/> + <typedef-decl name='__syscall_slong_t' type-id='bd54fe1a' id='03085adc'/> + <class-decl name='timespec' size-in-bits='128' is-struct='yes' visibility='default' id='a9c79a1f'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='tv_sec' type-id='65eda9c0' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='tv_nsec' type-id='03085adc' visibility='default'/> + </data-member> + </class-decl> <qualified-type-def type-id='8b092c69' const='yes' id='1a21babe'/> <pointer-type-def type-id='de5d1d8f' size-in-bits='64' id='9eadf5e0'/> <pointer-type-def type-id='084a08a3' size-in-bits='64' id='b9ea57b8'/> <pointer-type-def type-id='b7c58eaa' size-in-bits='64' id='e7c00489'/> + <pointer-type-def type-id='0bbec9cd' size-in-bits='64' id='62f7a03d'/> <var-decl name='libzfs_config_ops' type-id='b1e62775' mangled-name='libzfs_config_ops' visibility='default' elf-symbol-id='libzfs_config_ops'/> + <function-decl name='zpool_read_label' mangled-name='zpool_read_label' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_read_label'> + <parameter type-id='95e97e5e'/> + <parameter type-id='857bb57e'/> + <parameter type-id='7292109c'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pwrite64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='724e4de6'/> + <return type-id='79a0948f'/> + </function-decl> + <function-decl name='__pread64_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='724e4de6'/> + <parameter type-id='b59d7dce'/> + <return type-id='79a0948f'/> + </function-decl> + <function-decl name='fstat64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='62f7a03d'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zcmd_write_conf_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='e4ec4540'/> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> <function-decl name='zpool_clear_label' mangled-name='zpool_clear_label' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_clear_label'> <parameter type-id='95e97e5e' name='fd'/> <return type-id='95e97e5e'/> @@ -2905,6 +5086,33 @@ </function-type> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/libzfs_iter.c' language='LANG_C99'> + <pointer-type-def type-id='b351119f' size-in-bits='64' id='716943c7'/> + <function-decl name='avl_first' mangled-name='avl_first' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_first'> + <parameter type-id='a3681dea'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='avl_walk' mangled-name='avl_walk' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_walk'> + <parameter type-id='716943c7'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='95e97e5e'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='make_dataset_handle_zc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='e4ec4540'/> + <return type-id='9200a744'/> + </function-decl> + <function-decl name='make_dataset_simple_handle_zc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9200a744'/> + <parameter type-id='e4ec4540'/> + <return type-id='9200a744'/> + </function-decl> + <function-decl name='make_bookmark_handle' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9200a744'/> + <parameter type-id='80f4b756'/> + <parameter type-id='5ce45b60'/> + <return type-id='9200a744'/> + </function-decl> <function-decl name='zfs_iter_filesystems' mangled-name='zfs_iter_filesystems' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_filesystems'> <parameter type-id='9200a744' name='zhp'/> <parameter type-id='d8e49ab9' name='func'/> @@ -2934,6 +5142,15 @@ <parameter type-id='9c313c2d' name='max_txg'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='zfs_iter_snapshots_sorted_v2' mangled-name='zfs_iter_snapshots_sorted_v2' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_snapshots_sorted_v2'> + <parameter type-id='9200a744' name='zhp'/> + <parameter type-id='95e97e5e' name='flags'/> + <parameter type-id='d8e49ab9' name='callback'/> + <parameter type-id='eaa32e2f' name='data'/> + <parameter type-id='9c313c2d' name='min_txg'/> + <parameter type-id='9c313c2d' name='max_txg'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='zfs_iter_snapspec' mangled-name='zfs_iter_snapspec' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_snapspec'> <parameter type-id='9200a744' name='fs_zhp'/> <parameter type-id='80f4b756' name='spec_orig'/> @@ -2941,27 +5158,89 @@ <parameter type-id='eaa32e2f' name='arg'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zfs_iter_children' mangled-name='zfs_iter_children' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_children'> - <parameter type-id='9200a744' name='zhp'/> + <function-decl name='zfs_iter_snapspec_v2' mangled-name='zfs_iter_snapspec_v2' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_snapspec_v2'> + <parameter type-id='9200a744' name='fs_zhp'/> + <parameter type-id='95e97e5e' name='flags'/> + <parameter type-id='80f4b756' name='spec_orig'/> <parameter type-id='d8e49ab9' name='func'/> - <parameter type-id='eaa32e2f' name='data'/> + <parameter type-id='eaa32e2f' name='arg'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zfs_iter_dependents' mangled-name='zfs_iter_dependents' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_dependents'> + <function-decl name='zfs_iter_children' mangled-name='zfs_iter_children' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_children'> <parameter type-id='9200a744' name='zhp'/> - <parameter type-id='c19b74c3' name='allowrecursion'/> <parameter type-id='d8e49ab9' name='func'/> <parameter type-id='eaa32e2f' name='data'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zfs_iter_mounted' mangled-name='zfs_iter_mounted' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_mounted'> + <function-decl name='zfs_iter_dependents' mangled-name='zfs_iter_dependents' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_iter_dependents'> <parameter type-id='9200a744' name='zhp'/> + <parameter type-id='c19b74c3' name='allowrecursion'/> <parameter type-id='d8e49ab9' name='func'/> <parameter type-id='eaa32e2f' name='data'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/libzfs_mount.c' language='LANG_C99'> + <array-type-def dimensions='1' type-id='6028cbfe' size-in-bits='256' id='b39b9aa7'> + <subrange length='4' type-id='7359adad' id='16fe7105'/> + </array-type-def> + <class-decl name='__dirstream' is-struct='yes' visibility='default' is-declaration-only='yes' id='20cd73f2'/> + <class-decl name='tpool' size-in-bits='2496' is-struct='yes' visibility='default' id='88d1b7f9'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='tp_forw' type-id='9cf59a50' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='tp_back' type-id='9cf59a50' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='tp_mutex' type-id='7a6844eb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='tp_busycv' type-id='62fab762' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='832'> + <var-decl name='tp_workcv' type-id='62fab762' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1216'> + <var-decl name='tp_waitcv' type-id='62fab762' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1600'> + <var-decl name='tp_active' type-id='ad33e5e7' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1664'> + <var-decl name='tp_head' type-id='f32b30e4' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1728'> + <var-decl name='tp_tail' type-id='f32b30e4' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1792'> + <var-decl name='tp_attr' type-id='7d8569fd' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2240'> + <var-decl name='tp_flags' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2272'> + <var-decl name='tp_linger' type-id='3502e3ff' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2304'> + <var-decl name='tp_njobs' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2336'> + <var-decl name='tp_minimum' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2368'> + <var-decl name='tp_maximum' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2400'> + <var-decl name='tp_current' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2432'> + <var-decl name='tp_idle' type-id='95e97e5e' visibility='default'/> + </data-member> + </class-decl> + <array-type-def dimensions='1' type-id='95e97e5e' size-in-bits='64' id='e4266c7e'> + <subrange length='2' type-id='7359adad' id='52efc4ef'/> + </array-type-def> <class-decl name='get_all_cb' size-in-bits='192' is-struct='yes' visibility='default' id='803dac95'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='cb_handles' type-id='4507922a' visibility='default'/> @@ -2974,31 +5253,251 @@ </data-member> </class-decl> <typedef-decl name='get_all_cb_t' type-id='803dac95' id='9b293607'/> - <enum-decl name='sa_protocol' id='9155d4b5'> - <underlying-type type-id='9cac1fee'/> - <enumerator name='SA_PROTOCOL_NFS' value='0'/> - <enumerator name='SA_PROTOCOL_SMB' value='1'/> - <enumerator name='SA_PROTOCOL_COUNT' value='2'/> - </enum-decl> - <qualified-type-def type-id='9155d4b5' const='yes' id='9f2c1699'/> - <pointer-type-def type-id='9f2c1699' size-in-bits='64' id='4567bbc9'/> + <typedef-decl name='tpool_t' type-id='88d1b7f9' id='b1bbf10d'/> + <typedef-decl name='DIR' type-id='20cd73f2' id='54a5d683'/> + <typedef-decl name='mode_t' type-id='e1c52942' id='d50d396c'/> + <typedef-decl name='__compar_fn_t' type-id='585e1de9' id='aba7edd8'/> + <class-decl name='dirent64' size-in-bits='2240' is-struct='yes' visibility='default' id='5725d813'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='d_ino' type-id='71288a47' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='d_off' type-id='724e4de6' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='d_reclen' type-id='8efea9e5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='144'> + <var-decl name='d_type' type-id='002ac4a6' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='152'> + <var-decl name='d_name' type-id='d1617432' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='statfs64' size-in-bits='960' is-struct='yes' visibility='default' id='a2a6be1a'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='f_type' type-id='6028cbfe' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='f_bsize' type-id='6028cbfe' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='f_blocks' type-id='95fe1a02' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='f_bfree' type-id='95fe1a02' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='f_bavail' type-id='95fe1a02' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='f_files' type-id='0c3a4dde' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='f_ffree' type-id='0c3a4dde' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='f_fsid' type-id='0f35d263' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='f_namelen' type-id='6028cbfe' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='f_frsize' type-id='6028cbfe' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='640'> + <var-decl name='f_flags' type-id='6028cbfe' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='704'> + <var-decl name='f_spare' type-id='b39b9aa7' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='stat' size-in-bits='1152' is-struct='yes' visibility='default' id='aafc373f'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='st_dev' type-id='35ed8932' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='st_ino' type-id='e43e523d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='st_nlink' type-id='80f0b9df' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='st_mode' type-id='e1c52942' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='224'> + <var-decl name='st_uid' type-id='cc5fcceb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='st_gid' type-id='d94ec6d9' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='288'> + <var-decl name='__pad0' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='st_rdev' type-id='35ed8932' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='st_size' type-id='79989e9c' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='st_blksize' type-id='d3f10a7f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='st_blocks' type-id='dbc43803' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='st_atim' type-id='a9c79a1f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='704'> + <var-decl name='st_mtim' type-id='a9c79a1f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='832'> + <var-decl name='st_ctim' type-id='a9c79a1f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='960'> + <var-decl name='__glibc_reserved' type-id='083f8d58' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='__ino_t' type-id='7359adad' id='e43e523d'/> + <class-decl name='__fsid_t' size-in-bits='64' is-struct='yes' naming-typedef-id='0f35d263' visibility='default' id='ea35c84a'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='__val' type-id='e4266c7e' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='__fsid_t' type-id='ea35c84a' id='0f35d263'/> + <typedef-decl name='__blkcnt_t' type-id='bd54fe1a' id='dbc43803'/> + <typedef-decl name='__fsblkcnt64_t' type-id='7359adad' id='95fe1a02'/> + <typedef-decl name='__fsfilcnt64_t' type-id='7359adad' id='0c3a4dde'/> + <typedef-decl name='__fsword_t' type-id='bd54fe1a' id='6028cbfe'/> + <pointer-type-def type-id='54a5d683' size-in-bits='64' id='f09217ba'/> + <pointer-type-def type-id='5725d813' size-in-bits='64' id='07b96073'/> <pointer-type-def type-id='9b293607' size-in-bits='64' id='77bf1784'/> + <pointer-type-def type-id='7d8569fd' size-in-bits='64' id='7347a39e'/> + <pointer-type-def type-id='aafc373f' size-in-bits='64' id='4330df87'/> + <qualified-type-def type-id='4330df87' restrict='yes' id='73665405'/> + <pointer-type-def type-id='a2a6be1a' size-in-bits='64' id='7fd094c8'/> + <pointer-type-def type-id='b1bbf10d' size-in-bits='64' id='9cf59a50'/> + <pointer-type-def type-id='c5c76c9c' size-in-bits='64' id='b7f9d8e6'/> <pointer-type-def type-id='9200a744' size-in-bits='64' id='4507922a'/> - <function-decl name='is_mounted' mangled-name='is_mounted' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='is_mounted'> - <parameter type-id='b0382bb3' name='zfs_hdl'/> - <parameter type-id='80f4b756' name='special'/> - <parameter type-id='9b23c9ad' name='where'/> - <return type-id='c19b74c3'/> + <class-decl name='__dirstream' is-struct='yes' visibility='default' is-declaration-only='yes' id='20cd73f2'/> + <function-decl name='zpool_disable_datasets_os' mangled-name='zpool_disable_datasets_os' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_disable_datasets_os'> + <parameter type-id='4c81de99'/> + <parameter type-id='c19b74c3'/> + <return type-id='48b5725f'/> </function-decl> - <function-decl name='zfs_is_mounted' mangled-name='zfs_is_mounted' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_is_mounted'> - <parameter type-id='9200a744' name='zhp'/> - <parameter type-id='9b23c9ad' name='where'/> + <function-decl name='zpool_disable_volume_os' mangled-name='zpool_disable_volume_os' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_disable_volume_os'> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='tpool_create' mangled-name='tpool_create' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_create'> + <parameter type-id='3502e3ff'/> + <parameter type-id='3502e3ff'/> + <parameter type-id='3502e3ff'/> + <parameter type-id='7347a39e'/> + <return type-id='9cf59a50'/> + </function-decl> + <function-decl name='tpool_dispatch' mangled-name='tpool_dispatch' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_dispatch'> + <parameter type-id='9cf59a50'/> + <parameter type-id='b7f9d8e6'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='tpool_destroy' mangled-name='tpool_destroy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_destroy'> + <parameter type-id='9cf59a50'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='tpool_wait' mangled-name='tpool_wait' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tpool_wait'> + <parameter type-id='9cf59a50'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='mkdirp' mangled-name='mkdirp' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mkdirp'> + <parameter type-id='80f4b756'/> + <parameter type-id='d50d396c'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='sa_errorstr' mangled-name='sa_errorstr' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_errorstr'> + <parameter type-id='95e97e5e'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='sa_enable_share' mangled-name='sa_enable_share' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_enable_share'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9155d4b5'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='sa_disable_share' mangled-name='sa_disable_share' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_disable_share'> + <parameter type-id='80f4b756'/> + <parameter type-id='9155d4b5'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='sa_is_shared' mangled-name='sa_is_shared' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_is_shared'> + <parameter type-id='80f4b756'/> + <parameter type-id='9155d4b5'/> <return type-id='c19b74c3'/> </function-decl> - <function-decl name='zfs_mount' mangled-name='zfs_mount' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_mount'> - <parameter type-id='9200a744' name='zhp'/> - <parameter type-id='80f4b756' name='options'/> - <parameter type-id='95e97e5e' name='flags'/> + <function-decl name='sa_truncate_shares' mangled-name='sa_truncate_shares' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sa_truncate_shares'> + <parameter type-id='9155d4b5'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fdopendir' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='f09217ba'/> + </function-decl> + <function-decl name='closedir' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='f09217ba'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='readdir64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='f09217ba'/> + <return type-id='07b96073'/> + </function-decl> + <function-decl name='qsort' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='aba7edd8'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='rmdir' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__openat_too_many_args' visibility='default' binding='global' size-in-bits='64'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__openat_missing_mode' visibility='default' binding='global' size-in-bits='64'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='statfs64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='7fd094c8'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_realloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='changelist_unshare' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='0d41d328'/> + <parameter type-id='4567bbc9'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='do_mount' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9200a744'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='do_unmount' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9200a744'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='zfs_mount_at' mangled-name='zfs_mount_at' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_mount_at'> @@ -3008,38 +5507,15 @@ <parameter type-id='80f4b756' name='mountpoint'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zfs_unmount' mangled-name='zfs_unmount' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_unmount'> - <parameter type-id='9200a744' name='zhp'/> - <parameter type-id='80f4b756' name='mountpoint'/> - <parameter type-id='95e97e5e' name='flags'/> - <return type-id='95e97e5e'/> - </function-decl> <function-decl name='zfs_unmountall' mangled-name='zfs_unmountall' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_unmountall'> <parameter type-id='9200a744' name='zhp'/> <parameter type-id='95e97e5e' name='flags'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zfs_share' mangled-name='zfs_share' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_share'> - <parameter type-id='9200a744' name='zhp'/> - <parameter type-id='4567bbc9' name='proto'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='zfs_is_shared' mangled-name='zfs_is_shared' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_is_shared'> - <parameter type-id='9200a744' name='zhp'/> - <parameter type-id='9b23c9ad' name='where'/> - <parameter type-id='4567bbc9' name='proto'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='zfs_commit_shares' mangled-name='zfs_commit_shares' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_commit_shares'> + <function-decl name='zfs_truncate_shares' mangled-name='zfs_truncate_shares' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_truncate_shares'> <parameter type-id='4567bbc9' name='proto'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='zfs_unshare' mangled-name='zfs_unshare' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_unshare'> - <parameter type-id='9200a744' name='zhp'/> - <parameter type-id='80f4b756' name='mountpoint'/> - <parameter type-id='4567bbc9' name='proto'/> - <return type-id='95e97e5e'/> - </function-decl> <function-decl name='zfs_unshareall' mangled-name='zfs_unshareall' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_unshareall'> <parameter type-id='9200a744' name='zhp'/> <parameter type-id='4567bbc9' name='proto'/> @@ -3072,12 +5548,13 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/libzfs_pool.c' language='LANG_C99'> + <type-decl name='long long unsigned int' size-in-bits='64' id='3a47d82b'/> <class-decl name='splitflags' size-in-bits='64' is-struct='yes' visibility='default' id='dc01bf52'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='dryrun' type-id='95e97e5e' visibility='default'/> + <var-decl name='dryrun' type-id='f0981eeb' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='1'> - <var-decl name='import' type-id='95e97e5e' visibility='default'/> + <var-decl name='import' type-id='f0981eeb' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> <var-decl name='name_flags' type-id='95e97e5e' visibility='default'/> @@ -3099,6 +5576,43 @@ </data-member> </class-decl> <typedef-decl name='trimflags_t' type-id='8ef58008' id='a093cbb8'/> + <enum-decl name='zpool_status_t' naming-typedef-id='d3dd6294' id='5e770b40'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='ZPOOL_STATUS_CORRUPT_CACHE' value='0'/> + <enumerator name='ZPOOL_STATUS_MISSING_DEV_R' value='1'/> + <enumerator name='ZPOOL_STATUS_MISSING_DEV_NR' value='2'/> + <enumerator name='ZPOOL_STATUS_CORRUPT_LABEL_R' value='3'/> + <enumerator name='ZPOOL_STATUS_CORRUPT_LABEL_NR' value='4'/> + <enumerator name='ZPOOL_STATUS_BAD_GUID_SUM' value='5'/> + <enumerator name='ZPOOL_STATUS_CORRUPT_POOL' value='6'/> + <enumerator name='ZPOOL_STATUS_CORRUPT_DATA' value='7'/> + <enumerator name='ZPOOL_STATUS_FAILING_DEV' value='8'/> + <enumerator name='ZPOOL_STATUS_VERSION_NEWER' value='9'/> + <enumerator name='ZPOOL_STATUS_HOSTID_MISMATCH' value='10'/> + <enumerator name='ZPOOL_STATUS_HOSTID_ACTIVE' value='11'/> + <enumerator name='ZPOOL_STATUS_HOSTID_REQUIRED' value='12'/> + <enumerator name='ZPOOL_STATUS_IO_FAILURE_WAIT' value='13'/> + <enumerator name='ZPOOL_STATUS_IO_FAILURE_CONTINUE' value='14'/> + <enumerator name='ZPOOL_STATUS_IO_FAILURE_MMP' value='15'/> + <enumerator name='ZPOOL_STATUS_BAD_LOG' value='16'/> + <enumerator name='ZPOOL_STATUS_ERRATA' value='17'/> + <enumerator name='ZPOOL_STATUS_UNSUP_FEAT_READ' value='18'/> + <enumerator name='ZPOOL_STATUS_UNSUP_FEAT_WRITE' value='19'/> + <enumerator name='ZPOOL_STATUS_FAULTED_DEV_R' value='20'/> + <enumerator name='ZPOOL_STATUS_FAULTED_DEV_NR' value='21'/> + <enumerator name='ZPOOL_STATUS_VERSION_OLDER' value='22'/> + <enumerator name='ZPOOL_STATUS_FEAT_DISABLED' value='23'/> + <enumerator name='ZPOOL_STATUS_RESILVERING' value='24'/> + <enumerator name='ZPOOL_STATUS_OFFLINE_DEV' value='25'/> + <enumerator name='ZPOOL_STATUS_REMOVED_DEV' value='26'/> + <enumerator name='ZPOOL_STATUS_REBUILDING' value='27'/> + <enumerator name='ZPOOL_STATUS_REBUILD_SCRUB' value='28'/> + <enumerator name='ZPOOL_STATUS_NON_NATIVE_ASHIFT' value='29'/> + <enumerator name='ZPOOL_STATUS_COMPATIBILITY_ERR' value='30'/> + <enumerator name='ZPOOL_STATUS_INCOMPATIBLE_FEAT' value='31'/> + <enumerator name='ZPOOL_STATUS_OK' value='32'/> + </enum-decl> + <typedef-decl name='zpool_status_t' type-id='5e770b40' id='d3dd6294'/> <enum-decl name='zpool_compat_status_t' naming-typedef-id='901b78d1' id='20676925'> <underlying-type type-id='9cac1fee'/> <enumerator name='ZPOOL_COMPATIBILITY_OK' value='0'/> @@ -3108,48 +5622,10 @@ <enumerator name='ZPOOL_COMPATIBILITY_NOFILES' value='4'/> </enum-decl> <typedef-decl name='zpool_compat_status_t' type-id='20676925' id='901b78d1'/> - <enum-decl name='zpool_prop_t' naming-typedef-id='5d0c23fb' id='af1ba157'> - <underlying-type type-id='9cac1fee'/> - <enumerator name='ZPOOL_PROP_INVAL' value='-1'/> - <enumerator name='ZPOOL_PROP_NAME' value='0'/> - <enumerator name='ZPOOL_PROP_SIZE' value='1'/> - <enumerator name='ZPOOL_PROP_CAPACITY' value='2'/> - <enumerator name='ZPOOL_PROP_ALTROOT' value='3'/> - <enumerator name='ZPOOL_PROP_HEALTH' value='4'/> - <enumerator name='ZPOOL_PROP_GUID' value='5'/> - <enumerator name='ZPOOL_PROP_VERSION' value='6'/> - <enumerator name='ZPOOL_PROP_BOOTFS' value='7'/> - <enumerator name='ZPOOL_PROP_DELEGATION' value='8'/> - <enumerator name='ZPOOL_PROP_AUTOREPLACE' value='9'/> - <enumerator name='ZPOOL_PROP_CACHEFILE' value='10'/> - <enumerator name='ZPOOL_PROP_FAILUREMODE' value='11'/> - <enumerator name='ZPOOL_PROP_LISTSNAPS' value='12'/> - <enumerator name='ZPOOL_PROP_AUTOEXPAND' value='13'/> - <enumerator name='ZPOOL_PROP_DEDUPDITTO' value='14'/> - <enumerator name='ZPOOL_PROP_DEDUPRATIO' value='15'/> - <enumerator name='ZPOOL_PROP_FREE' value='16'/> - <enumerator name='ZPOOL_PROP_ALLOCATED' value='17'/> - <enumerator name='ZPOOL_PROP_READONLY' value='18'/> - <enumerator name='ZPOOL_PROP_ASHIFT' value='19'/> - <enumerator name='ZPOOL_PROP_COMMENT' value='20'/> - <enumerator name='ZPOOL_PROP_EXPANDSZ' value='21'/> - <enumerator name='ZPOOL_PROP_FREEING' value='22'/> - <enumerator name='ZPOOL_PROP_FRAGMENTATION' value='23'/> - <enumerator name='ZPOOL_PROP_LEAKED' value='24'/> - <enumerator name='ZPOOL_PROP_MAXBLOCKSIZE' value='25'/> - <enumerator name='ZPOOL_PROP_TNAME' value='26'/> - <enumerator name='ZPOOL_PROP_MAXDNODESIZE' value='27'/> - <enumerator name='ZPOOL_PROP_MULTIHOST' value='28'/> - <enumerator name='ZPOOL_PROP_CHECKPOINT' value='29'/> - <enumerator name='ZPOOL_PROP_LOAD_GUID' value='30'/> - <enumerator name='ZPOOL_PROP_AUTOTRIM' value='31'/> - <enumerator name='ZPOOL_PROP_COMPATIBILITY' value='32'/> - <enumerator name='ZPOOL_NUM_PROPS' value='33'/> - </enum-decl> - <typedef-decl name='zpool_prop_t' type-id='af1ba157' id='5d0c23fb'/> <enum-decl name='vdev_prop_t' naming-typedef-id='5aa5c90c' id='1573bec8'> <underlying-type type-id='9cac1fee'/> <enumerator name='VDEV_PROP_INVAL' value='-1'/> + <enumerator name='VDEV_PROP_USERPROP' value='-1'/> <enumerator name='VDEV_PROP_NAME' value='0'/> <enumerator name='VDEV_PROP_CAPACITY' value='1'/> <enumerator name='VDEV_PROP_STATE' value='2'/> @@ -3191,9 +5667,32 @@ <enumerator name='VDEV_PROP_BYTES_TRIM' value='38'/> <enumerator name='VDEV_PROP_REMOVING' value='39'/> <enumerator name='VDEV_PROP_ALLOCATING' value='40'/> - <enumerator name='VDEV_NUM_PROPS' value='41'/> + <enumerator name='VDEV_PROP_FAILFAST' value='41'/> + <enumerator name='VDEV_PROP_CHECKSUM_N' value='42'/> + <enumerator name='VDEV_PROP_CHECKSUM_T' value='43'/> + <enumerator name='VDEV_PROP_IO_N' value='44'/> + <enumerator name='VDEV_PROP_IO_T' value='45'/> + <enumerator name='VDEV_PROP_RAIDZ_EXPANDING' value='46'/> + <enumerator name='VDEV_PROP_SLOW_IO_N' value='47'/> + <enumerator name='VDEV_PROP_SLOW_IO_T' value='48'/> + <enumerator name='VDEV_NUM_PROPS' value='49'/> </enum-decl> <typedef-decl name='vdev_prop_t' type-id='1573bec8' id='5aa5c90c'/> + <class-decl name='zpool_load_policy' size-in-bits='256' is-struct='yes' visibility='default' id='2f65b36f'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='zlp_rewind' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='zlp_maxmeta' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='zlp_maxdata' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='zlp_txg' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='zpool_load_policy_t' type-id='2f65b36f' id='d11b7617'/> <enum-decl name='vdev_state' id='21566197'> <underlying-type type-id='9cac1fee'/> <enumerator name='VDEV_STATE_UNKNOWN' value='0'/> @@ -3236,7 +5735,8 @@ <enumerator name='POOL_SCAN_NONE' value='0'/> <enumerator name='POOL_SCAN_SCRUB' value='1'/> <enumerator name='POOL_SCAN_RESILVER' value='2'/> - <enumerator name='POOL_SCAN_FUNCS' value='3'/> + <enumerator name='POOL_SCAN_ERRORSCRUB' value='3'/> + <enumerator name='POOL_SCAN_FUNCS' value='4'/> </enum-decl> <typedef-decl name='pool_scan_func_t' type-id='1b092565' id='7313fbe2'/> <enum-decl name='pool_scrub_cmd' id='a1474cbd'> @@ -3246,12 +5746,22 @@ <enumerator name='POOL_SCRUB_FLAGS_END' value='2'/> </enum-decl> <typedef-decl name='pool_scrub_cmd_t' type-id='a1474cbd' id='b51cf3c2'/> + <enum-decl name='zpool_errata' id='d9abbf54'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='ZPOOL_ERRATA_NONE' value='0'/> + <enumerator name='ZPOOL_ERRATA_ZOL_2094_SCRUB' value='1'/> + <enumerator name='ZPOOL_ERRATA_ZOL_2094_ASYNC_DESTROY' value='2'/> + <enumerator name='ZPOOL_ERRATA_ZOL_6845_ENCRYPTION' value='3'/> + <enumerator name='ZPOOL_ERRATA_ZOL_8308_ENCRYPTION' value='4'/> + </enum-decl> + <typedef-decl name='zpool_errata_t' type-id='d9abbf54' id='688c495b'/> <enum-decl name='pool_initialize_func' id='5c246ad4'> <underlying-type type-id='9cac1fee'/> <enumerator name='POOL_INITIALIZE_START' value='0'/> <enumerator name='POOL_INITIALIZE_CANCEL' value='1'/> <enumerator name='POOL_INITIALIZE_SUSPEND' value='2'/> - <enumerator name='POOL_INITIALIZE_FUNCS' value='3'/> + <enumerator name='POOL_INITIALIZE_UNINIT' value='3'/> + <enumerator name='POOL_INITIALIZE_FUNCS' value='4'/> </enum-decl> <typedef-decl name='pool_initialize_func_t' type-id='5c246ad4' id='7063e1ab'/> <enum-decl name='pool_trim_func' id='54ed608a'> @@ -3262,6 +5772,112 @@ <enumerator name='POOL_TRIM_FUNCS' value='3'/> </enum-decl> <typedef-decl name='pool_trim_func_t' type-id='54ed608a' id='b1146b8d'/> + <enum-decl name='zfs_ioc' id='12033f13'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='ZFS_IOC_FIRST' value='23040'/> + <enumerator name='ZFS_IOC' value='23040'/> + <enumerator name='ZFS_IOC_POOL_CREATE' value='23040'/> + <enumerator name='ZFS_IOC_POOL_DESTROY' value='23041'/> + <enumerator name='ZFS_IOC_POOL_IMPORT' value='23042'/> + <enumerator name='ZFS_IOC_POOL_EXPORT' value='23043'/> + <enumerator name='ZFS_IOC_POOL_CONFIGS' value='23044'/> + <enumerator name='ZFS_IOC_POOL_STATS' value='23045'/> + <enumerator name='ZFS_IOC_POOL_TRYIMPORT' value='23046'/> + <enumerator name='ZFS_IOC_POOL_SCAN' value='23047'/> + <enumerator name='ZFS_IOC_POOL_FREEZE' value='23048'/> + <enumerator name='ZFS_IOC_POOL_UPGRADE' value='23049'/> + <enumerator name='ZFS_IOC_POOL_GET_HISTORY' value='23050'/> + <enumerator name='ZFS_IOC_VDEV_ADD' value='23051'/> + <enumerator name='ZFS_IOC_VDEV_REMOVE' value='23052'/> + <enumerator name='ZFS_IOC_VDEV_SET_STATE' value='23053'/> + <enumerator name='ZFS_IOC_VDEV_ATTACH' value='23054'/> + <enumerator name='ZFS_IOC_VDEV_DETACH' value='23055'/> + <enumerator name='ZFS_IOC_VDEV_SETPATH' value='23056'/> + <enumerator name='ZFS_IOC_VDEV_SETFRU' value='23057'/> + <enumerator name='ZFS_IOC_OBJSET_STATS' value='23058'/> + <enumerator name='ZFS_IOC_OBJSET_ZPLPROPS' value='23059'/> + <enumerator name='ZFS_IOC_DATASET_LIST_NEXT' value='23060'/> + <enumerator name='ZFS_IOC_SNAPSHOT_LIST_NEXT' value='23061'/> + <enumerator name='ZFS_IOC_SET_PROP' value='23062'/> + <enumerator name='ZFS_IOC_CREATE' value='23063'/> + <enumerator name='ZFS_IOC_DESTROY' value='23064'/> + <enumerator name='ZFS_IOC_ROLLBACK' value='23065'/> + <enumerator name='ZFS_IOC_RENAME' value='23066'/> + <enumerator name='ZFS_IOC_RECV' value='23067'/> + <enumerator name='ZFS_IOC_SEND' value='23068'/> + <enumerator name='ZFS_IOC_INJECT_FAULT' value='23069'/> + <enumerator name='ZFS_IOC_CLEAR_FAULT' value='23070'/> + <enumerator name='ZFS_IOC_INJECT_LIST_NEXT' value='23071'/> + <enumerator name='ZFS_IOC_ERROR_LOG' value='23072'/> + <enumerator name='ZFS_IOC_CLEAR' value='23073'/> + <enumerator name='ZFS_IOC_PROMOTE' value='23074'/> + <enumerator name='ZFS_IOC_SNAPSHOT' value='23075'/> + <enumerator name='ZFS_IOC_DSOBJ_TO_DSNAME' value='23076'/> + <enumerator name='ZFS_IOC_OBJ_TO_PATH' value='23077'/> + <enumerator name='ZFS_IOC_POOL_SET_PROPS' value='23078'/> + <enumerator name='ZFS_IOC_POOL_GET_PROPS' value='23079'/> + <enumerator name='ZFS_IOC_SET_FSACL' value='23080'/> + <enumerator name='ZFS_IOC_GET_FSACL' value='23081'/> + <enumerator name='ZFS_IOC_SHARE' value='23082'/> + <enumerator name='ZFS_IOC_INHERIT_PROP' value='23083'/> + <enumerator name='ZFS_IOC_SMB_ACL' value='23084'/> + <enumerator name='ZFS_IOC_USERSPACE_ONE' value='23085'/> + <enumerator name='ZFS_IOC_USERSPACE_MANY' value='23086'/> + <enumerator name='ZFS_IOC_USERSPACE_UPGRADE' value='23087'/> + <enumerator name='ZFS_IOC_HOLD' value='23088'/> + <enumerator name='ZFS_IOC_RELEASE' value='23089'/> + <enumerator name='ZFS_IOC_GET_HOLDS' value='23090'/> + <enumerator name='ZFS_IOC_OBJSET_RECVD_PROPS' value='23091'/> + <enumerator name='ZFS_IOC_VDEV_SPLIT' value='23092'/> + <enumerator name='ZFS_IOC_NEXT_OBJ' value='23093'/> + <enumerator name='ZFS_IOC_DIFF' value='23094'/> + <enumerator name='ZFS_IOC_TMP_SNAPSHOT' value='23095'/> + <enumerator name='ZFS_IOC_OBJ_TO_STATS' value='23096'/> + <enumerator name='ZFS_IOC_SPACE_WRITTEN' value='23097'/> + <enumerator name='ZFS_IOC_SPACE_SNAPS' value='23098'/> + <enumerator name='ZFS_IOC_DESTROY_SNAPS' value='23099'/> + <enumerator name='ZFS_IOC_POOL_REGUID' value='23100'/> + <enumerator name='ZFS_IOC_POOL_REOPEN' value='23101'/> + <enumerator name='ZFS_IOC_SEND_PROGRESS' value='23102'/> + <enumerator name='ZFS_IOC_LOG_HISTORY' value='23103'/> + <enumerator name='ZFS_IOC_SEND_NEW' value='23104'/> + <enumerator name='ZFS_IOC_SEND_SPACE' value='23105'/> + <enumerator name='ZFS_IOC_CLONE' value='23106'/> + <enumerator name='ZFS_IOC_BOOKMARK' value='23107'/> + <enumerator name='ZFS_IOC_GET_BOOKMARKS' value='23108'/> + <enumerator name='ZFS_IOC_DESTROY_BOOKMARKS' value='23109'/> + <enumerator name='ZFS_IOC_RECV_NEW' value='23110'/> + <enumerator name='ZFS_IOC_POOL_SYNC' value='23111'/> + <enumerator name='ZFS_IOC_CHANNEL_PROGRAM' value='23112'/> + <enumerator name='ZFS_IOC_LOAD_KEY' value='23113'/> + <enumerator name='ZFS_IOC_UNLOAD_KEY' value='23114'/> + <enumerator name='ZFS_IOC_CHANGE_KEY' value='23115'/> + <enumerator name='ZFS_IOC_REMAP' value='23116'/> + <enumerator name='ZFS_IOC_POOL_CHECKPOINT' value='23117'/> + <enumerator name='ZFS_IOC_POOL_DISCARD_CHECKPOINT' value='23118'/> + <enumerator name='ZFS_IOC_POOL_INITIALIZE' value='23119'/> + <enumerator name='ZFS_IOC_POOL_TRIM' value='23120'/> + <enumerator name='ZFS_IOC_REDACT' value='23121'/> + <enumerator name='ZFS_IOC_GET_BOOKMARK_PROPS' value='23122'/> + <enumerator name='ZFS_IOC_WAIT' value='23123'/> + <enumerator name='ZFS_IOC_WAIT_FS' value='23124'/> + <enumerator name='ZFS_IOC_VDEV_GET_PROPS' value='23125'/> + <enumerator name='ZFS_IOC_VDEV_SET_PROPS' value='23126'/> + <enumerator name='ZFS_IOC_POOL_SCRUB' value='23127'/> + <enumerator name='ZFS_IOC_PLATFORM' value='23168'/> + <enumerator name='ZFS_IOC_EVENTS_NEXT' value='23169'/> + <enumerator name='ZFS_IOC_EVENTS_CLEAR' value='23170'/> + <enumerator name='ZFS_IOC_EVENTS_SEEK' value='23171'/> + <enumerator name='ZFS_IOC_NEXTBOOT' value='23172'/> + <enumerator name='ZFS_IOC_JAIL' value='23173'/> + <enumerator name='ZFS_IOC_USERNS_ATTACH' value='23173'/> + <enumerator name='ZFS_IOC_UNJAIL' value='23174'/> + <enumerator name='ZFS_IOC_USERNS_DETACH' value='23174'/> + <enumerator name='ZFS_IOC_SET_BOOTENV' value='23175'/> + <enumerator name='ZFS_IOC_GET_BOOTENV' value='23176'/> + <enumerator name='ZFS_IOC_LAST' value='23177'/> + </enum-decl> + <typedef-decl name='zfs_ioc_t' type-id='12033f13' id='5b35941c'/> <enum-decl name='zpool_wait_activity_t' naming-typedef-id='73446457' id='849338e3'> <underlying-type type-id='9cac1fee'/> <enumerator name='ZPOOL_WAIT_CKPT_DISCARD' value='0'/> @@ -3272,23 +5888,408 @@ <enumerator name='ZPOOL_WAIT_RESILVER' value='5'/> <enumerator name='ZPOOL_WAIT_SCRUB' value='6'/> <enumerator name='ZPOOL_WAIT_TRIM' value='7'/> - <enumerator name='ZPOOL_WAIT_NUM_ACTIVITIES' value='8'/> + <enumerator name='ZPOOL_WAIT_RAIDZ_EXPAND' value='8'/> + <enumerator name='ZPOOL_WAIT_NUM_ACTIVITIES' value='9'/> </enum-decl> <typedef-decl name='zpool_wait_activity_t' type-id='849338e3' id='73446457'/> - <qualified-type-def type-id='8e8d4be3' const='yes' id='693c3853'/> - <pointer-type-def type-id='693c3853' size-in-bits='64' id='22cce67b'/> + <enum-decl name='spa_feature' id='33ecb627'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='SPA_FEATURE_NONE' value='-1'/> + <enumerator name='SPA_FEATURE_ASYNC_DESTROY' value='0'/> + <enumerator name='SPA_FEATURE_EMPTY_BPOBJ' value='1'/> + <enumerator name='SPA_FEATURE_LZ4_COMPRESS' value='2'/> + <enumerator name='SPA_FEATURE_MULTI_VDEV_CRASH_DUMP' value='3'/> + <enumerator name='SPA_FEATURE_SPACEMAP_HISTOGRAM' value='4'/> + <enumerator name='SPA_FEATURE_ENABLED_TXG' value='5'/> + <enumerator name='SPA_FEATURE_HOLE_BIRTH' value='6'/> + <enumerator name='SPA_FEATURE_EXTENSIBLE_DATASET' value='7'/> + <enumerator name='SPA_FEATURE_EMBEDDED_DATA' value='8'/> + <enumerator name='SPA_FEATURE_BOOKMARKS' value='9'/> + <enumerator name='SPA_FEATURE_FS_SS_LIMIT' value='10'/> + <enumerator name='SPA_FEATURE_LARGE_BLOCKS' value='11'/> + <enumerator name='SPA_FEATURE_LARGE_DNODE' value='12'/> + <enumerator name='SPA_FEATURE_SHA512' value='13'/> + <enumerator name='SPA_FEATURE_SKEIN' value='14'/> + <enumerator name='SPA_FEATURE_EDONR' value='15'/> + <enumerator name='SPA_FEATURE_USEROBJ_ACCOUNTING' value='16'/> + <enumerator name='SPA_FEATURE_ENCRYPTION' value='17'/> + <enumerator name='SPA_FEATURE_PROJECT_QUOTA' value='18'/> + <enumerator name='SPA_FEATURE_DEVICE_REMOVAL' value='19'/> + <enumerator name='SPA_FEATURE_OBSOLETE_COUNTS' value='20'/> + <enumerator name='SPA_FEATURE_POOL_CHECKPOINT' value='21'/> + <enumerator name='SPA_FEATURE_SPACEMAP_V2' value='22'/> + <enumerator name='SPA_FEATURE_ALLOCATION_CLASSES' value='23'/> + <enumerator name='SPA_FEATURE_RESILVER_DEFER' value='24'/> + <enumerator name='SPA_FEATURE_BOOKMARK_V2' value='25'/> + <enumerator name='SPA_FEATURE_REDACTION_BOOKMARKS' value='26'/> + <enumerator name='SPA_FEATURE_REDACTED_DATASETS' value='27'/> + <enumerator name='SPA_FEATURE_BOOKMARK_WRITTEN' value='28'/> + <enumerator name='SPA_FEATURE_LOG_SPACEMAP' value='29'/> + <enumerator name='SPA_FEATURE_LIVELIST' value='30'/> + <enumerator name='SPA_FEATURE_DEVICE_REBUILD' value='31'/> + <enumerator name='SPA_FEATURE_ZSTD_COMPRESS' value='32'/> + <enumerator name='SPA_FEATURE_DRAID' value='33'/> + <enumerator name='SPA_FEATURE_ZILSAXATTR' value='34'/> + <enumerator name='SPA_FEATURE_HEAD_ERRLOG' value='35'/> + <enumerator name='SPA_FEATURE_BLAKE3' value='36'/> + <enumerator name='SPA_FEATURE_BLOCK_CLONING' value='37'/> + <enumerator name='SPA_FEATURE_AVZ_V2' value='38'/> + <enumerator name='SPA_FEATURE_REDACTION_LIST_SPILL' value='39'/> + <enumerator name='SPA_FEATURE_RAIDZ_EXPANSION' value='40'/> + <enumerator name='SPA_FEATURES' value='41'/> + </enum-decl> + <typedef-decl name='spa_feature_t' type-id='33ecb627' id='d6618c78'/> + <qualified-type-def type-id='22cce67b' const='yes' id='d2816df0'/> + <pointer-type-def type-id='d2816df0' size-in-bits='64' id='3bbfee2e'/> + <qualified-type-def type-id='b96825af' const='yes' id='2b61797f'/> + <pointer-type-def type-id='2b61797f' size-in-bits='64' id='9f7200cf'/> + <pointer-type-def type-id='d6618c78' size-in-bits='64' id='a8425263'/> + <qualified-type-def type-id='62f7a03d' restrict='yes' id='f1cadedf'/> <pointer-type-def type-id='a093cbb8' size-in-bits='64' id='b13f38c3'/> <pointer-type-def type-id='35acf840' size-in-bits='64' id='17f3480d'/> - <function-decl name='zpool_props_refresh' mangled-name='zpool_props_refresh' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_props_refresh'> - <parameter type-id='4c81de99' name='zhp'/> + <pointer-type-def type-id='688c495b' size-in-bits='64' id='cec6f2e4'/> + <pointer-type-def type-id='d11b7617' size-in-bits='64' id='23432aaa'/> + <function-decl name='zpool_get_handle' mangled-name='zpool_get_handle' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_handle'> + <parameter type-id='4c81de99'/> + <return type-id='b0382bb3'/> + </function-decl> + <function-decl name='zpool_prop_to_name' mangled-name='zpool_prop_to_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_to_name'> + <parameter type-id='5d0c23fb'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='vdev_prop_to_name' mangled-name='vdev_prop_to_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_to_name'> + <parameter type-id='5aa5c90c'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='vdev_prop_user' mangled-name='vdev_prop_user' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_user'> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zpool_get_status' mangled-name='zpool_get_status' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_status'> + <parameter type-id='4c81de99'/> + <parameter type-id='7d3cd834'/> + <parameter type-id='cec6f2e4'/> + <return type-id='d3dd6294'/> + </function-decl> + <function-decl name='zpool_prop_default_string' mangled-name='zpool_prop_default_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_default_string'> + <parameter type-id='5d0c23fb'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='zpool_prop_default_numeric' mangled-name='zpool_prop_default_numeric' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_default_numeric'> + <parameter type-id='5d0c23fb'/> + <return type-id='9c313c2d'/> + </function-decl> + <function-decl name='libzfs_envvar_is_set' mangled-name='libzfs_envvar_is_set' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libzfs_envvar_is_set'> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='lzc_initialize' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='7063e1ab'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='857bb57e'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zpool_get_prop_int' mangled-name='zpool_get_prop_int' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_prop_int'> - <parameter type-id='4c81de99' name='zhp'/> - <parameter type-id='5d0c23fb' name='prop'/> - <parameter type-id='debc6aa3' name='src'/> + <function-decl name='lzc_trim' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='b1146b8d'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_sync' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_reopen' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='c19b74c3'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_pool_checkpoint' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_pool_checkpoint_discard' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_wait' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='73446457'/> + <parameter type-id='37e3bd22'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_wait_tag' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='73446457'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='37e3bd22'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_set_bootenv' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='22cce67b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_get_bootenv' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_get_vdev_prop' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_set_vdev_prop' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_scrub' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5b35941c'/> + <parameter type-id='80f4b756'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_resolve_shortname' mangled-name='zfs_resolve_shortname' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_resolve_shortname'> + <parameter type-id='80f4b756'/> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_strip_partition' mangled-name='zfs_strip_partition' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_strip_partition'> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='zfs_strip_path' mangled-name='zfs_strip_path' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_strip_path'> + <parameter type-id='80f4b756'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='zfs_strcmp_pathname' mangled-name='zfs_strcmp_pathname' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_strcmp_pathname'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zpool_history_unpack' mangled-name='zpool_history_unpack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_history_unpack'> + <parameter type-id='26a90f95'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='5d6479ae'/> + <parameter type-id='75be733c'/> + <parameter type-id='4dd26a40'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_basename' mangled-name='zfs_basename' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_basename'> + <parameter type-id='80f4b756'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='zpool_name_to_prop' mangled-name='zpool_name_to_prop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_name_to_prop'> + <parameter type-id='80f4b756'/> + <return type-id='5d0c23fb'/> + </function-decl> + <function-decl name='zpool_prop_readonly' mangled-name='zpool_prop_readonly' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_readonly'> + <parameter type-id='5d0c23fb'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zpool_prop_setonce' mangled-name='zpool_prop_setonce' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_setonce'> + <parameter type-id='5d0c23fb'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zpool_prop_feature' mangled-name='zpool_prop_feature' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_feature'> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zpool_prop_index_to_string' mangled-name='zpool_prop_index_to_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_index_to_string'> + <parameter type-id='5d0c23fb'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='7d3cd834'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='vdev_name_to_prop' mangled-name='vdev_name_to_prop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_name_to_prop'> + <parameter type-id='80f4b756'/> + <return type-id='5aa5c90c'/> + </function-decl> + <function-decl name='vdev_prop_default_string' mangled-name='vdev_prop_default_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_default_string'> + <parameter type-id='5aa5c90c'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='vdev_prop_default_numeric' mangled-name='vdev_prop_default_numeric' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_default_numeric'> + <parameter type-id='5aa5c90c'/> <return type-id='9c313c2d'/> </function-decl> + <function-decl name='vdev_prop_readonly' mangled-name='vdev_prop_readonly' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_readonly'> + <parameter type-id='5aa5c90c'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='vdev_prop_index_to_string' mangled-name='vdev_prop_index_to_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_index_to_string'> + <parameter type-id='5aa5c90c'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='7d3cd834'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zpool_prop_vdev' mangled-name='zpool_prop_vdev' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_vdev'> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='nvlist_add_nvpair' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='3fa542f0'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint8_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9f7200cf'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_nvlist_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='3bbfee2e'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='3fa542f0'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fnvlist_add_boolean_value' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='c19b74c3'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_int64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9da381c4'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_nvlist_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='3bbfee2e'/> + <parameter type-id='3502e3ff'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_lookup_uint64_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='4dd26a40'/> + <return type-id='5d6479ae'/> + </function-decl> + <function-decl name='fnvpair_value_int64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='dace003f'/> + <return type-id='9da381c4'/> + </function-decl> + <function-decl name='fnvpair_value_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='dace003f'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='zfeature_is_supported' mangled-name='zfeature_is_supported' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfeature_is_supported'> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zfeature_lookup_guid' mangled-name='zfeature_lookup_guid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfeature_lookup_guid'> + <parameter type-id='80f4b756'/> + <parameter type-id='a8425263'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfeature_lookup_name' mangled-name='zfeature_lookup_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfeature_lookup_name'> + <parameter type-id='80f4b756'/> + <parameter type-id='a8425263'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zpool_get_load_policy' mangled-name='zpool_get_load_policy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_load_policy'> + <parameter type-id='5ce45b60'/> + <parameter type-id='23432aaa'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='pool_namecheck' mangled-name='pool_namecheck' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='pool_namecheck'> + <parameter type-id='80f4b756'/> + <parameter type-id='053457bd'/> + <parameter type-id='26a90f95'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zpool_prop_get_type' mangled-name='zpool_prop_get_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_get_type'> + <parameter type-id='5d0c23fb'/> + <return type-id='31429eff'/> + </function-decl> + <function-decl name='vdev_prop_get_type' mangled-name='vdev_prop_get_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_get_type'> + <parameter type-id='5aa5c90c'/> + <return type-id='31429eff'/> + </function-decl> + <function-decl name='get_system_hostid' mangled-name='get_system_hostid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='get_system_hostid'> + <return type-id='7359adad'/> + </function-decl> + <function-decl name='strtoull' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='8c85230f'/> + <parameter type-id='95e97e5e'/> + <return type-id='3a47d82b'/> + </function-decl> + <function-decl name='memcmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strtok_r' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='266fe297'/> + <parameter type-id='9d26089a'/> + <parameter type-id='8c85230f'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='__realpath_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='266fe297'/> + <parameter type-id='b59d7dce'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='munmap' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='stat64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='f1cadedf'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zpool_standard_error' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zpool_standard_error_fmt' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zpool_relabel_disk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zpool_props_refresh' mangled-name='zpool_props_refresh' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_props_refresh'> + <parameter type-id='4c81de99' name='zhp'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='zpool_state_to_name' mangled-name='zpool_state_to_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_state_to_name'> <parameter type-id='35acf840' name='state'/> <parameter type-id='9d774e0b' name='aux'/> @@ -3302,13 +6303,12 @@ <parameter type-id='4c81de99' name='zhp'/> <return type-id='80f4b756'/> </function-decl> - <function-decl name='zpool_get_prop' mangled-name='zpool_get_prop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_prop'> + <function-decl name='zpool_get_userprop' mangled-name='zpool_get_userprop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_userprop'> <parameter type-id='4c81de99' name='zhp'/> - <parameter type-id='5d0c23fb' name='prop'/> + <parameter type-id='80f4b756' name='propname'/> <parameter type-id='26a90f95' name='buf'/> <parameter type-id='b59d7dce' name='len'/> <parameter type-id='debc6aa3' name='srctype'/> - <parameter type-id='c19b74c3' name='literal'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='zpool_set_prop' mangled-name='zpool_set_prop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_set_prop'> @@ -3330,31 +6330,6 @@ <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_open_canfail' mangled-name='zpool_open_canfail' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_open_canfail'> - <parameter type-id='b0382bb3' name='hdl'/> - <parameter type-id='80f4b756' name='pool'/> - <return type-id='4c81de99'/> - </function-decl> - <function-decl name='zpool_open' mangled-name='zpool_open' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_open'> - <parameter type-id='b0382bb3' name='hdl'/> - <parameter type-id='80f4b756' name='pool'/> - <return type-id='4c81de99'/> - </function-decl> - <function-decl name='zpool_close' mangled-name='zpool_close' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_close'> - <parameter type-id='4c81de99' name='zhp'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='zpool_get_name' mangled-name='zpool_get_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_name'> - <parameter type-id='4c81de99' name='zhp'/> - <return type-id='80f4b756'/> - </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'/> @@ -3387,6 +6362,7 @@ <function-decl name='zpool_add' mangled-name='zpool_add' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_add'> <parameter type-id='4c81de99' name='zhp'/> <parameter type-id='5ce45b60' name='nvroot'/> + <parameter type-id='c19b74c3' name='ashift_check'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='zpool_export' mangled-name='zpool_export' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_export'> @@ -3467,12 +6443,6 @@ <parameter type-id='37e3bd22' name='log'/> <return type-id='5ce45b60'/> </function-decl> - <function-decl name='zpool_get_physpath' mangled-name='zpool_get_physpath' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_physpath'> - <parameter type-id='4c81de99' name='zhp'/> - <parameter type-id='26a90f95' name='physpath'/> - <parameter type-id='b59d7dce' name='phypath_size'/> - <return type-id='95e97e5e'/> - </function-decl> <function-decl name='zpool_vdev_path_to_guid' mangled-name='zpool_vdev_path_to_guid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_vdev_path_to_guid'> <parameter type-id='4c81de99' name='zhp'/> <parameter type-id='80f4b756' name='path'/> @@ -3491,6 +6461,11 @@ <parameter type-id='c19b74c3' name='istmp'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='zpool_vdev_remove_wanted' mangled-name='zpool_vdev_remove_wanted' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_vdev_remove_wanted'> + <parameter type-id='4c81de99' name='zhp'/> + <parameter type-id='80f4b756' name='path'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='zpool_vdev_fault' mangled-name='zpool_vdev_fault' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_vdev_fault'> <parameter type-id='4c81de99' name='zhp'/> <parameter type-id='9c313c2d' name='guid'/> @@ -3503,6 +6478,12 @@ <parameter type-id='9d774e0b' name='aux'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='zpool_vdev_set_removed_state' mangled-name='zpool_vdev_set_removed_state' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_vdev_set_removed_state'> + <parameter type-id='4c81de99' name='zhp'/> + <parameter type-id='9c313c2d' name='guid'/> + <parameter type-id='9d774e0b' name='aux'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='zpool_vdev_attach' mangled-name='zpool_vdev_attach' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_vdev_attach'> <parameter type-id='4c81de99' name='zhp'/> <parameter type-id='80f4b756' name='old_disk'/> @@ -3701,7 +6682,40 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/libzfs_sendrecv.c' language='LANG_C99'> - <class-decl name='sendflags' size-in-bits='544' is-struct='yes' visibility='default' id='f6aa15be'> + <array-type-def dimensions='1' type-id='8901473c' size-in-bits='576' id='f5da478b'> + <subrange length='1' type-id='7359adad' id='52f813b4'/> + </array-type-def> + <array-type-def dimensions='1' type-id='95e97e5e' size-in-bits='384' id='73b82f0f'> + <subrange length='12' type-id='7359adad' id='84827bdc'/> + </array-type-def> + <array-type-def dimensions='1' type-id='bd54fe1a' size-in-bits='512' id='5d4efd44'> + <subrange length='8' type-id='7359adad' id='56e0c0b1'/> + </array-type-def> + <array-type-def dimensions='1' type-id='9c313c2d' size-in-bits='2176' id='8c2bcad1'> + <subrange length='34' type-id='7359adad' id='6a6a7e00'/> + </array-type-def> + <array-type-def dimensions='1' type-id='9c313c2d' size-in-bits='256' id='85c64d26'> + <subrange length='4' type-id='7359adad' id='16fe7105'/> + </array-type-def> + <array-type-def dimensions='1' type-id='b96825af' size-in-bits='96' id='fa8ef949'> + <subrange length='12' type-id='7359adad' id='84827bdc'/> + </array-type-def> + <array-type-def dimensions='1' type-id='b96825af' size-in-bits='128' id='fa9986a5'> + <subrange length='16' type-id='7359adad' id='848d0938'/> + </array-type-def> + <array-type-def dimensions='1' type-id='b96825af' size-in-bits='40' id='0f4ddd0b'> + <subrange length='5' type-id='7359adad' id='53010e10'/> + </array-type-def> + <array-type-def dimensions='1' type-id='b96825af' size-in-bits='48' id='0f562bd0'> + <subrange length='6' type-id='7359adad' id='52fa524b'/> + </array-type-def> + <array-type-def dimensions='1' type-id='b96825af' size-in-bits='64' id='13339fda'> + <subrange length='8' type-id='7359adad' id='56e0c0b1'/> + </array-type-def> + <array-type-def dimensions='1' type-id='eaa32e2f' size-in-bits='256' id='209ef23f'> + <subrange length='4' type-id='7359adad' id='16fe7105'/> + </array-type-def> + <class-decl name='sendflags' size-in-bits='576' is-struct='yes' visibility='default' id='f6aa15be'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='verbosity' type-id='95e97e5e' visibility='default'/> </data-member> @@ -3733,30 +6747,33 @@ <var-decl name='progress' type-id='c19b74c3' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='largeblock' type-id='c19b74c3' visibility='default'/> + <var-decl name='progressastitle' type-id='c19b74c3' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='embed_data' type-id='c19b74c3' visibility='default'/> + <var-decl name='largeblock' type-id='c19b74c3' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='compress' type-id='c19b74c3' visibility='default'/> + <var-decl name='embed_data' type-id='c19b74c3' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='416'> - <var-decl name='raw' type-id='c19b74c3' visibility='default'/> + <var-decl name='compress' type-id='c19b74c3' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='backup' type-id='c19b74c3' visibility='default'/> + <var-decl name='raw' type-id='c19b74c3' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='holds' type-id='c19b74c3' visibility='default'/> + <var-decl name='backup' type-id='c19b74c3' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='holds' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='544'> <var-decl name='saved' type-id='c19b74c3' visibility='default'/> </data-member> </class-decl> <typedef-decl name='sendflags_t' type-id='f6aa15be' id='945467e6'/> <typedef-decl name='snapfilter_cb_t' type-id='d2a5e211' id='3d3ffb69'/> - <class-decl name='recvflags' size-in-bits='416' is-struct='yes' visibility='default' id='34a384dc'> + <class-decl name='recvflags' size-in-bits='448' is-struct='yes' visibility='default' id='34a384dc'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='verbose' type-id='c19b74c3' visibility='default'/> </data-member> @@ -3796,12 +6813,791 @@ <data-member access='public' layout-offset-in-bits='384'> <var-decl name='forceunmount' type-id='c19b74c3' visibility='default'/> </data-member> + <data-member access='public' layout-offset-in-bits='416'> + <var-decl name='heal' type-id='c19b74c3' visibility='default'/> + </data-member> </class-decl> <typedef-decl name='recvflags_t' type-id='34a384dc' id='9e59d1d4'/> - <pointer-type-def type-id='f20fbd51' size-in-bits='64' id='a3681dea'/> + <enum-decl name='lzc_send_flags' id='bfbd3c8e'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='LZC_SEND_FLAG_EMBED_DATA' value='1'/> + <enumerator name='LZC_SEND_FLAG_LARGE_BLOCK' value='2'/> + <enumerator name='LZC_SEND_FLAG_COMPRESS' value='4'/> + <enumerator name='LZC_SEND_FLAG_RAW' value='8'/> + <enumerator name='LZC_SEND_FLAG_SAVED' value='16'/> + </enum-decl> + <class-decl name='ddt_key_t' size-in-bits='320' is-struct='yes' naming-typedef-id='67f6d2cf' visibility='default' id='5fae1718'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='ddk_cksum' type-id='39730d0b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='ddk_prop' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='ddt_key_t' type-id='5fae1718' id='67f6d2cf'/> + <enum-decl name='dmu_object_type' id='04b3b0b9'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='DMU_OT_NONE' value='0'/> + <enumerator name='DMU_OT_OBJECT_DIRECTORY' value='1'/> + <enumerator name='DMU_OT_OBJECT_ARRAY' value='2'/> + <enumerator name='DMU_OT_PACKED_NVLIST' value='3'/> + <enumerator name='DMU_OT_PACKED_NVLIST_SIZE' value='4'/> + <enumerator name='DMU_OT_BPOBJ' value='5'/> + <enumerator name='DMU_OT_BPOBJ_HDR' value='6'/> + <enumerator name='DMU_OT_SPACE_MAP_HEADER' value='7'/> + <enumerator name='DMU_OT_SPACE_MAP' value='8'/> + <enumerator name='DMU_OT_INTENT_LOG' value='9'/> + <enumerator name='DMU_OT_DNODE' value='10'/> + <enumerator name='DMU_OT_OBJSET' value='11'/> + <enumerator name='DMU_OT_DSL_DIR' value='12'/> + <enumerator name='DMU_OT_DSL_DIR_CHILD_MAP' value='13'/> + <enumerator name='DMU_OT_DSL_DS_SNAP_MAP' value='14'/> + <enumerator name='DMU_OT_DSL_PROPS' value='15'/> + <enumerator name='DMU_OT_DSL_DATASET' value='16'/> + <enumerator name='DMU_OT_ZNODE' value='17'/> + <enumerator name='DMU_OT_OLDACL' value='18'/> + <enumerator name='DMU_OT_PLAIN_FILE_CONTENTS' value='19'/> + <enumerator name='DMU_OT_DIRECTORY_CONTENTS' value='20'/> + <enumerator name='DMU_OT_MASTER_NODE' value='21'/> + <enumerator name='DMU_OT_UNLINKED_SET' value='22'/> + <enumerator name='DMU_OT_ZVOL' value='23'/> + <enumerator name='DMU_OT_ZVOL_PROP' value='24'/> + <enumerator name='DMU_OT_PLAIN_OTHER' value='25'/> + <enumerator name='DMU_OT_UINT64_OTHER' value='26'/> + <enumerator name='DMU_OT_ZAP_OTHER' value='27'/> + <enumerator name='DMU_OT_ERROR_LOG' value='28'/> + <enumerator name='DMU_OT_SPA_HISTORY' value='29'/> + <enumerator name='DMU_OT_SPA_HISTORY_OFFSETS' value='30'/> + <enumerator name='DMU_OT_POOL_PROPS' value='31'/> + <enumerator name='DMU_OT_DSL_PERMS' value='32'/> + <enumerator name='DMU_OT_ACL' value='33'/> + <enumerator name='DMU_OT_SYSACL' value='34'/> + <enumerator name='DMU_OT_FUID' value='35'/> + <enumerator name='DMU_OT_FUID_SIZE' value='36'/> + <enumerator name='DMU_OT_NEXT_CLONES' value='37'/> + <enumerator name='DMU_OT_SCAN_QUEUE' value='38'/> + <enumerator name='DMU_OT_USERGROUP_USED' value='39'/> + <enumerator name='DMU_OT_USERGROUP_QUOTA' value='40'/> + <enumerator name='DMU_OT_USERREFS' value='41'/> + <enumerator name='DMU_OT_DDT_ZAP' value='42'/> + <enumerator name='DMU_OT_DDT_STATS' value='43'/> + <enumerator name='DMU_OT_SA' value='44'/> + <enumerator name='DMU_OT_SA_MASTER_NODE' value='45'/> + <enumerator name='DMU_OT_SA_ATTR_REGISTRATION' value='46'/> + <enumerator name='DMU_OT_SA_ATTR_LAYOUTS' value='47'/> + <enumerator name='DMU_OT_SCAN_XLATE' value='48'/> + <enumerator name='DMU_OT_DEDUP' value='49'/> + <enumerator name='DMU_OT_DEADLIST' value='50'/> + <enumerator name='DMU_OT_DEADLIST_HDR' value='51'/> + <enumerator name='DMU_OT_DSL_CLONES' value='52'/> + <enumerator name='DMU_OT_BPOBJ_SUBOBJ' value='53'/> + <enumerator name='DMU_OT_NUMTYPES' value='54'/> + <enumerator name='DMU_OTN_UINT8_DATA' value='128'/> + <enumerator name='DMU_OTN_UINT8_METADATA' value='192'/> + <enumerator name='DMU_OTN_UINT16_DATA' value='129'/> + <enumerator name='DMU_OTN_UINT16_METADATA' value='193'/> + <enumerator name='DMU_OTN_UINT32_DATA' value='130'/> + <enumerator name='DMU_OTN_UINT32_METADATA' value='194'/> + <enumerator name='DMU_OTN_UINT64_DATA' value='131'/> + <enumerator name='DMU_OTN_UINT64_METADATA' value='195'/> + <enumerator name='DMU_OTN_ZAP_DATA' value='132'/> + <enumerator name='DMU_OTN_ZAP_METADATA' value='196'/> + <enumerator name='DMU_OTN_UINT8_ENC_DATA' value='160'/> + <enumerator name='DMU_OTN_UINT8_ENC_METADATA' value='224'/> + <enumerator name='DMU_OTN_UINT16_ENC_DATA' value='161'/> + <enumerator name='DMU_OTN_UINT16_ENC_METADATA' value='225'/> + <enumerator name='DMU_OTN_UINT32_ENC_DATA' value='162'/> + <enumerator name='DMU_OTN_UINT32_ENC_METADATA' value='226'/> + <enumerator name='DMU_OTN_UINT64_ENC_DATA' value='163'/> + <enumerator name='DMU_OTN_UINT64_ENC_METADATA' value='227'/> + <enumerator name='DMU_OTN_ZAP_ENC_DATA' value='164'/> + <enumerator name='DMU_OTN_ZAP_ENC_METADATA' value='228'/> + </enum-decl> + <typedef-decl name='dmu_object_type_t' type-id='04b3b0b9' id='5c9d8906'/> + <class-decl name='zio_cksum' size-in-bits='256' is-struct='yes' visibility='default' id='1d53e28b'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='zc_word' type-id='85c64d26' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='zio_cksum_t' type-id='1d53e28b' id='39730d0b'/> + <class-decl name='dmu_replay_record' size-in-bits='2496' is-struct='yes' visibility='default' id='781a52d7'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_type' type-id='08f5ca17' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='drr_payloadlen' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='drr_u' type-id='ac5ab598' visibility='default'/> + </data-member> + </class-decl> + <enum-decl name='__anonymous_enum__' is-anonymous='yes' id='08f5ca17'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='DRR_BEGIN' value='0'/> + <enumerator name='DRR_OBJECT' value='1'/> + <enumerator name='DRR_FREEOBJECTS' value='2'/> + <enumerator name='DRR_WRITE' value='3'/> + <enumerator name='DRR_FREE' value='4'/> + <enumerator name='DRR_END' value='5'/> + <enumerator name='DRR_WRITE_BYREF' value='6'/> + <enumerator name='DRR_SPILL' value='7'/> + <enumerator name='DRR_WRITE_EMBEDDED' value='8'/> + <enumerator name='DRR_OBJECT_RANGE' value='9'/> + <enumerator name='DRR_REDACT' value='10'/> + <enumerator name='DRR_NUMTYPES' value='11'/> + </enum-decl> + <union-decl name='__anonymous_union__' size-in-bits='2432' is-anonymous='yes' visibility='default' id='ac5ab598'> + <data-member access='public'> + <var-decl name='drr_begin' type-id='09fcdc01' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='drr_end' type-id='6ee25631' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='drr_object' type-id='f9ad530b' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='drr_freeobjects' type-id='a27d958e' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='drr_write' type-id='4cc69e4b' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='drr_free' type-id='c836cfd2' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='drr_write_byref' type-id='e511cdce' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='drr_spill' type-id='1e69a80a' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='drr_write_embedded' type-id='98b1345e' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='drr_object_range' type-id='aba1f9e1' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='drr_redact' type-id='50389039' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='drr_checksum' type-id='a5fe3647' visibility='default'/> + </data-member> + </union-decl> + <class-decl name='drr_end' size-in-bits='320' is-struct='yes' visibility='default' id='6ee25631'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_checksum' type-id='39730d0b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='drr_object' size-in-bits='448' is-struct='yes' visibility='default' id='f9ad530b'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_object' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='drr_type' type-id='5c9d8906' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='drr_bonustype' type-id='5c9d8906' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='drr_blksz' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='160'> + <var-decl name='drr_bonuslen' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='drr_checksumtype' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='200'> + <var-decl name='drr_compress' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='208'> + <var-decl name='drr_dn_slots' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='216'> + <var-decl name='drr_flags' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='224'> + <var-decl name='drr_raw_bonuslen' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='drr_indblkshift' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='328'> + <var-decl name='drr_nlevels' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='336'> + <var-decl name='drr_nblkptr' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='344'> + <var-decl name='drr_pad' type-id='0f4ddd0b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='drr_maxblkid' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='drr_freeobjects' size-in-bits='192' is-struct='yes' visibility='default' id='a27d958e'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_firstobj' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='drr_numobjs' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='drr_write' size-in-bits='1088' is-struct='yes' visibility='default' id='4cc69e4b'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_object' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='drr_type' type-id='5c9d8906' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='drr_pad' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='drr_offset' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='drr_logical_size' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='drr_checksumtype' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='328'> + <var-decl name='drr_flags' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='336'> + <var-decl name='drr_compressiontype' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='344'> + <var-decl name='drr_pad2' type-id='0f4ddd0b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='drr_key' type-id='67f6d2cf' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='704'> + <var-decl name='drr_compressed_size' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='768'> + <var-decl name='drr_salt' type-id='13339fda' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='832'> + <var-decl name='drr_iv' type-id='fa8ef949' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='928'> + <var-decl name='drr_mac' type-id='fa9986a5' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='drr_free' size-in-bits='256' is-struct='yes' visibility='default' id='c836cfd2'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_object' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='drr_offset' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='drr_length' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='drr_write_byref' size-in-bits='832' is-struct='yes' visibility='default' id='e511cdce'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_object' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='drr_offset' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='drr_length' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='drr_refguid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='drr_refobject' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='drr_refoffset' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='drr_checksumtype' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='456'> + <var-decl name='drr_flags' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='464'> + <var-decl name='drr_pad2' type-id='0f562bd0' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='drr_key' type-id='67f6d2cf' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='drr_spill' size-in-bits='640' is-struct='yes' visibility='default' id='1e69a80a'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_object' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='drr_length' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='drr_flags' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='200'> + <var-decl name='drr_compressiontype' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='208'> + <var-decl name='drr_pad' type-id='0f562bd0' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='drr_compressed_size' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='drr_salt' type-id='13339fda' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='drr_iv' type-id='fa8ef949' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='480'> + <var-decl name='drr_mac' type-id='fa9986a5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='608'> + <var-decl name='drr_type' type-id='5c9d8906' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='drr_write_embedded' size-in-bits='384' is-struct='yes' visibility='default' id='98b1345e'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_object' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='drr_offset' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='drr_length' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='drr_compression' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='264'> + <var-decl name='drr_etype' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='272'> + <var-decl name='drr_pad' type-id='0f562bd0' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='drr_lsize' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='352'> + <var-decl name='drr_psize' type-id='8f92235e' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='drr_object_range' size-in-bits='512' is-struct='yes' visibility='default' id='aba1f9e1'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_firstobj' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='drr_numslots' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='drr_salt' type-id='13339fda' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='drr_iv' type-id='fa8ef949' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='352'> + <var-decl name='drr_mac' type-id='fa9986a5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='480'> + <var-decl name='drr_flags' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='488'> + <var-decl name='drr_pad' type-id='d3490169' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='drr_redact' size-in-bits='256' is-struct='yes' visibility='default' id='50389039'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_object' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='drr_offset' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='drr_length' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='drr_checksum' size-in-bits='2432' is-struct='yes' visibility='default' id='a5fe3647'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='drr_pad' type-id='8c2bcad1' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2176'> + <var-decl name='drr_checksum' type-id='39730d0b' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='__cancel_jmp_buf_tag' size-in-bits='576' is-struct='yes' visibility='default' id='8901473c'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='__cancel_jmp_buf' type-id='379a1ab7' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='__mask_was_saved' type-id='95e97e5e' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='__pthread_unwind_buf_t' size-in-bits='832' is-struct='yes' naming-typedef-id='4423cf7f' visibility='default' id='a0abc656'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='__cancel_jmp_buf' type-id='f5da478b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='__pad' type-id='209ef23f' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='__pthread_unwind_buf_t' type-id='a0abc656' id='4423cf7f'/> + <typedef-decl name='__jmp_buf' type-id='5d4efd44' id='379a1ab7'/> + <typedef-decl name='__clockid_t' type-id='95e97e5e' id='08f9a87a'/> + <typedef-decl name='__timer_t' type-id='eaa32e2f' id='df209b60'/> + <typedef-decl name='clockid_t' type-id='08f9a87a' id='a1c3b834'/> + <class-decl name='sigevent' size-in-bits='512' is-struct='yes' visibility='default' id='519bc206'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='sigev_value' type-id='eabacd01' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='sigev_signo' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='sigev_notify' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='_sigev_un' type-id='ac5ab599' visibility='default'/> + </data-member> + </class-decl> + <union-decl name='__anonymous_union__1' size-in-bits='384' is-anonymous='yes' visibility='default' id='ac5ab599'> + <data-member access='public'> + <var-decl name='_pad' type-id='73b82f0f' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='_tid' type-id='3629bad8' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='_sigev_thread' type-id='e7f43f7b' visibility='default'/> + </data-member> + </union-decl> + <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' id='e7f43f7b'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='_function' type-id='5f147c28' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='_attribute' type-id='7347a39e' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='itimerspec' size-in-bits='256' is-struct='yes' visibility='default' id='acbdbcc6'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='it_interval' type-id='a9c79a1f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='it_value' type-id='a9c79a1f' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='timer_t' type-id='df209b60' id='b07ae406'/> + <typedef-decl name='Byte' type-id='002ac4a6' id='efb9ba06'/> + <typedef-decl name='uLong' type-id='7359adad' id='5bbcce85'/> + <typedef-decl name='Bytef' type-id='efb9ba06' id='c1606520'/> + <typedef-decl name='uLongf' type-id='5bbcce85' id='4d39af59'/> + <pointer-type-def type-id='c1606520' size-in-bits='64' id='4c667223'/> + <pointer-type-def type-id='8901473c' size-in-bits='64' id='eb91b7ea'/> + <pointer-type-def type-id='4423cf7f' size-in-bits='64' id='ba7c727c'/> + <pointer-type-def type-id='b9c97942' size-in-bits='64' id='bbf06c47'/> + <qualified-type-def type-id='bbf06c47' restrict='yes' id='65e6ec45'/> + <qualified-type-def type-id='c1606520' const='yes' id='a6124a50'/> + <pointer-type-def type-id='a6124a50' size-in-bits='64' id='e8cb3e0e'/> + <qualified-type-def type-id='b9c97942' const='yes' id='191f6b72'/> + <pointer-type-def type-id='191f6b72' size-in-bits='64' id='e475fb88'/> + <qualified-type-def type-id='e475fb88' restrict='yes' id='5a8729d0'/> + <qualified-type-def type-id='781a52d7' const='yes' id='413ab2b8'/> + <pointer-type-def type-id='413ab2b8' size-in-bits='64' id='41671bd6'/> + <qualified-type-def type-id='acbdbcc6' const='yes' id='4ba62af7'/> + <pointer-type-def type-id='4ba62af7' size-in-bits='64' id='f39579e7'/> + <qualified-type-def type-id='f39579e7' restrict='yes' id='9b23e165'/> + <pointer-type-def type-id='c70fa2e8' size-in-bits='64' id='2e711a2a'/> + <pointer-type-def type-id='3ff5601b' size-in-bits='64' id='4aafb922'/> + <pointer-type-def type-id='acbdbcc6' size-in-bits='64' id='116842ac'/> + <qualified-type-def type-id='116842ac' restrict='yes' id='3d3c4cf4'/> <pointer-type-def type-id='9e59d1d4' size-in-bits='64' id='4ea84b4f'/> <pointer-type-def type-id='945467e6' size-in-bits='64' id='8def7735'/> + <pointer-type-def type-id='519bc206' size-in-bits='64' id='ef2f159c'/> + <qualified-type-def type-id='ef2f159c' restrict='yes' id='de0eb5a4'/> <pointer-type-def type-id='3d3ffb69' size-in-bits='64' id='72a26210'/> + <pointer-type-def type-id='c9d12d66' size-in-bits='64' id='b2eb2c3f'/> + <pointer-type-def type-id='b07ae406' size-in-bits='64' id='36e89359'/> + <qualified-type-def type-id='36e89359' restrict='yes' id='de98c2bb'/> + <pointer-type-def type-id='a9c79a1f' size-in-bits='64' id='3d83ba87'/> + <pointer-type-def type-id='4d39af59' size-in-bits='64' id='60db3356'/> + <pointer-type-def type-id='f1abb096' size-in-bits='64' id='5f147c28'/> + <pointer-type-def type-id='39730d0b' size-in-bits='64' id='c24fc2ee'/> + <function-decl name='nvlist_print' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zfs_get_pool_handle' mangled-name='zfs_get_pool_handle' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_get_pool_handle'> + <parameter type-id='fcd57163'/> + <return type-id='4c81de99'/> + </function-decl> + <function-decl name='lzc_send_wrapper' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='2e711a2a'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_send_redacted' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='bfbd3c8e'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_send_resume_redacted' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='bfbd3c8e'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_receive_with_cmdprops' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='ae3e8ca6'/> + <parameter type-id='3502e3ff'/> + <parameter type-id='80f4b756'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='41671bd6'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='5d6479ae'/> + <parameter type-id='5d6479ae'/> + <parameter type-id='5d6479ae'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_receive_with_heal' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='ae3e8ca6'/> + <parameter type-id='3502e3ff'/> + <parameter type-id='80f4b756'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='41671bd6'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='5d6479ae'/> + <parameter type-id='5d6479ae'/> + <parameter type-id='5d6479ae'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_send_space' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='bfbd3c8e'/> + <parameter type-id='5d6479ae'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_send_space_resume_redacted' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='bfbd3c8e'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='5d6479ae'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzc_rename' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_setproctitle' mangled-name='zfs_setproctitle' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_setproctitle'> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='avl_insert' mangled-name='avl_insert' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_insert'> + <parameter type-id='a3681dea'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='fba6cb51'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='nvlist_add_boolean' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_boolean' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvpair_value_int32' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='dace003f'/> + <parameter type-id='4aafb922'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fnvlist_size' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='fnvlist_merge' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_remove' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_lookup_boolean_value' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='fletcher_4_native_varsize' mangled-name='fletcher_4_native_varsize' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_4_native_varsize'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='c24fc2ee'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fletcher_4_incremental_native' mangled-name='fletcher_4_incremental_native' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_4_incremental_native'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fletcher_4_incremental_byteswap' mangled-name='fletcher_4_incremental_byteswap' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_4_incremental_byteswap'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_exit' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__pthread_register_cancel' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='ba7c727c'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__pthread_unwind_next' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='ba7c727c'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='sigaddset' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9e80f729'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='perror' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='strndup' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='time' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b2eb2c3f'/> + <return type-id='c9d12d66'/> + </function-decl> + <function-decl name='clock_gettime' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a1c3b834'/> + <parameter type-id='3d83ba87'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='timer_create' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a1c3b834'/> + <parameter type-id='de0eb5a4'/> + <parameter type-id='de98c2bb'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='timer_delete' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b07ae406'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='timer_settime' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b07ae406'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9b23e165'/> + <parameter type-id='3d3c4cf4'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='write' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <return type-id='79a0948f'/> + </function-decl> + <function-decl name='pause' visibility='default' binding='global' size-in-bits='64'> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_sigmask' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='5a8729d0'/> + <parameter type-id='65e6ec45'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='uncompress' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='4c667223'/> + <parameter type-id='60db3356'/> + <parameter type-id='e8cb3e0e'/> + <parameter type-id='5bbcce85'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='create_parents' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='26a90f95'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='zfs_send_progress' mangled-name='zfs_send_progress' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_send_progress'> <parameter type-id='9200a744' name='zhp'/> <parameter type-id='95e97e5e' name='fd'/> @@ -3856,78 +7652,48 @@ <parameter type-id='a3681dea' name='stream_avl'/> <return type-id='95e97e5e'/> </function-decl> + <function-type size-in-bits='64' id='c70fa2e8'> + <parameter type-id='95e97e5e'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-type> <function-type size-in-bits='64' id='d2a5e211'> <parameter type-id='9200a744'/> <parameter type-id='eaa32e2f'/> <return type-id='c19b74c3'/> </function-type> + <function-type size-in-bits='64' id='f1abb096'> + <parameter type-id='eabacd01'/> + <return type-id='48b5725f'/> + </function-type> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/libzfs_status.c' language='LANG_C99'> - <enum-decl name='zpool_status_t' naming-typedef-id='d3dd6294' id='5e770b40'> - <underlying-type type-id='9cac1fee'/> - <enumerator name='ZPOOL_STATUS_CORRUPT_CACHE' value='0'/> - <enumerator name='ZPOOL_STATUS_MISSING_DEV_R' value='1'/> - <enumerator name='ZPOOL_STATUS_MISSING_DEV_NR' value='2'/> - <enumerator name='ZPOOL_STATUS_CORRUPT_LABEL_R' value='3'/> - <enumerator name='ZPOOL_STATUS_CORRUPT_LABEL_NR' value='4'/> - <enumerator name='ZPOOL_STATUS_BAD_GUID_SUM' value='5'/> - <enumerator name='ZPOOL_STATUS_CORRUPT_POOL' value='6'/> - <enumerator name='ZPOOL_STATUS_CORRUPT_DATA' value='7'/> - <enumerator name='ZPOOL_STATUS_FAILING_DEV' value='8'/> - <enumerator name='ZPOOL_STATUS_VERSION_NEWER' value='9'/> - <enumerator name='ZPOOL_STATUS_HOSTID_MISMATCH' value='10'/> - <enumerator name='ZPOOL_STATUS_HOSTID_ACTIVE' value='11'/> - <enumerator name='ZPOOL_STATUS_HOSTID_REQUIRED' value='12'/> - <enumerator name='ZPOOL_STATUS_IO_FAILURE_WAIT' value='13'/> - <enumerator name='ZPOOL_STATUS_IO_FAILURE_CONTINUE' value='14'/> - <enumerator name='ZPOOL_STATUS_IO_FAILURE_MMP' value='15'/> - <enumerator name='ZPOOL_STATUS_BAD_LOG' value='16'/> - <enumerator name='ZPOOL_STATUS_ERRATA' value='17'/> - <enumerator name='ZPOOL_STATUS_UNSUP_FEAT_READ' value='18'/> - <enumerator name='ZPOOL_STATUS_UNSUP_FEAT_WRITE' value='19'/> - <enumerator name='ZPOOL_STATUS_FAULTED_DEV_R' value='20'/> - <enumerator name='ZPOOL_STATUS_FAULTED_DEV_NR' value='21'/> - <enumerator name='ZPOOL_STATUS_VERSION_OLDER' value='22'/> - <enumerator name='ZPOOL_STATUS_FEAT_DISABLED' value='23'/> - <enumerator name='ZPOOL_STATUS_RESILVERING' value='24'/> - <enumerator name='ZPOOL_STATUS_OFFLINE_DEV' value='25'/> - <enumerator name='ZPOOL_STATUS_REMOVED_DEV' value='26'/> - <enumerator name='ZPOOL_STATUS_REBUILDING' value='27'/> - <enumerator name='ZPOOL_STATUS_REBUILD_SCRUB' value='28'/> - <enumerator name='ZPOOL_STATUS_NON_NATIVE_ASHIFT' value='29'/> - <enumerator name='ZPOOL_STATUS_COMPATIBILITY_ERR' value='30'/> - <enumerator name='ZPOOL_STATUS_INCOMPATIBLE_FEAT' value='31'/> - <enumerator name='ZPOOL_STATUS_OK' value='32'/> - </enum-decl> - <typedef-decl name='zpool_status_t' type-id='5e770b40' id='d3dd6294'/> - <enum-decl name='zpool_errata' id='d9abbf54'> - <underlying-type type-id='9cac1fee'/> - <enumerator name='ZPOOL_ERRATA_NONE' value='0'/> - <enumerator name='ZPOOL_ERRATA_ZOL_2094_SCRUB' value='1'/> - <enumerator name='ZPOOL_ERRATA_ZOL_2094_ASYNC_DESTROY' value='2'/> - <enumerator name='ZPOOL_ERRATA_ZOL_6845_ENCRYPTION' value='3'/> - <enumerator name='ZPOOL_ERRATA_ZOL_8308_ENCRYPTION' value='4'/> - </enum-decl> - <typedef-decl name='zpool_errata_t' type-id='d9abbf54' id='688c495b'/> - <pointer-type-def type-id='688c495b' size-in-bits='64' id='cec6f2e4'/> - <function-decl name='zpool_get_status' mangled-name='zpool_get_status' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_status'> - <parameter type-id='4c81de99' name='zhp'/> - <parameter type-id='9b23c9ad' name='msgid'/> - <parameter type-id='cec6f2e4' name='errata'/> - <return type-id='d3dd6294'/> - </function-decl> <function-decl name='zpool_import_status' mangled-name='zpool_import_status' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_import_status'> <parameter type-id='5ce45b60' name='config'/> - <parameter type-id='9b23c9ad' name='msgid'/> + <parameter type-id='7d3cd834' name='msgid'/> <parameter type-id='cec6f2e4' name='errata'/> <return type-id='d3dd6294'/> </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/libzfs_util.c' language='LANG_C99'> + <class-decl name='__va_list_tag' size-in-bits='192' is-struct='yes' visibility='default' id='d5027220'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='gp_offset' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='fp_offset' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='overflow_arg_area' type-id='eaa32e2f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='reg_save_area' type-id='eaa32e2f' visibility='default'/> + </data-member> + </class-decl> + <type-decl name='double' size-in-bits='64' id='a0eb0f08'/> <array-type-def dimensions='1' type-id='95e97e5e' size-in-bits='192' id='e41bdf22'> <subrange length='6' type-id='7359adad' id='52fa524b'/> </array-type-def> - <type-decl name='variadic parameter type' id='2c1145c5'/> <array-type-def dimensions='1' type-id='19cefcee' size-in-bits='160' alignment-in-bits='32' id='3fcf57d2'> <subrange length='5' type-id='7359adad' id='53010e10'/> </array-type-def> @@ -3984,9 +7750,313 @@ </class-decl> <typedef-decl name='zprop_get_cbdata_t' type-id='f3d3c319' id='f3d87113'/> <typedef-decl name='zprop_func' type-id='2e711a2a' id='1ec3747a'/> + <enum-decl name='zprop_attr_t' naming-typedef-id='999701cc' id='77d05200'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='PROP_DEFAULT' value='0'/> + <enumerator name='PROP_READONLY' value='1'/> + <enumerator name='PROP_INHERIT' value='2'/> + <enumerator name='PROP_ONETIME' value='3'/> + <enumerator name='PROP_ONETIME_DEFAULT' value='4'/> + </enum-decl> + <typedef-decl name='zprop_attr_t' type-id='77d05200' id='999701cc'/> + <class-decl name='zfs_index' size-in-bits='128' is-struct='yes' visibility='default' id='87957af9'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='pi_name' type-id='80f4b756' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='pi_value' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='zprop_index_t' type-id='87957af9' id='64636ce3'/> + <class-decl name='zprop_desc_t' size-in-bits='640' is-struct='yes' naming-typedef-id='ffa52b96' visibility='default' id='bbff5e4b'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='pd_name' type-id='80f4b756' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='pd_propnum' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='pd_proptype' type-id='31429eff' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='pd_strdefault' type-id='80f4b756' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='pd_numdefault' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='pd_attr' type-id='999701cc' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='288'> + <var-decl name='pd_types' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='pd_values' type-id='80f4b756' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='pd_colname' type-id='80f4b756' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='pd_rightalign' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='449'> + <var-decl name='pd_visible' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='450'> + <var-decl name='pd_zfs_mod_supported' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='451'> + <var-decl name='pd_always_flex' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='pd_table' type-id='c8bc397b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='pd_table_size' type-id='b59d7dce' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='zprop_desc_t' type-id='bbff5e4b' id='ffa52b96'/> + <class-decl name='extmnttab' size-in-bits='320' is-struct='yes' visibility='default' id='0c544dc0'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='mnt_special' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='mnt_mountp' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='mnt_fstype' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='mnt_mntopts' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='mnt_major' type-id='3502e3ff' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='288'> + <var-decl name='mnt_minor' type-id='3502e3ff' visibility='default'/> + </data-member> + </class-decl> + <pointer-type-def type-id='d5027220' size-in-bits='64' id='b7f2d5e6'/> + <qualified-type-def type-id='26a90f95' const='yes' id='57de658a'/> + <pointer-type-def type-id='57de658a' size-in-bits='64' id='f319fae0'/> <pointer-type-def type-id='9b23c9ad' size-in-bits='64' id='c0563f85'/> - <pointer-type-def type-id='c70fa2e8' size-in-bits='64' id='2e711a2a'/> + <qualified-type-def type-id='33f57a65' const='yes' id='21fd6035'/> + <pointer-type-def type-id='21fd6035' size-in-bits='64' id='a0de50cd'/> + <pointer-type-def type-id='a0de50cd' size-in-bits='64' id='24f95ba5'/> + <qualified-type-def type-id='64636ce3' const='yes' id='072f7953'/> + <pointer-type-def type-id='072f7953' size-in-bits='64' id='c8bc397b'/> + <pointer-type-def type-id='0c544dc0' size-in-bits='64' id='394fc496'/> + <pointer-type-def type-id='aca3bac8' size-in-bits='64' id='d33f11cb'/> + <qualified-type-def type-id='d33f11cb' restrict='yes' id='5c53ba29'/> + <pointer-type-def type-id='ffa52b96' size-in-bits='64' id='76c8174b'/> <pointer-type-def type-id='f3d87113' size-in-bits='64' id='0d2a0670'/> + <function-decl name='zpool_label_disk' mangled-name='zpool_label_disk' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_label_disk'> + <parameter type-id='b0382bb3'/> + <parameter type-id='4c81de99'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_version_kernel' mangled-name='zfs_version_kernel' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_version_kernel'> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='libzfs_core_init' visibility='default' binding='global' size-in-bits='64'> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='libzfs_core_fini' visibility='default' binding='global' size-in-bits='64'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zfs_get_underlying_path' mangled-name='zfs_get_underlying_path' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_get_underlying_path'> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='zpool_prop_unsupported' mangled-name='zpool_prop_unsupported' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_unsupported'> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='zpool_feature_init' mangled-name='zpool_feature_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_feature_init'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fletcher_4_init' mangled-name='fletcher_4_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_4_init'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fletcher_4_fini' mangled-name='fletcher_4_fini' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_4_fini'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zfs_prop_init' mangled-name='zfs_prop_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_init'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zfs_prop_get_table' mangled-name='zfs_prop_get_table' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_get_table'> + <return type-id='76c8174b'/> + </function-decl> + <function-decl name='zpool_prop_init' mangled-name='zpool_prop_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_init'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zpool_prop_get_table' mangled-name='zpool_prop_get_table' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_get_table'> + <return type-id='76c8174b'/> + </function-decl> + <function-decl name='vdev_prop_init' mangled-name='vdev_prop_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_init'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zprop_iter_common' mangled-name='zprop_iter_common' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_iter_common'> + <parameter type-id='1ec3747a'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='2e45de5d'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zprop_name_to_prop' mangled-name='zprop_name_to_prop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_name_to_prop'> + <parameter type-id='80f4b756'/> + <parameter type-id='2e45de5d'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zprop_string_to_index' mangled-name='zprop_string_to_index' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_string_to_index'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='5d6479ae'/> + <parameter type-id='2e45de5d'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zprop_values' mangled-name='zprop_values' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_values'> + <parameter type-id='95e97e5e'/> + <parameter type-id='2e45de5d'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='zprop_width' mangled-name='zprop_width' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_width'> + <parameter type-id='95e97e5e'/> + <parameter type-id='37e3bd22'/> + <parameter type-id='2e45de5d'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='zprop_valid_for_type' mangled-name='zprop_valid_for_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_valid_for_type'> + <parameter type-id='95e97e5e'/> + <parameter type-id='2e45de5d'/> + <parameter type-id='c19b74c3'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='getextmntent' mangled-name='getextmntent' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getextmntent'> + <parameter type-id='80f4b756'/> + <parameter type-id='394fc496'/> + <parameter type-id='62f7a03d'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__ctype_toupper_loc' visibility='default' binding='global' size-in-bits='64'> + <return type-id='24f95ba5'/> + </function-decl> + <function-decl name='dlclose' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='regcomp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5c53ba29'/> + <parameter type-id='9d26089a'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='regfree' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='d33f11cb'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='puts' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strtod' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='8c85230f'/> + <return type-id='a0eb0f08'/> + </function-decl> + <function-decl name='realloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='exit' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='strnlen' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='strncasecmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='access' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='dup2' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='execve' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='f319fae0'/> + <parameter type-id='f319fae0'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='execv' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='f319fae0'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='execvp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='f319fae0'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='execvpe' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='f319fae0'/> + <parameter type-id='f319fae0'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='_exit' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fork' visibility='default' binding='global' size-in-bits='64'> + <return type-id='3629bad8'/> + </function-decl> + <function-decl name='pow' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a0eb0f08'/> + <parameter type-id='a0eb0f08'/> + <return type-id='a0eb0f08'/> + </function-decl> + <function-decl name='__vfprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter type-id='b7f2d5e6'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__vasprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='8c85230f'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter type-id='b7f2d5e6'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='waitpid' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='3629bad8'/> + <parameter type-id='7292109c'/> + <parameter type-id='95e97e5e'/> + <return type-id='3629bad8'/> + </function-decl> + <function-decl name='namespace_clear' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='libzfs_load_module' visibility='default' binding='global' size-in-bits='64'> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='libzfs_errno' mangled-name='libzfs_errno' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libzfs_errno'> <parameter type-id='b0382bb3' name='hdl'/> <return type-id='95e97e5e'/> @@ -3999,12 +8069,6 @@ <parameter type-id='b0382bb3' name='hdl'/> <return type-id='80f4b756'/> </function-decl> - <function-decl name='zfs_standard_error' mangled-name='zfs_standard_error' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_standard_error'> - <parameter type-id='b0382bb3' name='hdl'/> - <parameter type-id='95e97e5e' name='error'/> - <parameter type-id='80f4b756' name='msg'/> - <return type-id='95e97e5e'/> - </function-decl> <function-decl name='libzfs_print_on_error' mangled-name='libzfs_print_on_error' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libzfs_print_on_error'> <parameter type-id='b0382bb3' name='hdl'/> <parameter type-id='c19b74c3' name='printerr'/> @@ -4037,10 +8101,6 @@ <parameter type-id='95e97e5e' name='count'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='libzfs_envvar_is_set' mangled-name='libzfs_envvar_is_set' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libzfs_envvar_is_set'> - <parameter type-id='26a90f95' name='envvar'/> - <return type-id='95e97e5e'/> - </function-decl> <function-decl name='libzfs_init' mangled-name='libzfs_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libzfs_init'> <return type-id='b0382bb3'/> </function-decl> @@ -4048,18 +8108,6 @@ <parameter type-id='b0382bb3' name='hdl'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='zpool_get_handle' mangled-name='zpool_get_handle' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_handle'> - <parameter type-id='4c81de99' name='zhp'/> - <return type-id='b0382bb3'/> - </function-decl> - <function-decl name='zfs_get_handle' mangled-name='zfs_get_handle' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_get_handle'> - <parameter type-id='9200a744' name='zhp'/> - <return type-id='b0382bb3'/> - </function-decl> - <function-decl name='zfs_get_pool_handle' mangled-name='zfs_get_pool_handle' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_get_pool_handle'> - <parameter type-id='fcd57163' name='zhp'/> - <return type-id='4c81de99'/> - </function-decl> <function-decl name='zfs_path_to_zhandle' mangled-name='zfs_path_to_zhandle' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_path_to_zhandle'> <parameter type-id='b0382bb3' name='hdl'/> <parameter type-id='80f4b756' name='path'/> @@ -4076,12 +8124,6 @@ <parameter type-id='80f4b756' name='recvd_value'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='zfs_nicestrtonum' mangled-name='zfs_nicestrtonum' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_nicestrtonum'> - <parameter type-id='b0382bb3' name='hdl'/> - <parameter type-id='80f4b756' name='value'/> - <parameter type-id='5d6479ae' name='num'/> - <return type-id='95e97e5e'/> - </function-decl> <function-decl name='zprop_get_list' mangled-name='zprop_get_list' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_get_list'> <parameter type-id='b0382bb3' name='hdl'/> <parameter type-id='26a90f95' name='props'/> @@ -4107,29 +8149,67 @@ <function-decl name='zfs_version_print' mangled-name='zfs_version_print' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_version_print'> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='color_start' mangled-name='color_start' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='color_start'> - <parameter type-id='26a90f95' name='color'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='color_end' mangled-name='color_end' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='color_end'> - <return type-id='48b5725f'/> + <function-decl name='use_color' mangled-name='use_color' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='use_color'> + <return type-id='95e97e5e'/> </function-decl> <function-decl name='printf_color' mangled-name='printf_color' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='printf_color'> - <parameter type-id='26a90f95' name='color'/> - <parameter type-id='26a90f95' name='format'/> + <parameter type-id='80f4b756' name='color'/> + <parameter type-id='80f4b756' name='format'/> <parameter is-variadic='yes'/> <return type-id='95e97e5e'/> </function-decl> - <function-type size-in-bits='64' id='c70fa2e8'> - <parameter type-id='95e97e5e'/> - <parameter type-id='eaa32e2f'/> + <function-decl name='zpool_vdev_script_alloc_env' mangled-name='zpool_vdev_script_alloc_env' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_vdev_script_alloc_env'> + <parameter type-id='80f4b756' name='pool_name'/> + <parameter type-id='80f4b756' name='vdev_path'/> + <parameter type-id='80f4b756' name='vdev_upath'/> + <parameter type-id='80f4b756' name='vdev_enc_sysfs_path'/> + <parameter type-id='80f4b756' name='opt_key'/> + <parameter type-id='80f4b756' name='opt_val'/> + <return type-id='9b23c9ad'/> + </function-decl> + <function-decl name='zpool_vdev_script_free_env' mangled-name='zpool_vdev_script_free_env' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_vdev_script_free_env'> + <parameter type-id='9b23c9ad' name='env'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zpool_prepare_disk' mangled-name='zpool_prepare_disk' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prepare_disk'> + <parameter type-id='4c81de99' name='zhp'/> + <parameter type-id='5ce45b60' name='vdev_nv'/> + <parameter type-id='80f4b756' name='prepare_str'/> + <parameter type-id='c0563f85' name='lines'/> + <parameter type-id='7292109c' name='lines_cnt'/> <return type-id='95e97e5e'/> - </function-type> + </function-decl> + <function-decl name='zpool_prepare_and_label_disk' mangled-name='zpool_prepare_and_label_disk' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prepare_and_label_disk'> + <parameter type-id='b0382bb3' name='hdl'/> + <parameter type-id='4c81de99' name='zhp'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='5ce45b60' name='vdev_nv'/> + <parameter type-id='80f4b756' name='prepare_str'/> + <parameter type-id='c0563f85' name='lines'/> + <parameter type-id='7292109c' name='lines_cnt'/> + <return type-id='95e97e5e'/> + </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/os/linux/libzfs_mount_os.c' language='LANG_C99'> <pointer-type-def type-id='7359adad' size-in-bits='64' id='1d2c2b85'/> + <function-decl name='geteuid' visibility='default' binding='global' size-in-bits='64'> + <return type-id='cc5fcceb'/> + </function-decl> + <function-decl name='mount' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='7359adad'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='umount2' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='zfs_parse_mount_options' mangled-name='zfs_parse_mount_options' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_parse_mount_options'> - <parameter type-id='26a90f95' name='mntopts'/> + <parameter type-id='80f4b756' name='mntopts'/> <parameter type-id='1d2c2b85' name='mntflags'/> <parameter type-id='1d2c2b85' name='zfsflags'/> <parameter type-id='95e97e5e' name='sloppy'/> @@ -4147,273 +8227,204 @@ <function-decl name='zfs_mount_delegation_check' mangled-name='zfs_mount_delegation_check' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_mount_delegation_check'> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zpool_disable_datasets_os' mangled-name='zpool_disable_datasets_os' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_disable_datasets_os'> - <parameter type-id='4c81de99' name='zhp'/> - <parameter type-id='c19b74c3' name='force'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='zpool_disable_volume_os' mangled-name='zpool_disable_volume_os' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_disable_volume_os'> - <parameter type-id='80f4b756' name='name'/> - <return type-id='48b5725f'/> - </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzfs/os/linux/libzfs_pool_os.c' language='LANG_C99'> - <function-decl name='zpool_label_disk' mangled-name='zpool_label_disk' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_label_disk'> - <parameter type-id='b0382bb3' name='hdl'/> - <parameter type-id='4c81de99' name='zhp'/> - <parameter type-id='80f4b756' name='name'/> - <return type-id='95e97e5e'/> - </function-decl> - </abi-instr> - <abi-instr address-size='64' path='lib/libzfs/os/linux/libzfs_util_os.c' language='LANG_C99'> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='32768' id='d16c6df4'> - <subrange length='4096' type-id='7359adad' id='bc1b5ddc'/> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='288' id='16e6f2c6'> + <subrange length='36' type-id='7359adad' id='ae666bde'/> </array-type-def> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='65536' id='163f6aa5'> - <subrange length='8192' type-id='7359adad' id='c88f397d'/> + <array-type-def dimensions='1' type-id='a65ae39c' size-in-bits='960' id='fa198beb'> + <subrange length='1' type-id='7359adad' id='52f813b4'/> </array-type-def> - <array-type-def dimensions='1' type-id='9c313c2d' size-in-bits='128' id='c1c22e6c'> - <subrange length='2' type-id='7359adad' id='52efc4ef'/> + <array-type-def dimensions='1' type-id='3502e3ff' size-in-bits='384' id='dba89ba3'> + <subrange length='12' type-id='7359adad' id='84827bdc'/> </array-type-def> - <array-type-def dimensions='1' type-id='b96825af' size-in-bits='24' id='d3490169'> - <subrange length='3' type-id='7359adad' id='56f209d2'/> + <array-type-def dimensions='1' type-id='3502e3ff' size-in-bits='256' id='01d84ed4'> + <subrange length='8' type-id='7359adad' id='56e0c0b1'/> </array-type-def> - <class-decl name='drr_begin' size-in-bits='2432' is-struct='yes' visibility='default' id='09fcdc01'> + <class-decl name='dk_part' size-in-bits='960' is-struct='yes' visibility='default' id='a65ae39c'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='drr_magic' type-id='9c313c2d' visibility='default'/> + <var-decl name='p_start' type-id='804dc465' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='drr_versioninfo' type-id='9c313c2d' visibility='default'/> + <var-decl name='p_size' type-id='804dc465' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='drr_creation_time' type-id='9c313c2d' visibility='default'/> + <var-decl name='p_guid' type-id='214f32ea' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='drr_type' type-id='230f1e16' visibility='default'/> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='p_tag' type-id='d908a348' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='drr_flags' type-id='8f92235e' visibility='default'/> + <data-member access='public' layout-offset-in-bits='272'> + <var-decl name='p_flag' type-id='d908a348' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='drr_toguid' type-id='9c313c2d' visibility='default'/> + <data-member access='public' layout-offset-in-bits='288'> + <var-decl name='p_name' type-id='16e6f2c6' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='drr_fromguid' type-id='9c313c2d' visibility='default'/> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='p_uguid' type-id='214f32ea' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='drr_toname' type-id='d1617432' visibility='default'/> + <data-member access='public' layout-offset-in-bits='704'> + <var-decl name='p_resv' type-id='01d84ed4' visibility='default'/> </data-member> </class-decl> - <class-decl name='zinject_record' size-in-bits='2816' is-struct='yes' visibility='default' id='3216f820'> + <class-decl name='dk_gpt' size-in-bits='1920' is-struct='yes' visibility='default' id='dd4a2e5a'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='zi_objset' type-id='9c313c2d' visibility='default'/> + <var-decl name='efi_version' type-id='3502e3ff' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='efi_nparts' type-id='3502e3ff' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='zi_object' type-id='9c313c2d' visibility='default'/> + <var-decl name='efi_part_size' type-id='3502e3ff' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='efi_lbasize' type-id='3502e3ff' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='zi_start' type-id='9c313c2d' visibility='default'/> + <var-decl name='efi_last_lba' type-id='804dc465' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='zi_end' type-id='9c313c2d' visibility='default'/> + <var-decl name='efi_first_u_lba' type-id='804dc465' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='zi_guid' type-id='9c313c2d' visibility='default'/> + <var-decl name='efi_last_u_lba' type-id='804dc465' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='zi_level' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='zi_error' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='zi_type' type-id='9c313c2d' visibility='default'/> + <var-decl name='efi_disk_uguid' type-id='214f32ea' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='zi_freq' type-id='8f92235e' visibility='default'/> + <var-decl name='efi_flags' type-id='3502e3ff' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='zi_failfast' type-id='8f92235e' visibility='default'/> + <var-decl name='efi_reserved1' type-id='3502e3ff' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='zi_func' type-id='d1617432' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2560'> - <var-decl name='zi_iotype' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2592'> - <var-decl name='zi_duration' type-id='3ff5601b' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2624'> - <var-decl name='zi_timer' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2688'> - <var-decl name='zi_nlanes' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2752'> - <var-decl name='zi_cmd' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2784'> - <var-decl name='zi_dvas' type-id='8f92235e' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='zinject_record_t' type-id='3216f820' id='a4301ca6'/> - <class-decl name='zfs_share' size-in-bits='256' is-struct='yes' visibility='default' id='feb6f2da'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='z_exportdata' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='z_sharedata' type-id='9c313c2d' visibility='default'/> + <var-decl name='efi_altern_lba' type-id='804dc465' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='z_sharetype' type-id='9c313c2d' visibility='default'/> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='efi_reserved' type-id='dba89ba3' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='z_sharemax' type-id='9c313c2d' visibility='default'/> + <data-member access='public' layout-offset-in-bits='960'> + <var-decl name='efi_parts' type-id='fa198beb' visibility='default'/> </data-member> </class-decl> - <typedef-decl name='zfs_share_t' type-id='feb6f2da' id='ee5cec36'/> - <class-decl name='zfs_cmd' size-in-bits='109952' is-struct='yes' visibility='default' id='3522cd69'> + <class-decl name='uuid' size-in-bits='128' is-struct='yes' visibility='default' id='214f32ea'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='zc_name' type-id='d16c6df4' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='32768'> - <var-decl name='zc_nvlist_src' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='32832'> - <var-decl name='zc_nvlist_src_size' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='32896'> - <var-decl name='zc_nvlist_dst' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='32960'> - <var-decl name='zc_nvlist_dst_size' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='33024'> - <var-decl name='zc_nvlist_dst_filled' type-id='c19b74c3' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='33056'> - <var-decl name='zc_pad2' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='33088'> - <var-decl name='zc_history' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='33152'> - <var-decl name='zc_value' type-id='163f6aa5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='98688'> - <var-decl name='zc_string' type-id='d1617432' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='100736'> - <var-decl name='zc_guid' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='100800'> - <var-decl name='zc_nvlist_conf' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='100864'> - <var-decl name='zc_nvlist_conf_size' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='100928'> - <var-decl name='zc_cookie' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='100992'> - <var-decl name='zc_objset_type' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101056'> - <var-decl name='zc_perm_action' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101120'> - <var-decl name='zc_history_len' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101184'> - <var-decl name='zc_history_offset' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101248'> - <var-decl name='zc_obj' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101312'> - <var-decl name='zc_iflags' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101376'> - <var-decl name='zc_share' type-id='ee5cec36' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101632'> - <var-decl name='zc_objset_stats' type-id='b2c14f17' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='103936'> - <var-decl name='zc_begin_record' type-id='09fcdc01' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='106368'> - <var-decl name='zc_inject_record' type-id='a4301ca6' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109184'> - <var-decl name='zc_defer_destroy' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109216'> - <var-decl name='zc_flags' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109248'> - <var-decl name='zc_action_handle' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109312'> - <var-decl name='zc_cleanup_fd' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109344'> - <var-decl name='zc_simple' type-id='b96825af' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109352'> - <var-decl name='zc_pad' type-id='d3490169' visibility='default'/> + <var-decl name='time_low' type-id='8f92235e' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='109376'> - <var-decl name='zc_sendobj' type-id='9c313c2d' visibility='default'/> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='time_mid' type-id='149c6638' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='109440'> - <var-decl name='zc_fromobj' type-id='9c313c2d' visibility='default'/> + <data-member access='public' layout-offset-in-bits='48'> + <var-decl name='time_hi_and_version' type-id='149c6638' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='109504'> - <var-decl name='zc_createtxg' type-id='9c313c2d' visibility='default'/> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='clock_seq_hi_and_reserved' type-id='b96825af' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='109568'> - <var-decl name='zc_stat' type-id='0371a9c7' visibility='default'/> + <data-member access='public' layout-offset-in-bits='72'> + <var-decl name='clock_seq_low' type-id='b96825af' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='109888'> - <var-decl name='zc_zoneid' type-id='9c313c2d' visibility='default'/> + <data-member access='public' layout-offset-in-bits='80'> + <var-decl name='node_addr' type-id='0f562bd0' visibility='default'/> </data-member> </class-decl> - <typedef-decl name='zfs_cmd_t' type-id='3522cd69' id='a5559cdd'/> - <class-decl name='zfs_stat' size-in-bits='320' is-struct='yes' visibility='default' id='6417f0b9'> + <typedef-decl name='ushort_t' type-id='8efea9e5' id='d908a348'/> + <typedef-decl name='uint16_t' type-id='253c2d2a' id='149c6638'/> + <typedef-decl name='__uint16_t' type-id='8efea9e5' id='253c2d2a'/> + <pointer-type-def type-id='dd4a2e5a' size-in-bits='64' id='0d8119a8'/> + <pointer-type-def type-id='0d8119a8' size-in-bits='64' id='c43b27a6'/> + <function-decl name='zpool_label_disk_wait' mangled-name='zpool_label_disk_wait' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_label_disk_wait'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_append_partition' mangled-name='zfs_append_partition' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_append_partition'> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='efi_alloc_and_init' mangled-name='efi_alloc_and_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_alloc_and_init'> + <parameter type-id='95e97e5e'/> + <parameter type-id='8f92235e'/> + <parameter type-id='c43b27a6'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='efi_alloc_and_read' mangled-name='efi_alloc_and_read' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_alloc_and_read'> + <parameter type-id='95e97e5e'/> + <parameter type-id='c43b27a6'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='efi_write' mangled-name='efi_write' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_write'> + <parameter type-id='95e97e5e'/> + <parameter type-id='0d8119a8'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='efi_rescan' mangled-name='efi_rescan' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_rescan'> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='efi_free' mangled-name='efi_free' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_free'> + <parameter type-id='0d8119a8'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='efi_use_whole_disk' mangled-name='efi_use_whole_disk' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='efi_use_whole_disk'> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='rand' visibility='default' binding='global' size-in-bits='64'> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fsync' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + </abi-instr> + <abi-instr address-size='64' path='lib/libzfs/os/linux/libzfs_util_os.c' language='LANG_C99'> + <typedef-decl name='nfds_t' type-id='7359adad' id='555eef66'/> + <class-decl name='pollfd' size-in-bits='64' is-struct='yes' visibility='default' id='b440e872'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='zs_gen' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='zs_mode' type-id='9c313c2d' visibility='default'/> + <var-decl name='fd' type-id='95e97e5e' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='zs_links' type-id='9c313c2d' visibility='default'/> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='events' type-id='a2185560' visibility='default'/> </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='zs_ctime' type-id='c1c22e6c' visibility='default'/> + <data-member access='public' layout-offset-in-bits='48'> + <var-decl name='revents' type-id='a2185560' visibility='default'/> </data-member> </class-decl> - <typedef-decl name='zfs_stat_t' type-id='6417f0b9' id='0371a9c7'/> - <pointer-type-def type-id='a5559cdd' size-in-bits='64' id='e4ec4540'/> - <function-decl name='zfs_ioctl' mangled-name='zfs_ioctl' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_ioctl'> - <parameter type-id='b0382bb3' name='hdl'/> - <parameter type-id='95e97e5e' name='request'/> - <parameter type-id='e4ec4540' name='zc'/> + <pointer-type-def type-id='b440e872' size-in-bits='64' id='3ac36db0'/> + <function-decl name='__poll_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='3ac36db0'/> + <parameter type-id='555eef66'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='7359adad'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='libzfs_error_init' mangled-name='libzfs_error_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libzfs_error_init'> - <parameter type-id='95e97e5e' name='error'/> - <return type-id='80f4b756'/> + <function-decl name='inotify_init1' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zfs_destroy_snaps_nvl_os' mangled-name='zfs_destroy_snaps_nvl_os' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_destroy_snaps_nvl_os'> - <parameter type-id='b0382bb3' name='hdl'/> - <parameter type-id='5ce45b60' name='snaps'/> + <function-decl name='inotify_add_watch' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='8f92235e'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zfs_version_kernel' mangled-name='zfs_version_kernel' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_version_kernel'> - <return type-id='26a90f95'/> + <function-decl name='timerfd_create' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='08f9a87a'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='timerfd_settime' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='f39579e7'/> + <parameter type-id='116842ac'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='libzfs_error_init' mangled-name='libzfs_error_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libzfs_error_init'> + <parameter type-id='95e97e5e' name='error'/> + <return type-id='80f4b756'/> </function-decl> <function-decl name='zfs_userns' mangled-name='zfs_userns' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_userns'> <parameter type-id='9200a744' name='zhp'/> @@ -4423,19 +8434,37 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzutil/os/linux/zutil_device_path_os.c' language='LANG_C99'> - <function-decl name='zfs_append_partition' mangled-name='zfs_append_partition' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_append_partition'> - <parameter type-id='26a90f95' name='path'/> - <parameter type-id='b59d7dce' name='max_len'/> - <return type-id='95e97e5e'/> + <class-decl name='udev' is-struct='yes' visibility='default' is-declaration-only='yes' id='e4a7fb7f'/> + <class-decl name='udev_device' is-struct='yes' visibility='default' is-declaration-only='yes' id='640b33ca'/> + <pointer-type-def type-id='e4a7fb7f' size-in-bits='64' id='025eefe7'/> + <pointer-type-def type-id='640b33ca' size-in-bits='64' id='b32bae08'/> + <class-decl name='udev' is-struct='yes' visibility='default' is-declaration-only='yes' id='e4a7fb7f'/> + <class-decl name='udev_device' is-struct='yes' visibility='default' is-declaration-only='yes' id='640b33ca'/> + <function-decl name='udev_new' visibility='default' binding='global' size-in-bits='64'> + <return type-id='025eefe7'/> </function-decl> - <function-decl name='zfs_strip_partition' mangled-name='zfs_strip_partition' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_strip_partition'> - <parameter type-id='80f4b756' name='path'/> - <return type-id='26a90f95'/> + <function-decl name='udev_device_unref' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b32bae08'/> + <return type-id='b32bae08'/> </function-decl> - <function-decl name='zfs_strip_path' mangled-name='zfs_strip_path' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_strip_path'> - <parameter type-id='80f4b756' name='path'/> + <function-decl name='udev_device_new_from_subsystem_sysname' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='025eefe7'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='b32bae08'/> + </function-decl> + <function-decl name='udev_device_get_property_value' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b32bae08'/> + <parameter type-id='80f4b756'/> <return type-id='80f4b756'/> </function-decl> + <function-decl name='__readlink_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='266fe297'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='79a0948f'/> + </function-decl> <function-decl name='zfs_get_enclosure_sysfs_path' mangled-name='zfs_get_enclosure_sysfs_path' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_get_enclosure_sysfs_path'> <parameter type-id='80f4b756' name='dev_name'/> <return type-id='26a90f95'/> @@ -4448,29 +8477,129 @@ <parameter type-id='80f4b756' name='dev_name'/> <return type-id='c19b74c3'/> </function-decl> - <function-decl name='zfs_get_underlying_path' mangled-name='zfs_get_underlying_path' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_get_underlying_path'> - <parameter type-id='80f4b756' name='dev_name'/> - <return type-id='26a90f95'/> - </function-decl> <function-decl name='is_mpath_whole_disk' mangled-name='is_mpath_whole_disk' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='is_mpath_whole_disk'> <parameter type-id='80f4b756' name='path'/> <return type-id='c19b74c3'/> </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzutil/os/linux/zutil_import_os.c' language='LANG_C99'> - <class-decl name='udev_device' is-struct='yes' visibility='default' is-declaration-only='yes' id='640b33ca'/> - <pointer-type-def type-id='b99c00c9' size-in-bits='64' id='13956559'/> - <pointer-type-def type-id='b59d7dce' size-in-bits='64' id='78c01427'/> - <pointer-type-def type-id='640b33ca' size-in-bits='64' id='b32bae08'/> - <class-decl name='udev_device' is-struct='yes' visibility='default' is-declaration-only='yes' id='640b33ca'/> + <class-decl name='blkid_struct_cache' is-struct='yes' visibility='default' is-declaration-only='yes' id='09286066'/> + <class-decl name='blkid_struct_dev' is-struct='yes' visibility='default' is-declaration-only='yes' id='86223623'/> + <class-decl name='blkid_struct_dev_iterate' is-struct='yes' visibility='default' is-declaration-only='yes' id='d88420d6'/> + <class-decl name='udev_list_entry' is-struct='yes' visibility='default' is-declaration-only='yes' id='e7dbdca3'/> + <typedef-decl name='pool_vdev_iter_f' type-id='6c16a6c8' id='dff793e0'/> + <typedef-decl name='blkid_dev' type-id='8433f053' id='f47b023a'/> + <typedef-decl name='blkid_cache' type-id='940e3afc' id='0882dfdf'/> + <typedef-decl name='blkid_dev_iterate' type-id='b8fa2efc' id='f4760fa7'/> + <typedef-decl name='__useconds_t' type-id='f0981eeb' id='4e80d4b1'/> + <pointer-type-def type-id='0882dfdf' size-in-bits='64' id='2e3e7caa'/> + <pointer-type-def type-id='f47b023a' size-in-bits='64' id='d87f9b75'/> + <pointer-type-def type-id='09286066' size-in-bits='64' id='940e3afc'/> + <pointer-type-def type-id='86223623' size-in-bits='64' id='8433f053'/> + <pointer-type-def type-id='d88420d6' size-in-bits='64' id='b8fa2efc'/> + <pointer-type-def type-id='2ec2411e' size-in-bits='64' id='6c16a6c8'/> + <pointer-type-def type-id='e7dbdca3' size-in-bits='64' id='deabd0d3'/> + <class-decl name='blkid_struct_cache' is-struct='yes' visibility='default' is-declaration-only='yes' id='09286066'/> + <class-decl name='blkid_struct_dev' is-struct='yes' visibility='default' is-declaration-only='yes' id='86223623'/> + <class-decl name='blkid_struct_dev_iterate' is-struct='yes' visibility='default' is-declaration-only='yes' id='d88420d6'/> + <class-decl name='udev_list_entry' is-struct='yes' visibility='default' is-declaration-only='yes' id='e7dbdca3'/> + <function-decl name='for_each_vdev_in_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='dff793e0'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='label_paths' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5507783b'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='7d3cd834'/> + <parameter type-id='7d3cd834'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zutil_alloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5507783b'/> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='zutil_strdup' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5507783b'/> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='slice_cache_compare' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='blkid_put_cache' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='0882dfdf'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='blkid_get_cache' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='2e3e7caa'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='blkid_dev_devname' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='f47b023a'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='blkid_dev_iterate_begin' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='0882dfdf'/> + <return type-id='f4760fa7'/> + </function-decl> + <function-decl name='blkid_dev_set_search' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='f4760fa7'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='blkid_dev_next' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='f4760fa7'/> + <parameter type-id='d87f9b75'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='blkid_dev_iterate_end' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='f4760fa7'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='blkid_probe_all_new' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='0882dfdf'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='udev_unref' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='025eefe7'/> + <return type-id='025eefe7'/> + </function-decl> + <function-decl name='udev_list_entry_get_next' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='deabd0d3'/> + <return type-id='deabd0d3'/> + </function-decl> + <function-decl name='udev_list_entry_get_name' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='deabd0d3'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='udev_device_get_parent_with_subsystem_devtype' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b32bae08'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='b32bae08'/> + </function-decl> + <function-decl name='udev_device_get_devlinks_list_entry' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b32bae08'/> + <return type-id='deabd0d3'/> + </function-decl> + <function-decl name='sched_yield' visibility='default' binding='global' size-in-bits='64'> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='usleep' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='4e80d4b1'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='zfs_dev_flush' mangled-name='zfs_dev_flush' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_dev_flush'> <parameter type-id='95e97e5e' name='fd'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zpool_default_search_paths' mangled-name='zpool_default_search_paths' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_default_search_paths'> - <parameter type-id='78c01427' name='count'/> - <return type-id='13956559'/> - </function-decl> <function-decl name='zfs_device_get_devid' mangled-name='zfs_device_get_devid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_device_get_devid'> <parameter type-id='b32bae08' name='dev'/> <parameter type-id='26a90f95' name='bufptr'/> @@ -4483,41 +8612,65 @@ <parameter type-id='b59d7dce' name='buflen'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zpool_label_disk_wait' mangled-name='zpool_label_disk_wait' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_label_disk_wait'> + <function-decl name='zpool_disk_wait' mangled-name='zpool_disk_wait' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_disk_wait'> <parameter type-id='80f4b756' name='path'/> - <parameter type-id='95e97e5e' name='timeout_ms'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='update_vdev_config_dev_strs' mangled-name='update_vdev_config_dev_strs' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='update_vdev_config_dev_strs'> + <function-decl name='update_vdev_config_dev_sysfs_path' mangled-name='update_vdev_config_dev_sysfs_path' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='update_vdev_config_dev_sysfs_path'> <parameter type-id='5ce45b60' name='nv'/> + <parameter type-id='80f4b756' name='path'/> + <parameter type-id='80f4b756' name='key'/> + <return type-id='48b5725f'/> + </function-decl> + <function-type size-in-bits='64' id='2ec2411e'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='5ce45b60'/> + <parameter type-id='eaa32e2f'/> + <return type-id='95e97e5e'/> + </function-type> + </abi-instr> + <abi-instr address-size='64' path='lib/libzutil/os/linux/zutil_setproctitle.c' language='LANG_C99'> + <function-decl name='warnx' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='setenv' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='clearenv' visibility='default' binding='global' size-in-bits='64'> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_setproctitle_init' mangled-name='zfs_setproctitle_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_setproctitle_init'> + <parameter type-id='95e97e5e' name='argc'/> + <parameter type-id='9b23c9ad' name='argv'/> + <parameter type-id='9b23c9ad' name='envp'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzutil/zutil_device_path.c' language='LANG_C99'> - <typedef-decl name='ssize_t' type-id='41060289' id='79a0948f'/> - <typedef-decl name='__ssize_t' type-id='bd54fe1a' id='41060289'/> - <function-decl name='zfs_basename' mangled-name='zfs_basename' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_basename'> - <parameter type-id='80f4b756' name='path'/> - <return type-id='80f4b756'/> + <pointer-type-def type-id='b99c00c9' size-in-bits='64' id='13956559'/> + <function-decl name='zpool_default_search_paths' mangled-name='zpool_default_search_paths' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_default_search_paths'> + <parameter type-id='78c01427'/> + <return type-id='13956559'/> + </function-decl> + <function-decl name='strspn' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='b59d7dce'/> </function-decl> <function-decl name='zfs_dirnamelen' mangled-name='zfs_dirnamelen' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_dirnamelen'> <parameter type-id='80f4b756' name='path'/> <return type-id='79a0948f'/> </function-decl> - <function-decl name='zfs_resolve_shortname' mangled-name='zfs_resolve_shortname' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_resolve_shortname'> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='26a90f95' name='path'/> - <parameter type-id='b59d7dce' name='len'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='zfs_strcmp_pathname' mangled-name='zfs_strcmp_pathname' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_strcmp_pathname'> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='80f4b756' name='cmp'/> - <parameter type-id='95e97e5e' name='wholedisk'/> - <return type-id='95e97e5e'/> - </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzutil/zutil_import.c' language='LANG_C99'> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='256' id='16dc656a'> + <subrange length='32' type-id='7359adad' id='ae5bde82'/> + </array-type-def> <class-decl name='importargs' size-in-bits='448' is-struct='yes' visibility='default' id='7ac83801'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='path' type-id='9b23c9ad' visibility='default'/> @@ -4545,30 +8698,137 @@ </data-member> </class-decl> <typedef-decl name='importargs_t' type-id='7ac83801' id='7a842a6b'/> + <class-decl name='libpc_handle' size-in-bits='8448' is-struct='yes' visibility='default' id='7c8737f0'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='lpc_error' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='lpc_printerr' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='lpc_open_access_error' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='lpc_desc_active' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='lpc_desc' type-id='b54ce520' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='8320'> + <var-decl name='lpc_ops' type-id='f095e320' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='8384'> + <var-decl name='lpc_lib_handle' type-id='eaa32e2f' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='libpc_handle_t' type-id='7c8737f0' id='8a70a786'/> + <class-decl name='aiocb' size-in-bits='1344' is-struct='yes' visibility='default' id='e4957c49'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='aio_fildes' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='aio_lio_opcode' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='aio_reqprio' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='aio_buf' type-id='fe09dd29' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='aio_nbytes' type-id='b59d7dce' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='aio_sigevent' type-id='519bc206' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='768'> + <var-decl name='__next_prio' type-id='924bbc81' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='832'> + <var-decl name='__abs_prio' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='864'> + <var-decl name='__policy' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='896'> + <var-decl name='__error_code' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='960'> + <var-decl name='__return_value' type-id='41060289' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1024'> + <var-decl name='aio_offset' type-id='724e4de6' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1088'> + <var-decl name='__glibc_reserved' type-id='16dc656a' visibility='default'/> + </data-member> + </class-decl> + <pointer-type-def type-id='e4957c49' size-in-bits='64' id='924bbc81'/> + <qualified-type-def type-id='924bbc81' const='yes' id='5499dcde'/> + <pointer-type-def type-id='5499dcde' size-in-bits='64' id='2236d41c'/> + <qualified-type-def type-id='2236d41c' restrict='yes' id='31488924'/> + <pointer-type-def type-id='a3681dea' size-in-bits='64' id='fce6d540'/> + <qualified-type-def type-id='e4957c49' const='yes' id='fced9da2'/> + <pointer-type-def type-id='fced9da2' size-in-bits='64' id='b20efd18'/> <pointer-type-def type-id='7a842a6b' size-in-bits='64' id='07ee4a58'/> + <pointer-type-def type-id='8a70a786' size-in-bits='64' id='5507783b'/> <pointer-type-def type-id='b1e62775' size-in-bits='64' id='f095e320'/> - <function-decl name='zpool_read_label' mangled-name='zpool_read_label' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_read_label'> - <parameter type-id='95e97e5e' name='fd'/> - <parameter type-id='857bb57e' name='config'/> - <parameter type-id='7292109c' name='num_labels'/> + <qualified-type-def type-id='48b5725f' volatile='yes' id='b0b3cbf9'/> + <pointer-type-def type-id='b0b3cbf9' size-in-bits='64' id='fe09dd29'/> + <function-decl name='update_vdev_config_dev_strs' mangled-name='update_vdev_config_dev_strs' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='update_vdev_config_dev_strs'> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='update_vdevs_config_dev_sysfs_path' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_dup' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='spl_pagesize' mangled-name='spl_pagesize' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='spl_pagesize'> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='posix_memalign' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='63e171df'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='sysconf' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='bd54fe1a'/> + </function-decl> + <function-decl name='libpc_error_description' mangled-name='libpc_error_description' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libpc_error_description'> + <parameter type-id='5507783b' name='hdl'/> + <return type-id='80f4b756'/> + </function-decl> <function-decl name='zpool_search_import' mangled-name='zpool_search_import' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_search_import'> - <parameter type-id='eaa32e2f' name='hdl'/> + <parameter type-id='5507783b' name='hdl'/> <parameter type-id='07ee4a58' name='import'/> - <parameter type-id='f095e320' name='pco'/> <return type-id='5ce45b60'/> </function-decl> <function-decl name='zpool_find_config' mangled-name='zpool_find_config' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_find_config'> - <parameter type-id='eaa32e2f' name='hdl'/> + <parameter type-id='5507783b' name='hdl'/> <parameter type-id='80f4b756' name='target'/> <parameter type-id='857bb57e' name='configp'/> <parameter type-id='07ee4a58' name='args'/> - <parameter type-id='f095e320' name='pco'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='zpool_find_import_blkid' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5507783b'/> + <parameter type-id='18c91f9e'/> + <parameter type-id='fce6d540'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zpool_open_func' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzutil/zutil_nicenum.c' language='LANG_C99'> + <type-decl name='long double' size-in-bits='128' id='e095c704'/> <enum-decl name='zfs_nicenum_format' id='29cf1969'> <underlying-type type-id='9cac1fee'/> <enumerator name='ZFS_NICENUM_1024' value='0'/> @@ -4577,6 +8837,15 @@ <enumerator name='ZFS_NICENUM_RAW' value='3'/> <enumerator name='ZFS_NICENUM_RAWTIME' value='4'/> </enum-decl> + <function-decl name='powl' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e095c704'/> + <parameter type-id='e095c704'/> + <return type-id='e095c704'/> + </function-decl> + <function-decl name='floor' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='a0eb0f08'/> + <return type-id='a0eb0f08'/> + </function-decl> <function-decl name='zfs_isnumber' mangled-name='zfs_isnumber' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_isnumber'> <parameter type-id='80f4b756' name='str'/> <return type-id='c19b74c3'/> @@ -4588,12 +8857,6 @@ <parameter type-id='29cf1969' name='format'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='zfs_nicenum' mangled-name='zfs_nicenum' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_nicenum'> - <parameter type-id='9c313c2d' name='num'/> - <parameter type-id='26a90f95' name='buf'/> - <parameter type-id='b59d7dce' name='buflen'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='zfs_nicetime' mangled-name='zfs_nicetime' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_nicetime'> <parameter type-id='9c313c2d' name='num'/> <parameter type-id='26a90f95' name='buf'/> @@ -4606,17 +8869,12 @@ <parameter type-id='b59d7dce' name='buflen'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='zfs_nicebytes' mangled-name='zfs_nicebytes' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_nicebytes'> - <parameter type-id='9c313c2d' name='num'/> - <parameter type-id='26a90f95' name='buf'/> - <parameter type-id='b59d7dce' name='buflen'/> - <return type-id='48b5725f'/> - </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/libzutil/zutil_pool.c' language='LANG_C99'> <array-type-def dimensions='1' type-id='853fd5dc' size-in-bits='32768' id='b505fc2f'> <subrange length='64' type-id='7359adad' id='b10be967'/> </array-type-def> + <type-decl name='float' size-in-bits='32' id='a6c45d85'/> <class-decl name='ddt_stat' size-in-bits='512' is-struct='yes' visibility='default' id='65242dfe'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='dds_blocks' type-id='9c313c2d' visibility='default'/> @@ -4654,35 +8912,29 @@ <pointer-type-def type-id='ec92d602' size-in-bits='64' id='932720f8'/> <qualified-type-def type-id='853fd5dc' const='yes' id='764c298c'/> <pointer-type-def type-id='764c298c' size-in-bits='64' id='dfe59052'/> - <pointer-type-def type-id='857bb57e' size-in-bits='64' id='75be733c'/> + <qualified-type-def type-id='a9c79a1f' const='yes' id='cd087e36'/> + <pointer-type-def type-id='cd087e36' size-in-bits='64' id='e05e8614'/> + <function-decl name='nanosleep' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e05e8614'/> + <parameter type-id='3d83ba87'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='zpool_dump_ddt' mangled-name='zpool_dump_ddt' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_dump_ddt'> <parameter type-id='dfe59052' name='dds_total'/> <parameter type-id='932720f8' name='ddh'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='zpool_history_unpack' mangled-name='zpool_history_unpack' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_history_unpack'> - <parameter type-id='26a90f95' name='buf'/> - <parameter type-id='9c313c2d' name='bytes_read'/> - <parameter type-id='5d6479ae' name='leftover'/> - <parameter type-id='75be733c' name='records'/> - <parameter type-id='4dd26a40' name='numrecords'/> + <function-decl name='fsleep' mangled-name='fsleep' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fsleep'> + <parameter type-id='a6c45d85' name='sec'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zpool_getenv_int' mangled-name='zpool_getenv_int' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_getenv_int'> + <parameter type-id='80f4b756' name='env'/> + <parameter type-id='95e97e5e' name='default_val'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> <abi-instr address-size='64' path='module/avl/avl.c' language='LANG_C99'> - <typedef-decl name='avl_index_t' type-id='e475ab95' id='fba6cb51'/> - <pointer-type-def type-id='fba6cb51' size-in-bits='64' id='32adbf30'/> - <pointer-type-def type-id='eaa32e2f' size-in-bits='64' id='63e171df'/> - <function-decl name='avl_walk' mangled-name='avl_walk' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_walk'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='eaa32e2f' name='oldnode'/> - <parameter type-id='95e97e5e' name='left'/> - <return type-id='eaa32e2f'/> - </function-decl> - <function-decl name='avl_first' mangled-name='avl_first' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_first'> - <parameter type-id='a3681dea' name='tree'/> - <return type-id='eaa32e2f'/> - </function-decl> <function-decl name='avl_last' mangled-name='avl_last' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_last'> <parameter type-id='a3681dea' name='tree'/> <return type-id='eaa32e2f'/> @@ -4693,18 +8945,6 @@ <parameter type-id='95e97e5e' name='direction'/> <return type-id='eaa32e2f'/> </function-decl> - <function-decl name='avl_find' mangled-name='avl_find' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_find'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='eaa32e2f' name='value'/> - <parameter type-id='32adbf30' name='where'/> - <return type-id='eaa32e2f'/> - </function-decl> - <function-decl name='avl_insert' mangled-name='avl_insert' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_insert'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='eaa32e2f' name='new_data'/> - <parameter type-id='fba6cb51' name='where'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='avl_insert_here' mangled-name='avl_insert_here' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_insert_here'> <parameter type-id='a3681dea' name='tree'/> <parameter type-id='eaa32e2f' name='new_data'/> @@ -4712,16 +8952,6 @@ <parameter type-id='95e97e5e' name='direction'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='avl_add' mangled-name='avl_add' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_add'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='eaa32e2f' name='new_node'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='avl_remove' mangled-name='avl_remove' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_remove'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='eaa32e2f' name='data'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='avl_update_lt' mangled-name='avl_update_lt' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_update_lt'> <parameter type-id='a3681dea' name='t'/> <parameter type-id='eaa32e2f' name='obj'/> @@ -4742,30 +8972,10 @@ <parameter type-id='a3681dea' name='tree2'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='avl_create' mangled-name='avl_create' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_create'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='585e1de9' name='compar'/> - <parameter type-id='b59d7dce' name='size'/> - <parameter type-id='b59d7dce' name='offset'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='avl_destroy' mangled-name='avl_destroy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_destroy'> - <parameter type-id='a3681dea' name='tree'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='avl_numnodes' mangled-name='avl_numnodes' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_numnodes'> - <parameter type-id='a3681dea' name='tree'/> - <return type-id='ee1f298e'/> - </function-decl> <function-decl name='avl_is_empty' mangled-name='avl_is_empty' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_is_empty'> <parameter type-id='a3681dea' name='tree'/> <return type-id='c19b74c3'/> </function-decl> - <function-decl name='avl_destroy_nodes' mangled-name='avl_destroy_nodes' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='avl_destroy_nodes'> - <parameter type-id='a3681dea' name='tree'/> - <parameter type-id='63e171df' name='cookie'/> - <return type-id='eaa32e2f'/> - </function-decl> </abi-instr> <abi-instr address-size='64' path='module/zcommon/cityhash.c' language='LANG_C99'> <function-decl name='cityhash4' mangled-name='cityhash4' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cityhash4'> @@ -4777,52 +8987,9 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='module/zcommon/zfeature_common.c' language='LANG_C99'> - <array-type-def dimensions='1' type-id='83f29ca2' size-in-bits='16576' id='9d5e9e2e'> - <subrange length='37' type-id='7359adad' id='ae666bde'/> + <array-type-def dimensions='1' type-id='83f29ca2' size-in-bits='18368' id='b93e4d14'> + <subrange length='41' type-id='7359adad' id='cb834f44'/> </array-type-def> - <enum-decl name='spa_feature' id='33ecb627'> - <underlying-type type-id='9cac1fee'/> - <enumerator name='SPA_FEATURE_NONE' value='-1'/> - <enumerator name='SPA_FEATURE_ASYNC_DESTROY' value='0'/> - <enumerator name='SPA_FEATURE_EMPTY_BPOBJ' value='1'/> - <enumerator name='SPA_FEATURE_LZ4_COMPRESS' value='2'/> - <enumerator name='SPA_FEATURE_MULTI_VDEV_CRASH_DUMP' value='3'/> - <enumerator name='SPA_FEATURE_SPACEMAP_HISTOGRAM' value='4'/> - <enumerator name='SPA_FEATURE_ENABLED_TXG' value='5'/> - <enumerator name='SPA_FEATURE_HOLE_BIRTH' value='6'/> - <enumerator name='SPA_FEATURE_EXTENSIBLE_DATASET' value='7'/> - <enumerator name='SPA_FEATURE_EMBEDDED_DATA' value='8'/> - <enumerator name='SPA_FEATURE_BOOKMARKS' value='9'/> - <enumerator name='SPA_FEATURE_FS_SS_LIMIT' value='10'/> - <enumerator name='SPA_FEATURE_LARGE_BLOCKS' value='11'/> - <enumerator name='SPA_FEATURE_LARGE_DNODE' value='12'/> - <enumerator name='SPA_FEATURE_SHA512' value='13'/> - <enumerator name='SPA_FEATURE_SKEIN' value='14'/> - <enumerator name='SPA_FEATURE_EDONR' value='15'/> - <enumerator name='SPA_FEATURE_USEROBJ_ACCOUNTING' value='16'/> - <enumerator name='SPA_FEATURE_ENCRYPTION' value='17'/> - <enumerator name='SPA_FEATURE_PROJECT_QUOTA' value='18'/> - <enumerator name='SPA_FEATURE_DEVICE_REMOVAL' value='19'/> - <enumerator name='SPA_FEATURE_OBSOLETE_COUNTS' value='20'/> - <enumerator name='SPA_FEATURE_POOL_CHECKPOINT' value='21'/> - <enumerator name='SPA_FEATURE_SPACEMAP_V2' value='22'/> - <enumerator name='SPA_FEATURE_ALLOCATION_CLASSES' value='23'/> - <enumerator name='SPA_FEATURE_RESILVER_DEFER' value='24'/> - <enumerator name='SPA_FEATURE_BOOKMARK_V2' value='25'/> - <enumerator name='SPA_FEATURE_REDACTION_BOOKMARKS' value='26'/> - <enumerator name='SPA_FEATURE_REDACTED_DATASETS' value='27'/> - <enumerator name='SPA_FEATURE_BOOKMARK_WRITTEN' value='28'/> - <enumerator name='SPA_FEATURE_LOG_SPACEMAP' value='29'/> - <enumerator name='SPA_FEATURE_LIVELIST' value='30'/> - <enumerator name='SPA_FEATURE_DEVICE_REBUILD' value='31'/> - <enumerator name='SPA_FEATURE_ZSTD_COMPRESS' value='32'/> - <enumerator name='SPA_FEATURE_DRAID' value='33'/> - <enumerator name='SPA_FEATURE_ZILSAXATTR' value='34'/> - <enumerator name='SPA_FEATURE_HEAD_ERRLOG' value='35'/> - <enumerator name='SPA_FEATURE_BLAKE3' value='36'/> - <enumerator name='SPA_FEATURES' value='37'/> - </enum-decl> - <typedef-decl name='spa_feature_t' type-id='33ecb627' id='d6618c78'/> <enum-decl name='zfeature_flags' id='6db816a4'> <underlying-type type-id='9cac1fee'/> <enumerator name='ZFEATURE_FLAG_READONLY_COMPAT' value='1'/> @@ -4865,6 +9032,24 @@ </data-member> </class-decl> <typedef-decl name='zfeature_info_t' type-id='1178d146' id='83f29ca2'/> + <typedef-decl name='__free_fn_t' type-id='b7f9d8e6' id='3ff5e51e'/> + <class-decl name='dirent' size-in-bits='2240' is-struct='yes' visibility='default' id='611586a1'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='d_ino' type-id='71288a47' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='d_off' type-id='724e4de6' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='d_reclen' type-id='8efea9e5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='144'> + <var-decl name='d_type' type-id='002ac4a6' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='152'> + <var-decl name='d_name' type-id='d1617432' visibility='default'/> + </data-member> + </class-decl> <class-decl name='zfs_mod_supported_features' size-in-bits='128' is-struct='yes' visibility='default' id='3eee3342'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='tree' type-id='eaa32e2f' visibility='default'/> @@ -4877,26 +9062,35 @@ <pointer-type-def type-id='81a65028' size-in-bits='64' id='1acff326'/> <qualified-type-def type-id='3eee3342' const='yes' id='0c1d5bbb'/> <pointer-type-def type-id='0c1d5bbb' size-in-bits='64' id='a3372543'/> - <pointer-type-def type-id='d6618c78' size-in-bits='64' id='a8425263'/> - <var-decl name='spa_feature_table' type-id='9d5e9e2e' mangled-name='spa_feature_table' visibility='default' elf-symbol-id='spa_feature_table'/> + <pointer-type-def type-id='611586a1' size-in-bits='64' id='2e243169'/> + <qualified-type-def type-id='eaa32e2f' const='yes' id='83be723c'/> + <pointer-type-def type-id='83be723c' size-in-bits='64' id='7acd98a2'/> + <var-decl name='spa_feature_table' type-id='b93e4d14' mangled-name='spa_feature_table' visibility='default' elf-symbol-id='spa_feature_table'/> <var-decl name='zfeature_checks_disable' type-id='c19b74c3' mangled-name='zfeature_checks_disable' visibility='default' elf-symbol-id='zfeature_checks_disable'/> - <function-decl name='zfeature_is_valid_guid' mangled-name='zfeature_is_valid_guid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfeature_is_valid_guid'> - <parameter type-id='80f4b756' name='name'/> - <return type-id='c19b74c3'/> + <function-decl name='opendir' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='f09217ba'/> </function-decl> - <function-decl name='zfeature_is_supported' mangled-name='zfeature_is_supported' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfeature_is_supported'> - <parameter type-id='80f4b756' name='guid'/> - <return type-id='c19b74c3'/> + <function-decl name='tsearch' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='63e171df'/> + <parameter type-id='aba7edd8'/> + <return type-id='eaa32e2f'/> </function-decl> - <function-decl name='zfeature_lookup_guid' mangled-name='zfeature_lookup_guid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfeature_lookup_guid'> - <parameter type-id='80f4b756' name='guid'/> - <parameter type-id='a8425263' name='res'/> - <return type-id='95e97e5e'/> + <function-decl name='tfind' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='7acd98a2'/> + <parameter type-id='aba7edd8'/> + <return type-id='eaa32e2f'/> </function-decl> - <function-decl name='zfeature_lookup_name' mangled-name='zfeature_lookup_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfeature_lookup_name'> + <function-decl name='tdestroy' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <parameter type-id='3ff5e51e'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zfeature_is_valid_guid' mangled-name='zfeature_is_valid_guid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfeature_is_valid_guid'> <parameter type-id='80f4b756' name='name'/> - <parameter type-id='a8425263' name='res'/> - <return type-id='95e97e5e'/> + <return type-id='c19b74c3'/> </function-decl> <function-decl name='zfeature_depends_on' mangled-name='zfeature_depends_on' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfeature_depends_on'> <parameter type-id='d6618c78' name='fid'/> @@ -4909,46 +9103,33 @@ <parameter type-id='a3372543' name='sfeatures'/> <return type-id='c19b74c3'/> </function-decl> - <function-decl name='zpool_feature_init' mangled-name='zpool_feature_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_feature_init'> - <return type-id='48b5725f'/> - </function-decl> </abi-instr> <abi-instr address-size='64' path='module/zcommon/zfs_comutil.c' language='LANG_C99'> <array-type-def dimensions='1' type-id='b99c00c9' size-in-bits='2624' id='5ce15418'> <subrange length='41' type-id='7359adad' id='cb834f44'/> </array-type-def> - <class-decl name='zpool_load_policy' size-in-bits='256' is-struct='yes' visibility='default' id='2f65b36f'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='zlp_rewind' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='zlp_maxmeta' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='zlp_maxdata' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='zlp_txg' type-id='9c313c2d' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='zpool_load_policy_t' type-id='2f65b36f' id='d11b7617'/> <qualified-type-def type-id='80f4b756' const='yes' id='b99c00c9'/> - <pointer-type-def type-id='d11b7617' size-in-bits='64' id='23432aaa'/> + <pointer-type-def type-id='8f92235e' size-in-bits='64' id='90421557'/> + <function-decl name='nvpair_value_uint32' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='dace003f'/> + <parameter type-id='90421557'/> + <return type-id='95e97e5e'/> + </function-decl> <var-decl name='zfs_history_event_names' type-id='5ce15418' mangled-name='zfs_history_event_names' visibility='default' elf-symbol-id='zfs_history_event_names'/> + <function-decl name='strpbrk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> <function-decl name='zfs_allocatable_devs' mangled-name='zfs_allocatable_devs' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_allocatable_devs'> <parameter type-id='5ce45b60' name='nv'/> <return type-id='c19b74c3'/> </function-decl> <function-decl name='zfs_special_devs' mangled-name='zfs_special_devs' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_special_devs'> <parameter type-id='5ce45b60' name='nv'/> - <parameter type-id='26a90f95' name='type'/> + <parameter type-id='80f4b756' name='type'/> <return type-id='c19b74c3'/> </function-decl> - <function-decl name='zpool_get_load_policy' mangled-name='zpool_get_load_policy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_get_load_policy'> - <parameter type-id='5ce45b60' name='nvl'/> - <parameter type-id='23432aaa' name='zlpp'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='zfs_zpl_version_map' mangled-name='zfs_zpl_version_map' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_zpl_version_map'> <parameter type-id='95e97e5e' name='spa_version'/> <return type-id='95e97e5e'/> @@ -4963,6 +9144,9 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='module/zcommon/zfs_deleg.c' language='LANG_C99'> + <array-type-def dimensions='1' type-id='fa1870fd' size-in-bits='4096' id='59e94aca'> + <subrange length='32' type-id='7359adad' id='ae5bde82'/> + </array-type-def> <array-type-def dimensions='1' type-id='fa1870fd' size-in-bits='infinite' id='7c00e69d'> <subrange length='infinite' id='031f2035'/> </array-type-def> @@ -5019,7 +9203,7 @@ <typedef-decl name='zfs_deleg_note_t' type-id='729d4547' id='4613c173'/> <class-decl name='zfs_deleg_perm_tab' size-in-bits='128' is-struct='yes' visibility='default' id='5aa05c1f'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='z_perm' type-id='26a90f95' visibility='default'/> + <var-decl name='z_perm' type-id='80f4b756' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> <var-decl name='z_note' type-id='4613c173' visibility='default'/> @@ -5028,6 +9212,16 @@ <typedef-decl name='zfs_deleg_perm_tab_t' type-id='5aa05c1f' id='f3f851ad'/> <qualified-type-def type-id='f3f851ad' const='yes' id='fa1870fd'/> <var-decl name='zfs_deleg_perm_tab' type-id='7c00e69d' mangled-name='zfs_deleg_perm_tab' visibility='default' elf-symbol-id='zfs_deleg_perm_tab'/> + <function-decl name='permset_namecheck' mangled-name='permset_namecheck' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='permset_namecheck'> + <parameter type-id='80f4b756'/> + <parameter type-id='053457bd'/> + <parameter type-id='26a90f95'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zfs_prop_delegatable' mangled-name='zfs_prop_delegatable' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_delegatable'> + <parameter type-id='58603c44'/> + <return type-id='c19b74c3'/> + </function-decl> <function-decl name='zfs_deleg_canonicalize_perm' mangled-name='zfs_deleg_canonicalize_perm' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_deleg_canonicalize_perm'> <parameter type-id='80f4b756' name='perm'/> <return type-id='80f4b756'/> @@ -5045,9 +9239,6 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='module/zcommon/zfs_fletcher.c' language='LANG_C99'> - <array-type-def dimensions='1' type-id='9c313c2d' size-in-bits='256' id='85c64d26'> - <subrange length='4' type-id='7359adad' id='16fe7105'/> - </array-type-def> <array-type-def dimensions='1' type-id='9c313c2d' size-in-bits='512' id='c5d13f42'> <subrange length='8' type-id='7359adad' id='56e0c0b1'/> </array-type-def> @@ -5063,12 +9254,6 @@ <array-type-def dimensions='1' type-id='6d059eaa' size-in-bits='1024' id='729b6ebb'> <subrange length='4' type-id='7359adad' id='16fe7105'/> </array-type-def> - <class-decl name='zio_cksum' size-in-bits='256' is-struct='yes' visibility='default' id='1d53e28b'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='zc_word' type-id='85c64d26' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='zio_cksum_t' type-id='1d53e28b' id='39730d0b'/> <enum-decl name='zio_byteorder_t' naming-typedef-id='595a65ec' id='fc861be0'> <underlying-type type-id='9cac1fee'/> <enumerator name='ZIO_CHECKSUM_NATIVE' value='0'/> @@ -5149,12 +9334,21 @@ <typedef-decl name='fletcher_4_ctx_t' type-id='1f951ade' id='4b675395'/> <qualified-type-def type-id='aa14691a' const='yes' id='3f8e8d11'/> <pointer-type-def type-id='4b675395' size-in-bits='64' id='0f7df99e'/> + <qualified-type-def type-id='8f92235e' volatile='yes' id='430e0681'/> + <pointer-type-def type-id='430e0681' size-in-bits='64' id='3a147f31'/> <pointer-type-def type-id='74e39470' size-in-bits='64' id='eefe7427'/> <pointer-type-def type-id='d6fd5c6c' size-in-bits='64' id='bfe36153'/> <pointer-type-def type-id='029a8ebe' size-in-bits='64' id='0bcca125'/> <pointer-type-def type-id='cefa0f4a' size-in-bits='64' id='1e276399'/> - <pointer-type-def type-id='39730d0b' size-in-bits='64' id='c24fc2ee'/> <var-decl name='fletcher_4_abd_ops' type-id='c2eb138a' mangled-name='fletcher_4_abd_ops' visibility='default' elf-symbol-id='fletcher_4_abd_ops'/> + <function-decl name='atomic_swap_32' mangled-name='atomic_swap_32' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_swap_32'> + <parameter type-id='3a147f31'/> + <parameter type-id='8f92235e'/> + <return type-id='8f92235e'/> + </function-decl> + <function-decl name='membar_producer' mangled-name='membar_producer' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='membar_producer'> + <return type-id='48b5725f'/> + </function-decl> <function-decl name='fletcher_init' mangled-name='fletcher_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_init'> <parameter type-id='c24fc2ee' name='zcp'/> <return type-id='48b5725f'/> @@ -5196,12 +9390,6 @@ <parameter type-id='c24fc2ee' name='zcp'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='fletcher_4_native_varsize' mangled-name='fletcher_4_native_varsize' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_4_native_varsize'> - <parameter type-id='eaa32e2f' name='buf'/> - <parameter type-id='9c313c2d' name='size'/> - <parameter type-id='c24fc2ee' name='zcp'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='fletcher_4_byteswap' mangled-name='fletcher_4_byteswap' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_4_byteswap'> <parameter type-id='eaa32e2f' name='buf'/> <parameter type-id='9c313c2d' name='size'/> @@ -5209,24 +9397,6 @@ <parameter type-id='c24fc2ee' name='zcp'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='fletcher_4_incremental_native' mangled-name='fletcher_4_incremental_native' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_4_incremental_native'> - <parameter type-id='eaa32e2f' name='buf'/> - <parameter type-id='b59d7dce' name='size'/> - <parameter type-id='eaa32e2f' name='data'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='fletcher_4_incremental_byteswap' mangled-name='fletcher_4_incremental_byteswap' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_4_incremental_byteswap'> - <parameter type-id='eaa32e2f' name='buf'/> - <parameter type-id='b59d7dce' name='size'/> - <parameter type-id='eaa32e2f' name='data'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='fletcher_4_init' mangled-name='fletcher_4_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_4_init'> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='fletcher_4_fini' mangled-name='fletcher_4_fini' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fletcher_4_fini'> - <return type-id='48b5725f'/> - </function-decl> <function-type size-in-bits='64' id='f4a1892e'> <parameter type-id='eaa32e2f'/> <parameter type-id='b59d7dce'/> @@ -5242,7 +9412,7 @@ <typedef-decl name='fletcher_4_init_f' type-id='173aa527' id='b9ae1656'/> <typedef-decl name='fletcher_4_fini_f' type-id='0ad5b8a8' id='c4c1f4fc'/> <typedef-decl name='fletcher_4_compute_f' type-id='38147eff' id='ad1dc4cb'/> - <class-decl name='fletcher_4_func' size-in-bits='512' is-struct='yes' visibility='default' id='57f479a0'> + <class-decl name='fletcher_4_func' size-in-bits='1024' is-struct='yes' visibility='default' id='57f479a0'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='init_native' type-id='b9ae1656' visibility='default'/> </data-member> @@ -5265,6 +9435,9 @@ <var-decl name='valid' type-id='297d38bc' visibility='default'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='uses_fpu' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> <var-decl name='name' type-id='80f4b756' visibility='default'/> </data-member> </class-decl> @@ -5309,24 +9482,6 @@ <var-decl name='fletcher_4_superscalar4_ops' type-id='9eeabdc8' mangled-name='fletcher_4_superscalar4_ops' visibility='default' elf-symbol-id='fletcher_4_superscalar4_ops'/> </abi-instr> <abi-instr address-size='64' path='module/zcommon/zfs_namecheck.c' language='LANG_C99'> - <enum-decl name='namecheck_err_t' naming-typedef-id='8e0af06e' id='f43bbcda'> - <underlying-type type-id='9cac1fee'/> - <enumerator name='NAME_ERR_LEADING_SLASH' value='0'/> - <enumerator name='NAME_ERR_EMPTY_COMPONENT' value='1'/> - <enumerator name='NAME_ERR_TRAILING_SLASH' value='2'/> - <enumerator name='NAME_ERR_INVALCHAR' value='3'/> - <enumerator name='NAME_ERR_MULTIPLE_DELIMITERS' value='4'/> - <enumerator name='NAME_ERR_NOLETTER' value='5'/> - <enumerator name='NAME_ERR_RESERVED' value='6'/> - <enumerator name='NAME_ERR_DISKLIKE' value='7'/> - <enumerator name='NAME_ERR_TOOLONG' value='8'/> - <enumerator name='NAME_ERR_SELF_REF' value='9'/> - <enumerator name='NAME_ERR_PARENT_REF' value='10'/> - <enumerator name='NAME_ERR_NO_AT' value='11'/> - <enumerator name='NAME_ERR_NO_POUND' value='12'/> - </enum-decl> - <typedef-decl name='namecheck_err_t' type-id='f43bbcda' id='8e0af06e'/> - <pointer-type-def type-id='8e0af06e' size-in-bits='64' id='053457bd'/> <var-decl name='zfs_max_dataset_nesting' type-id='95e97e5e' mangled-name='zfs_max_dataset_nesting' visibility='default' elf-symbol-id='zfs_max_dataset_nesting'/> <function-decl name='get_dataset_depth' mangled-name='get_dataset_depth' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='get_dataset_depth'> <parameter type-id='80f4b756' name='path'/> @@ -5338,22 +9493,6 @@ <parameter type-id='26a90f95' name='what'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='permset_namecheck' mangled-name='permset_namecheck' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='permset_namecheck'> - <parameter type-id='80f4b756' name='path'/> - <parameter type-id='053457bd' name='why'/> - <parameter type-id='26a90f95' name='what'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='dataset_nestcheck' mangled-name='dataset_nestcheck' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dataset_nestcheck'> - <parameter type-id='80f4b756' name='path'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='entity_namecheck' mangled-name='entity_namecheck' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='entity_namecheck'> - <parameter type-id='80f4b756' name='path'/> - <parameter type-id='053457bd' name='why'/> - <parameter type-id='26a90f95' name='what'/> - <return type-id='95e97e5e'/> - </function-decl> <function-decl name='dataset_namecheck' mangled-name='dataset_namecheck' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dataset_namecheck'> <parameter type-id='80f4b756' name='path'/> <parameter type-id='053457bd' name='why'/> @@ -5372,125 +9511,100 @@ <parameter type-id='26a90f95' name='what'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='mountpoint_namecheck' mangled-name='mountpoint_namecheck' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mountpoint_namecheck'> - <parameter type-id='80f4b756' name='path'/> - <parameter type-id='053457bd' name='why'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='pool_namecheck' mangled-name='pool_namecheck' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='pool_namecheck'> - <parameter type-id='80f4b756' name='pool'/> - <parameter type-id='053457bd' name='why'/> - <parameter type-id='26a90f95' name='what'/> - <return type-id='95e97e5e'/> - </function-decl> </abi-instr> <abi-instr address-size='64' path='module/zcommon/zfs_prop.c' language='LANG_C99'> <array-type-def dimensions='1' type-id='b99c00c9' size-in-bits='768' id='bcc77e38'> <subrange length='12' type-id='7359adad' id='84827bdc'/> </array-type-def> - <enum-decl name='zprop_type_t' naming-typedef-id='31429eff' id='87676253'> - <underlying-type type-id='9cac1fee'/> - <enumerator name='PROP_TYPE_NUMBER' value='0'/> - <enumerator name='PROP_TYPE_STRING' value='1'/> - <enumerator name='PROP_TYPE_INDEX' value='2'/> - </enum-decl> - <typedef-decl name='zprop_type_t' type-id='87676253' id='31429eff'/> - <enum-decl name='zprop_attr_t' naming-typedef-id='999701cc' id='77d05200'> - <underlying-type type-id='9cac1fee'/> - <enumerator name='PROP_DEFAULT' value='0'/> - <enumerator name='PROP_READONLY' value='1'/> - <enumerator name='PROP_INHERIT' value='2'/> - <enumerator name='PROP_ONETIME' value='3'/> - <enumerator name='PROP_ONETIME_DEFAULT' value='4'/> - </enum-decl> - <typedef-decl name='zprop_attr_t' type-id='77d05200' id='999701cc'/> - <class-decl name='zfs_index' size-in-bits='128' is-struct='yes' visibility='default' id='87957af9'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='pi_name' type-id='80f4b756' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='pi_value' type-id='9c313c2d' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='zprop_index_t' type-id='87957af9' id='64636ce3'/> - <class-decl name='zprop_desc_t' size-in-bits='640' is-struct='yes' naming-typedef-id='ffa52b96' visibility='default' id='bbff5e4b'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='pd_name' type-id='80f4b756' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='pd_propnum' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='pd_proptype' type-id='31429eff' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='pd_strdefault' type-id='80f4b756' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='pd_numdefault' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='pd_attr' type-id='999701cc' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='pd_types' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='pd_values' type-id='80f4b756' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='pd_colname' type-id='80f4b756' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='pd_rightalign' type-id='c19b74c3' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='449'> - <var-decl name='pd_visible' type-id='c19b74c3' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='450'> - <var-decl name='pd_zfs_mod_supported' type-id='c19b74c3' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='451'> - <var-decl name='pd_always_flex' type-id='c19b74c3' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='pd_table' type-id='c8bc397b' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='pd_table_size' type-id='b59d7dce' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='zprop_desc_t' type-id='bbff5e4b' id='ffa52b96'/> - <pointer-type-def type-id='80f4b756' size-in-bits='64' id='7d3cd834'/> - <qualified-type-def type-id='64636ce3' const='yes' id='072f7953'/> - <pointer-type-def type-id='072f7953' size-in-bits='64' id='c8bc397b'/> - <pointer-type-def type-id='ffa52b96' size-in-bits='64' id='76c8174b'/> + <pointer-type-def type-id='3eee3342' size-in-bits='64' id='73f8e240'/> <var-decl name='zfs_userquota_prop_prefixes' type-id='bcc77e38' mangled-name='zfs_userquota_prop_prefixes' visibility='default' elf-symbol-id='zfs_userquota_prop_prefixes'/> - <function-decl name='zfs_prop_get_table' mangled-name='zfs_prop_get_table' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_get_table'> - <return type-id='76c8174b'/> + <function-decl name='zfs_mod_list_supported' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='73f8e240'/> </function-decl> - <function-decl name='zfs_prop_init' mangled-name='zfs_prop_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_init'> + <function-decl name='zfs_mod_list_supported_free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='73f8e240'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='zfs_prop_delegatable' mangled-name='zfs_prop_delegatable' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_delegatable'> - <parameter type-id='58603c44' name='prop'/> - <return type-id='c19b74c3'/> + <function-decl name='zprop_register_impl' mangled-name='zprop_register_impl' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_register_impl'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='31429eff'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='80f4b756'/> + <parameter type-id='999701cc'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='c8bc397b'/> + <parameter type-id='a3372543'/> + <return type-id='48b5725f'/> </function-decl> - <function-decl name='zfs_name_to_prop' mangled-name='zfs_name_to_prop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_name_to_prop'> - <parameter type-id='80f4b756' name='propname'/> - <return type-id='58603c44'/> + <function-decl name='zprop_register_string' mangled-name='zprop_register_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_register_string'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='999701cc'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='a3372543'/> + <return type-id='48b5725f'/> </function-decl> - <function-decl name='zfs_prop_user' mangled-name='zfs_prop_user' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_user'> - <parameter type-id='80f4b756' name='name'/> - <return type-id='c19b74c3'/> + <function-decl name='zprop_register_number' mangled-name='zprop_register_number' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_register_number'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='999701cc'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='a3372543'/> + <return type-id='48b5725f'/> </function-decl> - <function-decl name='zfs_prop_userquota' mangled-name='zfs_prop_userquota' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_userquota'> - <parameter type-id='80f4b756' name='name'/> - <return type-id='c19b74c3'/> + <function-decl name='zprop_register_index' mangled-name='zprop_register_index' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_register_index'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='999701cc'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='c8bc397b'/> + <parameter type-id='a3372543'/> + <return type-id='48b5725f'/> </function-decl> - <function-decl name='zfs_prop_written' mangled-name='zfs_prop_written' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_written'> - <parameter type-id='80f4b756' name='name'/> - <return type-id='c19b74c3'/> + <function-decl name='zprop_register_hidden' mangled-name='zprop_register_hidden' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_register_hidden'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='31429eff'/> + <parameter type-id='999701cc'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter type-id='c19b74c3'/> + <parameter type-id='a3372543'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zprop_index_to_string' mangled-name='zprop_index_to_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_index_to_string'> + <parameter type-id='95e97e5e'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='7d3cd834'/> + <parameter type-id='2e45de5d'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zprop_random_value' mangled-name='zprop_random_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_random_value'> + <parameter type-id='95e97e5e'/> + <parameter type-id='9c313c2d'/> + <parameter type-id='2e45de5d'/> + <return type-id='9c313c2d'/> + </function-decl> + <function-decl name='zprop_valid_char' mangled-name='zprop_valid_char' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_valid_char'> + <parameter type-id='a84c031d'/> + <return type-id='95e97e5e'/> </function-decl> <function-decl name='zfs_prop_string_to_index' mangled-name='zfs_prop_string_to_index' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_string_to_index'> <parameter type-id='58603c44' name='prop'/> @@ -5498,64 +9612,15 @@ <parameter type-id='5d6479ae' name='index'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zfs_prop_index_to_string' mangled-name='zfs_prop_index_to_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_index_to_string'> - <parameter type-id='58603c44' name='prop'/> - <parameter type-id='9c313c2d' name='index'/> - <parameter type-id='7d3cd834' name='string'/> - <return type-id='95e97e5e'/> - </function-decl> <function-decl name='zfs_prop_random_value' mangled-name='zfs_prop_random_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_random_value'> <parameter type-id='58603c44' name='prop'/> <parameter type-id='9c313c2d' name='seed'/> <return type-id='9c313c2d'/> </function-decl> - <function-decl name='zfs_prop_valid_for_type' mangled-name='zfs_prop_valid_for_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_valid_for_type'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='2e45de5d' name='types'/> - <parameter type-id='c19b74c3' name='headcheck'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='zfs_prop_get_type' mangled-name='zfs_prop_get_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_get_type'> - <parameter type-id='58603c44' name='prop'/> - <return type-id='31429eff'/> - </function-decl> - <function-decl name='zfs_prop_readonly' mangled-name='zfs_prop_readonly' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_readonly'> - <parameter type-id='58603c44' name='prop'/> - <return type-id='c19b74c3'/> - </function-decl> <function-decl name='zfs_prop_visible' mangled-name='zfs_prop_visible' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_visible'> <parameter type-id='58603c44' name='prop'/> <return type-id='c19b74c3'/> </function-decl> - <function-decl name='zfs_prop_setonce' mangled-name='zfs_prop_setonce' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_setonce'> - <parameter type-id='58603c44' name='prop'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='zfs_prop_default_string' mangled-name='zfs_prop_default_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_default_string'> - <parameter type-id='58603c44' name='prop'/> - <return type-id='80f4b756'/> - </function-decl> - <function-decl name='zfs_prop_default_numeric' mangled-name='zfs_prop_default_numeric' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_default_numeric'> - <parameter type-id='58603c44' name='prop'/> - <return type-id='9c313c2d'/> - </function-decl> - <function-decl name='zfs_prop_to_name' mangled-name='zfs_prop_to_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_to_name'> - <parameter type-id='58603c44' name='prop'/> - <return type-id='80f4b756'/> - </function-decl> - <function-decl name='zfs_prop_inheritable' mangled-name='zfs_prop_inheritable' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_inheritable'> - <parameter type-id='58603c44' name='prop'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='zfs_prop_encryption_key_param' mangled-name='zfs_prop_encryption_key_param' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_encryption_key_param'> - <parameter type-id='58603c44' name='prop'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='zfs_prop_valid_keylocation' mangled-name='zfs_prop_valid_keylocation' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_valid_keylocation'> - <parameter type-id='80f4b756' name='str'/> - <parameter type-id='c19b74c3' name='encrypted'/> - <return type-id='c19b74c3'/> - </function-decl> <function-decl name='zfs_prop_values' mangled-name='zfs_prop_values' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zfs_prop_values'> <parameter type-id='58603c44' name='prop'/> <return type-id='80f4b756'/> @@ -5574,60 +9639,12 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='module/zcommon/zpool_prop.c' language='LANG_C99'> - <function-decl name='zpool_prop_get_table' mangled-name='zpool_prop_get_table' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_get_table'> - <return type-id='76c8174b'/> - </function-decl> - <function-decl name='zpool_prop_init' mangled-name='zpool_prop_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_init'> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='zpool_name_to_prop' mangled-name='zpool_name_to_prop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_name_to_prop'> - <parameter type-id='80f4b756' name='propname'/> - <return type-id='5d0c23fb'/> - </function-decl> - <function-decl name='zpool_prop_to_name' mangled-name='zpool_prop_to_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_to_name'> - <parameter type-id='5d0c23fb' name='prop'/> - <return type-id='80f4b756'/> - </function-decl> - <function-decl name='zpool_prop_get_type' mangled-name='zpool_prop_get_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_get_type'> - <parameter type-id='5d0c23fb' name='prop'/> - <return type-id='31429eff'/> - </function-decl> - <function-decl name='zpool_prop_readonly' mangled-name='zpool_prop_readonly' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_readonly'> - <parameter type-id='5d0c23fb' name='prop'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='zpool_prop_setonce' mangled-name='zpool_prop_setonce' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_setonce'> - <parameter type-id='5d0c23fb' name='prop'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='zpool_prop_default_string' mangled-name='zpool_prop_default_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_default_string'> - <parameter type-id='5d0c23fb' name='prop'/> - <return type-id='80f4b756'/> - </function-decl> - <function-decl name='zpool_prop_default_numeric' mangled-name='zpool_prop_default_numeric' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_default_numeric'> - <parameter type-id='5d0c23fb' name='prop'/> - <return type-id='9c313c2d'/> - </function-decl> - <function-decl name='zpool_prop_feature' mangled-name='zpool_prop_feature' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_feature'> - <parameter type-id='80f4b756' name='name'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='zpool_prop_unsupported' mangled-name='zpool_prop_unsupported' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_unsupported'> - <parameter type-id='80f4b756' name='name'/> - <return type-id='c19b74c3'/> - </function-decl> <function-decl name='zpool_prop_string_to_index' mangled-name='zpool_prop_string_to_index' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_string_to_index'> <parameter type-id='5d0c23fb' name='prop'/> <parameter type-id='80f4b756' name='string'/> <parameter type-id='5d6479ae' name='index'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='zpool_prop_index_to_string' mangled-name='zpool_prop_index_to_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_index_to_string'> - <parameter type-id='5d0c23fb' name='prop'/> - <parameter type-id='9c313c2d' name='index'/> - <parameter type-id='7d3cd834' name='string'/> - <return type-id='95e97e5e'/> - </function-decl> <function-decl name='zpool_prop_random_value' mangled-name='zpool_prop_random_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_random_value'> <parameter type-id='5d0c23fb' name='prop'/> <parameter type-id='9c313c2d' name='seed'/> @@ -5648,53 +9665,12 @@ <function-decl name='vdev_prop_get_table' mangled-name='vdev_prop_get_table' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_get_table'> <return type-id='76c8174b'/> </function-decl> - <function-decl name='vdev_prop_init' mangled-name='vdev_prop_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_init'> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='vdev_name_to_prop' mangled-name='vdev_name_to_prop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_name_to_prop'> - <parameter type-id='80f4b756' name='propname'/> - <return type-id='5aa5c90c'/> - </function-decl> - <function-decl name='vdev_prop_user' mangled-name='vdev_prop_user' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_user'> - <parameter type-id='80f4b756' name='name'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='vdev_prop_to_name' mangled-name='vdev_prop_to_name' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_to_name'> - <parameter type-id='5aa5c90c' name='prop'/> - <return type-id='80f4b756'/> - </function-decl> - <function-decl name='vdev_prop_get_type' mangled-name='vdev_prop_get_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_get_type'> - <parameter type-id='5aa5c90c' name='prop'/> - <return type-id='31429eff'/> - </function-decl> - <function-decl name='vdev_prop_readonly' mangled-name='vdev_prop_readonly' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_readonly'> - <parameter type-id='5aa5c90c' name='prop'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='vdev_prop_default_string' mangled-name='vdev_prop_default_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_default_string'> - <parameter type-id='5aa5c90c' name='prop'/> - <return type-id='80f4b756'/> - </function-decl> - <function-decl name='vdev_prop_default_numeric' mangled-name='vdev_prop_default_numeric' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_default_numeric'> - <parameter type-id='5aa5c90c' name='prop'/> - <return type-id='9c313c2d'/> - </function-decl> <function-decl name='vdev_prop_string_to_index' mangled-name='vdev_prop_string_to_index' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_string_to_index'> <parameter type-id='5aa5c90c' name='prop'/> <parameter type-id='80f4b756' name='string'/> <parameter type-id='5d6479ae' name='index'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='vdev_prop_index_to_string' mangled-name='vdev_prop_index_to_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_index_to_string'> - <parameter type-id='5aa5c90c' name='prop'/> - <parameter type-id='9c313c2d' name='index'/> - <parameter type-id='7d3cd834' name='string'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='zpool_prop_vdev' mangled-name='zpool_prop_vdev' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zpool_prop_vdev'> - <parameter type-id='80f4b756' name='name'/> - <return type-id='c19b74c3'/> - </function-decl> <function-decl name='vdev_prop_random_value' mangled-name='vdev_prop_random_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vdev_prop_random_value'> <parameter type-id='5aa5c90c' name='prop'/> <parameter type-id='9c313c2d' name='seed'/> @@ -5714,122 +9690,8 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='module/zcommon/zprop_common.c' language='LANG_C99'> - <function-decl name='zprop_register_impl' mangled-name='zprop_register_impl' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_register_impl'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='31429eff' name='type'/> - <parameter type-id='9c313c2d' name='numdefault'/> - <parameter type-id='80f4b756' name='strdefault'/> - <parameter type-id='999701cc' name='attr'/> - <parameter type-id='95e97e5e' name='objset_types'/> - <parameter type-id='80f4b756' name='values'/> - <parameter type-id='80f4b756' name='colname'/> - <parameter type-id='c19b74c3' name='rightalign'/> - <parameter type-id='c19b74c3' name='visible'/> - <parameter type-id='c19b74c3' name='flex'/> - <parameter type-id='c8bc397b' name='idx_tbl'/> - <parameter type-id='a3372543' name='sfeatures'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='zprop_register_string' mangled-name='zprop_register_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_register_string'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='80f4b756' name='def'/> - <parameter type-id='999701cc' name='attr'/> - <parameter type-id='95e97e5e' name='objset_types'/> - <parameter type-id='80f4b756' name='values'/> - <parameter type-id='80f4b756' name='colname'/> - <parameter type-id='a3372543' name='sfeatures'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='zprop_register_number' mangled-name='zprop_register_number' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_register_number'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='9c313c2d' name='def'/> - <parameter type-id='999701cc' name='attr'/> - <parameter type-id='95e97e5e' name='objset_types'/> - <parameter type-id='80f4b756' name='values'/> - <parameter type-id='80f4b756' name='colname'/> - <parameter type-id='c19b74c3' name='flex'/> - <parameter type-id='a3372543' name='sfeatures'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='zprop_register_index' mangled-name='zprop_register_index' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_register_index'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='9c313c2d' name='def'/> - <parameter type-id='999701cc' name='attr'/> - <parameter type-id='95e97e5e' name='objset_types'/> - <parameter type-id='80f4b756' name='values'/> - <parameter type-id='80f4b756' name='colname'/> - <parameter type-id='c8bc397b' name='idx_tbl'/> - <parameter type-id='a3372543' name='sfeatures'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='zprop_register_hidden' mangled-name='zprop_register_hidden' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_register_hidden'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='80f4b756' name='name'/> - <parameter type-id='31429eff' name='type'/> - <parameter type-id='999701cc' name='attr'/> - <parameter type-id='95e97e5e' name='objset_types'/> - <parameter type-id='80f4b756' name='colname'/> - <parameter type-id='c19b74c3' name='flex'/> - <parameter type-id='a3372543' name='sfeatures'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='zprop_iter_common' mangled-name='zprop_iter_common' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_iter_common'> - <parameter type-id='1ec3747a' name='func'/> - <parameter type-id='eaa32e2f' name='cb'/> - <parameter type-id='c19b74c3' name='show_all'/> - <parameter type-id='c19b74c3' name='ordered'/> - <parameter type-id='2e45de5d' name='type'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='zprop_name_to_prop' mangled-name='zprop_name_to_prop' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_name_to_prop'> - <parameter type-id='80f4b756' name='propname'/> - <parameter type-id='2e45de5d' name='type'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='zprop_string_to_index' mangled-name='zprop_string_to_index' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_string_to_index'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='80f4b756' name='string'/> - <parameter type-id='5d6479ae' name='index'/> - <parameter type-id='2e45de5d' name='type'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='zprop_index_to_string' mangled-name='zprop_index_to_string' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_index_to_string'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='9c313c2d' name='index'/> - <parameter type-id='7d3cd834' name='string'/> - <parameter type-id='2e45de5d' name='type'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='zprop_random_value' mangled-name='zprop_random_value' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_random_value'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='9c313c2d' name='seed'/> - <parameter type-id='2e45de5d' name='type'/> - <return type-id='9c313c2d'/> - </function-decl> - <function-decl name='zprop_values' mangled-name='zprop_values' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_values'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='2e45de5d' name='type'/> - <return type-id='80f4b756'/> - </function-decl> - <function-decl name='zprop_valid_for_type' mangled-name='zprop_valid_for_type' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_valid_for_type'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='2e45de5d' name='type'/> - <parameter type-id='c19b74c3' name='headcheck'/> - <return type-id='c19b74c3'/> - </function-decl> - <function-decl name='zprop_valid_char' mangled-name='zprop_valid_char' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_valid_char'> - <parameter type-id='a84c031d' name='c'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='zprop_width' mangled-name='zprop_width' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zprop_width'> - <parameter type-id='95e97e5e' name='prop'/> - <parameter type-id='37e3bd22' name='fixed'/> - <parameter type-id='2e45de5d' name='type'/> - <return type-id='b59d7dce'/> + <function-decl name='__ctype_tolower_loc' visibility='default' binding='global' size-in-bits='64'> + <return type-id='24f95ba5'/> </function-decl> </abi-instr> </abi-corpus> diff --git a/lib/libzfs/libzfs_changelist.c b/lib/libzfs/libzfs_changelist.c index d31bbc4a3b42..4db1cbce9568 100644 --- a/lib/libzfs/libzfs_changelist.c +++ b/lib/libzfs/libzfs_changelist.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -105,6 +105,15 @@ changelist_prefix(prop_changelist_t *clp) clp->cl_prop != ZFS_PROP_SHARESMB) return (0); + /* + * If CL_GATHER_DONT_UNMOUNT is set, don't want to unmount/unshare and + * later (re)mount/(re)share the filesystem in postfix phase, so we + * return from here. If filesystem is mounted or unmounted, leave it + * as it is. + */ + if (clp->cl_gflags & CL_GATHER_DONT_UNMOUNT) + return (0); + if ((walk = uu_avl_walk_start(clp->cl_tree, UU_WALK_ROBUST)) == NULL) return (-1); @@ -129,8 +138,6 @@ changelist_prefix(prop_changelist_t *clp) */ switch (clp->cl_prop) { case ZFS_PROP_MOUNTPOINT: - if (clp->cl_gflags & CL_GATHER_DONT_UNMOUNT) - break; if (zfs_unmount(cn->cn_handle, NULL, clp->cl_mflags) != 0) { ret = -1; @@ -164,9 +171,8 @@ changelist_prefix(prop_changelist_t *clp) * reshare the filesystems as necessary. In changelist_gather() we recorded * whether the filesystem was previously shared or mounted. The action we take * depends on the previous state, and whether the value was previously 'legacy'. - * For non-legacy properties, we only remount/reshare the filesystem if it was - * previously mounted/shared. Otherwise, we always remount/reshare the - * filesystem. + * For non-legacy properties, we always remount/reshare the filesystem, + * if CL_GATHER_DONT_UNMOUNT is not set. */ int changelist_postfix(prop_changelist_t *clp) @@ -174,11 +180,18 @@ changelist_postfix(prop_changelist_t *clp) prop_changenode_t *cn; uu_avl_walk_t *walk; char shareopts[ZFS_MAXPROPLEN]; - int errors = 0; boolean_t commit_smb_shares = B_FALSE; boolean_t commit_nfs_shares = B_FALSE; /* + * If CL_GATHER_DONT_UNMOUNT is set, it means we don't want to (un)mount + * or (re/un)share the filesystem, so we return from here. If filesystem + * is mounted or unmounted, leave it as it is. + */ + if (clp->cl_gflags & CL_GATHER_DONT_UNMOUNT) + return (0); + + /* * If we're changing the mountpoint, attempt to destroy the underlying * mountpoint. All other datasets will have inherited from this dataset * (in which case their mountpoints exist in the filesystem in the new @@ -240,17 +253,16 @@ changelist_postfix(prop_changelist_t *clp) needs_key = (zfs_prop_get_int(cn->cn_handle, ZFS_PROP_KEYSTATUS) == ZFS_KEYSTATUS_UNAVAILABLE); - mounted = (clp->cl_gflags & CL_GATHER_DONT_UNMOUNT) || - zfs_is_mounted(cn->cn_handle, NULL); + mounted = zfs_is_mounted(cn->cn_handle, NULL); if (!mounted && !needs_key && (cn->cn_mounted || - ((sharenfs || sharesmb || clp->cl_waslegacy) && + (((clp->cl_prop == ZFS_PROP_MOUNTPOINT && + clp->cl_prop == clp->cl_realprop) || + sharenfs || sharesmb || clp->cl_waslegacy) && (zfs_prop_get_int(cn->cn_handle, ZFS_PROP_CANMOUNT) == ZFS_CANMOUNT_ON)))) { - if (zfs_mount(cn->cn_handle, NULL, 0) != 0) - errors++; - else + if (zfs_mount(cn->cn_handle, NULL, 0) == 0) mounted = TRUE; } @@ -262,19 +274,19 @@ changelist_postfix(prop_changelist_t *clp) const enum sa_protocol nfs[] = {SA_PROTOCOL_NFS, SA_NO_PROTOCOL}; if (sharenfs && mounted) { - errors += zfs_share(cn->cn_handle, nfs); + zfs_share(cn->cn_handle, nfs); commit_nfs_shares = B_TRUE; } else if (cn->cn_shared || clp->cl_waslegacy) { - errors += zfs_unshare(cn->cn_handle, NULL, nfs); + zfs_unshare(cn->cn_handle, NULL, nfs); commit_nfs_shares = B_TRUE; } const enum sa_protocol smb[] = {SA_PROTOCOL_SMB, SA_NO_PROTOCOL}; if (sharesmb && mounted) { - errors += zfs_share(cn->cn_handle, smb); + zfs_share(cn->cn_handle, smb); commit_smb_shares = B_TRUE; } else if (cn->cn_shared || clp->cl_waslegacy) { - errors += zfs_unshare(cn->cn_handle, NULL, smb); + zfs_unshare(cn->cn_handle, NULL, smb); commit_smb_shares = B_TRUE; } } @@ -288,7 +300,7 @@ changelist_postfix(prop_changelist_t *clp) zfs_commit_shares(proto); uu_avl_walk_end(walk); - return (errors ? -1 : 0); + return (0); } /* @@ -552,7 +564,7 @@ change_one(zfs_handle_t *zhp, void *data) } if (!clp->cl_alldependents) - ret = zfs_iter_children(zhp, change_one, data); + ret = zfs_iter_children_v2(zhp, 0, change_one, data); /* * If we added the handle to the changelist, we will re-use it @@ -721,11 +733,12 @@ changelist_gather(zfs_handle_t *zhp, zfs_prop_t prop, int gather_flags, return (NULL); } } else if (clp->cl_alldependents) { - if (zfs_iter_dependents(zhp, B_TRUE, change_one, clp) != 0) { + if (zfs_iter_dependents_v2(zhp, 0, B_TRUE, change_one, + clp) != 0) { changelist_free(clp); return (NULL); } - } else if (zfs_iter_children(zhp, change_one, clp) != 0) { + } else if (zfs_iter_children_v2(zhp, 0, change_one, clp) != 0) { changelist_free(clp); return (NULL); } diff --git a/lib/libzfs/libzfs_config.c b/lib/libzfs/libzfs_config.c index e3c815cf58b2..437afb3b7467 100644 --- a/lib/libzfs/libzfs_config.c +++ b/lib/libzfs/libzfs_config.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libzfs/libzfs_crypto.c b/lib/libzfs/libzfs_crypto.c index c241aeaa4da0..93dfa9cbc2c0 100644 --- a/lib/libzfs/libzfs_crypto.c +++ b/lib/libzfs/libzfs_crypto.c @@ -37,6 +37,7 @@ #include <curl/curl.h> #endif #include <libzfs.h> +#include <libzutil.h> #include "libzfs_impl.h" #include "zfeature_common.h" @@ -493,7 +494,7 @@ get_key_material_file(libzfs_handle_t *hdl, const char *uri, ret = errno; errno = 0; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, - "Failed to open key material file: %s"), strerror(ret)); + "Failed to open key material file: %s"), zfs_strerror(ret)); return (ret); } @@ -595,7 +596,7 @@ get_key_material_https(libzfs_handle_t *hdl, const char *uri, "%s/libzfs-XXXXXXXX.https", getenv("TMPDIR") ?: "/tmp") == -1) { ret = ENOMEM; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "%s"), - strerror(ret)); + zfs_strerror(ret)); goto end; } @@ -604,7 +605,7 @@ get_key_material_https(libzfs_handle_t *hdl, const char *uri, ret = errno; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Couldn't create temporary file %s: %s"), - path, strerror(ret)); + path, zfs_strerror(ret)); free(path); goto end; } @@ -616,7 +617,7 @@ kfdok: ret = errno; (void) close(kfd); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, - "Couldn't reopen temporary file: %s"), strerror(ret)); + "Couldn't reopen temporary file: %s"), zfs_strerror(ret)); goto end; } @@ -942,7 +943,7 @@ proplist_has_encryption_props(nvlist_t *props) { int ret; uint64_t intval; - char *strval; + const char *strval; ret = nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_ENCRYPTION), &intval); @@ -1007,7 +1008,7 @@ zfs_crypto_create(libzfs_handle_t *hdl, char *parent_name, nvlist_t *props, char errbuf[ERRBUFLEN]; uint64_t crypt = ZIO_CRYPT_INHERIT, pcrypt = ZIO_CRYPT_INHERIT; uint64_t keyformat = ZFS_KEYFORMAT_NONE; - char *keylocation = NULL; + const char *keylocation = NULL; zfs_handle_t *pzhp = NULL; uint8_t *wkeydata = NULL; uint_t wkeylen = 0; @@ -1226,7 +1227,7 @@ load_keys_cb(zfs_handle_t *zhp, void *arg) cb->cb_numfailed++; out: - (void) zfs_iter_filesystems(zhp, load_keys_cb, cb); + (void) zfs_iter_filesystems_v2(zhp, 0, load_keys_cb, cb); zfs_close(zhp); /* always return 0, since this function is best effort */ @@ -1407,6 +1408,11 @@ try_again: "Incorrect key provided for '%s'."), zfs_get_name(zhp)); break; + case ZFS_ERR_CRYPTO_NOTSUP: + zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, + "'%s' uses an unsupported encryption suite."), + zfs_get_name(zhp)); + break; } goto error; } @@ -1590,7 +1596,7 @@ zfs_crypto_rewrap(zfs_handle_t *zhp, nvlist_t *raw_props, boolean_t inheritkey) uint64_t crypt, pcrypt, keystatus, pkeystatus; uint64_t keyformat = ZFS_KEYFORMAT_NONE; zfs_handle_t *pzhp = NULL; - char *keylocation = NULL; + const char *keylocation = NULL; char origin_name[MAXNAMELEN]; char prop_keylocation[MAXNAMELEN]; char parent_name[ZFS_MAX_DATASET_NAME_LEN]; @@ -1700,7 +1706,7 @@ zfs_crypto_rewrap(zfs_handle_t *zhp, nvlist_t *raw_props, boolean_t inheritkey) /* default to prompt if no keylocation is specified */ if (keylocation == NULL) { - keylocation = (char *)"prompt"; + keylocation = "prompt"; ret = nvlist_add_string(props, zfs_prop_to_name(ZFS_PROP_KEYLOCATION), keylocation); diff --git a/lib/libzfs/libzfs_dataset.c b/lib/libzfs/libzfs_dataset.c index 4e25985a4ae8..6f8773aed425 100644 --- a/lib/libzfs/libzfs_dataset.c +++ b/lib/libzfs/libzfs_dataset.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -67,6 +67,10 @@ #include "libzfs_impl.h" #include "zfs_deleg.h" +static __thread struct passwd gpwd; +static __thread struct group ggrp; +static __thread char rpbuf[2048]; + static int userquota_propname_decode(const char *propname, boolean_t zoned, zfs_userquota_prop_t *typep, char *domain, int domainlen, uint64_t *ridp); @@ -528,6 +532,30 @@ make_dataset_simple_handle_zc(zfs_handle_t *pzhp, zfs_cmd_t *zc) zhp->zfs_type = ZFS_TYPE_SNAPSHOT; zhp->zpool_hdl = zpool_handle(zhp); + if (zc->zc_objset_stats.dds_creation_txg != 0) { + /* structure assignment */ + zhp->zfs_dmustats = zc->zc_objset_stats; + } else { + if (get_stats_ioctl(zhp, zc) == -1) { + zcmd_free_nvlists(zc); + free(zhp); + return (NULL); + } + if (make_dataset_handle_common(zhp, zc) == -1) { + zcmd_free_nvlists(zc); + free(zhp); + return (NULL); + } + } + + if (zhp->zfs_dmustats.dds_is_snapshot || + strchr(zc->zc_name, '@') != NULL) + zhp->zfs_type = ZFS_TYPE_SNAPSHOT; + else if (zhp->zfs_dmustats.dds_type == DMU_OST_ZVOL) + zhp->zfs_type = ZFS_TYPE_VOLUME; + else if (zhp->zfs_dmustats.dds_type == DMU_OST_ZFS) + zhp->zfs_type = ZFS_TYPE_FILESYSTEM; + return (zhp); } @@ -689,6 +717,7 @@ zfs_open(libzfs_handle_t *hdl, const char *path, int types) */ if (!zfs_validate_name(hdl, path, types, B_FALSE)) { (void) zfs_error(hdl, EZFS_INVALIDNAME, errbuf); + errno = EINVAL; return (NULL); } @@ -716,8 +745,8 @@ zfs_open(libzfs_handle_t *hdl, const char *path, int types) * to get the parent dataset name only. */ assert(bookp - path < sizeof (dsname)); - (void) strncpy(dsname, path, bookp - path); - dsname[bookp - path] = '\0'; + (void) strlcpy(dsname, path, + MIN(sizeof (dsname), bookp - path + 1)); /* * Create handle for the parent dataset. @@ -732,10 +761,11 @@ zfs_open(libzfs_handle_t *hdl, const char *path, int types) * Iterate bookmarks to find the right one. */ errno = 0; - if ((zfs_iter_bookmarks(pzhp, zfs_open_bookmarks_cb, + if ((zfs_iter_bookmarks_v2(pzhp, 0, zfs_open_bookmarks_cb, &cb_data) == 0) && (cb_data.zhp == NULL)) { (void) zfs_error(hdl, EZFS_NOENT, errbuf); zfs_close(pzhp); + errno = ENOENT; return (NULL); } if (cb_data.zhp == NULL) { @@ -754,6 +784,7 @@ zfs_open(libzfs_handle_t *hdl, const char *path, int types) if (!(types & zhp->zfs_type)) { (void) zfs_error(hdl, EZFS_BADTYPE, errbuf); zfs_close(zhp); + errno = EINVAL; return (NULL); } @@ -1002,11 +1033,12 @@ zfs_valid_proplist(libzfs_handle_t *hdl, zfs_type_t type, nvlist_t *nvl, { nvpair_t *elem; uint64_t intval; - char *strval; + const char *strval; zfs_prop_t prop; nvlist_t *ret; int chosen_normal = -1; int chosen_utf = -1; + int set_maxbs = 0; if (nvlist_alloc(&ret, NV_UNIQUE_NAME, 0) != 0) { (void) no_memory(hdl); @@ -1225,12 +1257,17 @@ zfs_valid_proplist(libzfs_handle_t *hdl, zfs_type_t type, nvlist_t *nvl, (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } + /* save the ZFS_PROP_RECORDSIZE during create op */ + if (zpool_hdl == NULL && prop == ZFS_PROP_RECORDSIZE) { + set_maxbs = intval; + } break; } case ZFS_PROP_SPECIAL_SMALL_BLOCKS: { - int maxbs = SPA_OLD_MAXBLOCKSIZE; + int maxbs = + set_maxbs == 0 ? SPA_OLD_MAXBLOCKSIZE : set_maxbs; char buf[64]; if (zpool_hdl != NULL) { @@ -1738,8 +1775,6 @@ error: return (ret); } - - /* * Given an nvlist of property names and values, set the properties for the * given dataset. @@ -1747,6 +1782,18 @@ error: int zfs_prop_set_list(zfs_handle_t *zhp, nvlist_t *props) { + return (zfs_prop_set_list_flags(zhp, props, 0)); +} + +/* + * Given an nvlist of property names, values and flags, set the properties + * for the given dataset. If ZFS_SET_NOMOUNT is set, it allows to update + * mountpoint, sharenfs and sharesmb properties without (un/re)mounting + * and (un/re)sharing the dataset. + */ +int +zfs_prop_set_list_flags(zfs_handle_t *zhp, nvlist_t *props, int flags) +{ zfs_cmd_t zc = {"\0"}; int ret = -1; prop_changelist_t **cls = NULL; @@ -1756,7 +1803,8 @@ zfs_prop_set_list(zfs_handle_t *zhp, nvlist_t *props) nvlist_t *nvl; int nvl_len = 0; int added_resv = 0; - zfs_prop_t prop = 0; + zfs_prop_t prop; + boolean_t nsprop = B_FALSE; nvpair_t *elem; (void) snprintf(errbuf, sizeof (errbuf), @@ -1803,6 +1851,7 @@ zfs_prop_set_list(zfs_handle_t *zhp, nvlist_t *props) elem = nvlist_next_nvpair(nvl, elem)) { prop = zfs_name_to_prop(nvpair_name(elem)); + nsprop |= zfs_is_namespace_prop(prop); assert(cl_idx < nvl_len); /* @@ -1813,7 +1862,9 @@ zfs_prop_set_list(zfs_handle_t *zhp, nvlist_t *props) if (prop != ZFS_PROP_CANMOUNT || (fnvpair_value_uint64(elem) == ZFS_CANMOUNT_OFF && zfs_is_mounted(zhp, NULL))) { - cls[cl_idx] = changelist_gather(zhp, prop, 0, 0); + cls[cl_idx] = changelist_gather(zhp, prop, + ((flags & ZFS_SET_NOMOUNT) ? + CL_GATHER_DONT_UNMOUNT : 0), 0); if (cls[cl_idx] == NULL) goto error; } @@ -1901,8 +1952,7 @@ zfs_prop_set_list(zfs_handle_t *zhp, nvlist_t *props) * if one of the options handled by the generic * Linux namespace layer has been modified. */ - if (zfs_is_namespace_prop(prop) && - zfs_is_mounted(zhp, NULL)) + if (nsprop && zfs_is_mounted(zhp, NULL)) ret = zfs_mount(zhp, MNTOPT_REMOUNT, 0); } } @@ -2005,7 +2055,8 @@ zfs_prop_inherit(zfs_handle_t *zhp, const char *propname, boolean_t received) if ((ret = changelist_prefix(cl)) != 0) goto error; - if ((ret = zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_INHERIT_PROP, &zc)) != 0) { + if (zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_INHERIT_PROP, &zc) != 0) { + changelist_free(cl); return (zfs_standard_error(hdl, errno, errbuf)); } else { @@ -2037,7 +2088,7 @@ error: * extract them appropriately. */ uint64_t -getprop_uint64(zfs_handle_t *zhp, zfs_prop_t prop, char **source) +getprop_uint64(zfs_handle_t *zhp, zfs_prop_t prop, const char **source) { nvlist_t *nv; uint64_t value; @@ -2051,14 +2102,14 @@ getprop_uint64(zfs_handle_t *zhp, zfs_prop_t prop, char **source) verify(!zhp->zfs_props_table || zhp->zfs_props_table[prop] == B_TRUE); value = zfs_prop_default_numeric(prop); - *source = (char *)""; + *source = ""; } return (value); } static const char * -getprop_string(zfs_handle_t *zhp, zfs_prop_t prop, char **source) +getprop_string(zfs_handle_t *zhp, zfs_prop_t prop, const char **source) { nvlist_t *nv; const char *value; @@ -2072,7 +2123,7 @@ getprop_string(zfs_handle_t *zhp, zfs_prop_t prop, char **source) verify(!zhp->zfs_props_table || zhp->zfs_props_table[prop] == B_TRUE); value = zfs_prop_default_string(prop); - *source = (char *)""; + *source = ""; } return (value); @@ -2081,20 +2132,21 @@ getprop_string(zfs_handle_t *zhp, zfs_prop_t prop, char **source) static boolean_t zfs_is_recvd_props_mode(zfs_handle_t *zhp) { - return (zhp->zfs_props == zhp->zfs_recvd_props); + return (zhp->zfs_props != NULL && + zhp->zfs_props == zhp->zfs_recvd_props); } static void -zfs_set_recvd_props_mode(zfs_handle_t *zhp, uint64_t *cookie) +zfs_set_recvd_props_mode(zfs_handle_t *zhp, uintptr_t *cookie) { - *cookie = (uint64_t)(uintptr_t)zhp->zfs_props; + *cookie = (uintptr_t)zhp->zfs_props; zhp->zfs_props = zhp->zfs_recvd_props; } static void -zfs_unset_recvd_props_mode(zfs_handle_t *zhp, uint64_t *cookie) +zfs_unset_recvd_props_mode(zfs_handle_t *zhp, uintptr_t *cookie) { - zhp->zfs_props = (nvlist_t *)(uintptr_t)*cookie; + zhp->zfs_props = (nvlist_t *)*cookie; *cookie = 0; } @@ -2109,7 +2161,7 @@ zfs_unset_recvd_props_mode(zfs_handle_t *zhp, uint64_t *cookie) */ static int get_numeric_property(zfs_handle_t *zhp, zfs_prop_t prop, zprop_source_t *src, - char **source, uint64_t *val) + const char **source, uint64_t *val) { zfs_cmd_t zc = {"\0"}; nvlist_t *zplprops = NULL; @@ -2283,6 +2335,28 @@ get_numeric_property(zfs_handle_t *zhp, zfs_prop_t prop, zprop_source_t *src, *val = zhp->zfs_dmustats.dds_redacted; break; + case ZFS_PROP_GUID: + if (zhp->zfs_dmustats.dds_guid != 0) + *val = zhp->zfs_dmustats.dds_guid; + else + *val = getprop_uint64(zhp, prop, source); + break; + + case ZFS_PROP_CREATETXG: + /* + * We can directly read createtxg property from zfs + * handle for Filesystem, Snapshot and ZVOL types. + */ + if (((zhp->zfs_type == ZFS_TYPE_FILESYSTEM) || + (zhp->zfs_type == ZFS_TYPE_SNAPSHOT) || + (zhp->zfs_type == ZFS_TYPE_VOLUME)) && + (zhp->zfs_dmustats.dds_creation_txg != 0)) { + *val = zhp->zfs_dmustats.dds_creation_txg; + break; + } else { + *val = getprop_uint64(zhp, prop, source); + } + zfs_fallthrough; default: switch (zfs_prop_get_type(prop)) { case PROP_TYPE_NUMBER: @@ -2319,7 +2393,7 @@ get_numeric_property(zfs_handle_t *zhp, zfs_prop_t prop, zprop_source_t *src, * Calculate the source type, given the raw source string. */ static void -get_source(zfs_handle_t *zhp, zprop_source_t *srctype, char *source, +get_source(zfs_handle_t *zhp, zprop_source_t *srctype, const char *source, char *statbuf, size_t statlen) { if (statbuf == NULL || @@ -2358,7 +2432,7 @@ zfs_prop_get_recvd(zfs_handle_t *zhp, const char *propname, char *propbuf, prop = zfs_name_to_prop(propname); if (prop != ZPROP_USERPROP) { - uint64_t cookie; + uintptr_t cookie; if (!nvlist_exists(zhp->zfs_recvd_props, propname)) return (-1); zfs_set_recvd_props_mode(zhp, &cookie); @@ -2367,7 +2441,7 @@ zfs_prop_get_recvd(zfs_handle_t *zhp, const char *propname, char *propbuf, zfs_unset_recvd_props_mode(zhp, &cookie); } else { nvlist_t *propval; - char *recvdval; + const char *recvdval; if (nvlist_lookup_nvlist(zhp->zfs_recvd_props, propname, &propval) != 0) return (-1); @@ -2425,7 +2499,7 @@ get_clones_cb(zfs_handle_t *zhp, void *arg) } out: - (void) zfs_iter_children(zhp, get_clones_cb, gca); + (void) zfs_iter_children_v2(zhp, 0, get_clones_cb, gca); zfs_close(zhp); return (0); } @@ -2569,7 +2643,7 @@ zcp_check(zfs_handle_t *zhp, zfs_prop_t prop, uint64_t intval, (u_longlong_t)intval, (u_longlong_t)ans); } } else { - char *str_ans; + const char *str_ans; error = nvlist_lookup_string(retnvl, "value", &str_ans); if (error != 0) { (void) fprintf(stderr, "%s: zcp check error: " @@ -2601,7 +2675,7 @@ int zfs_prop_get(zfs_handle_t *zhp, zfs_prop_t prop, char *propbuf, size_t proplen, zprop_source_t *src, char *statbuf, size_t statlen, boolean_t literal) { - char *source = NULL; + const char *source = NULL; uint64_t val; const char *str; const char *strval; @@ -2710,7 +2784,13 @@ zfs_prop_get(zfs_handle_t *zhp, zfs_prop_t prop, char *propbuf, size_t proplen, break; case ZFS_PROP_ORIGIN: - str = getprop_string(zhp, prop, &source); + if (*zhp->zfs_dmustats.dds_origin != '\0') { + str = (char *)&zhp->zfs_dmustats.dds_origin; + } else { + str = getprop_string(zhp, prop, &source); + } + if (str == NULL || *str == '\0') + str = zfs_prop_default_string(prop); if (str == NULL) return (-1); (void) strlcpy(propbuf, str, proplen); @@ -2921,6 +3001,26 @@ zfs_prop_get(zfs_handle_t *zhp, zfs_prop_t prop, char *propbuf, size_t proplen, zcp_check(zhp, prop, val, NULL); break; + case ZFS_PROP_SNAPSHOTS_CHANGED: + { + if ((get_numeric_property(zhp, prop, src, &source, + &val) != 0) || val == 0) { + return (-1); + } + + time_t time = (time_t)val; + struct tm t; + + if (literal || + localtime_r(&time, &t) == NULL || + strftime(propbuf, proplen, "%a %b %e %k:%M:%S %Y", + &t) == 0) + (void) snprintf(propbuf, proplen, "%llu", + (u_longlong_t)val); + } + zcp_check(zhp, prop, val, NULL); + break; + default: switch (zfs_prop_get_type(prop)) { case PROP_TYPE_NUMBER: @@ -2976,7 +3076,7 @@ zfs_prop_get(zfs_handle_t *zhp, zfs_prop_t prop, char *propbuf, size_t proplen, uint64_t zfs_prop_get_int(zfs_handle_t *zhp, zfs_prop_t prop) { - char *source; + const char *source; uint64_t val = 0; (void) get_numeric_property(zhp, prop, NULL, &source, &val); @@ -3000,7 +3100,7 @@ int zfs_prop_get_numeric(zfs_handle_t *zhp, zfs_prop_t prop, uint64_t *value, zprop_source_t *src, char *statbuf, size_t statlen) { - char *source; + const char *source; /* * Check to see if this property applies to our object @@ -3099,11 +3199,15 @@ userquota_propname_decode(const char *propname, boolean_t zoned, cp = strchr(propname, '@') + 1; - if (isuser && (pw = getpwnam(cp)) != NULL) { + if (isuser && + getpwnam_r(cp, &gpwd, rpbuf, sizeof (rpbuf), &pw) == 0 && + pw != NULL) { if (zoned && getzoneid() == GLOBAL_ZONEID) return (ENOENT); *ridp = pw->pw_uid; - } else if (isgroup && (gr = getgrnam(cp)) != NULL) { + } else if (isgroup && + getgrnam_r(cp, &ggrp, rpbuf, sizeof (rpbuf), &gr) == 0 && + gr != NULL) { if (zoned && getzoneid() == GLOBAL_ZONEID) return (ENOENT); *ridp = gr->gr_gid; @@ -3419,8 +3523,8 @@ check_parents(libzfs_handle_t *hdl, const char *path, uint64_t *zoned, /* check to see if the pool exists */ if ((slash = strchr(parent, '/')) == NULL) slash = parent + strlen(parent); - (void) strncpy(zc.zc_name, parent, slash - parent); - zc.zc_name[slash - parent] = '\0'; + (void) strlcpy(zc.zc_name, parent, + MIN(sizeof (zc.zc_name), slash - parent + 1)); if (zfs_ioctl(hdl, ZFS_IOC_OBJSET_STATS, &zc) != 0 && errno == ENOENT) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, @@ -3848,7 +3952,7 @@ zfs_check_snap_cb(zfs_handle_t *zhp, void *arg) if (lzc_exists(name)) fnvlist_add_boolean(dd->nvl, name); - rv = zfs_iter_filesystems(zhp, zfs_check_snap_cb, dd); + rv = zfs_iter_filesystems_v2(zhp, 0, zfs_check_snap_cb, dd); zfs_close(zhp); return (rv); } @@ -4086,7 +4190,7 @@ zfs_snapshot_cb(zfs_handle_t *zhp, void *arg) fnvlist_add_boolean(sd->sd_nvl, name); - rv = zfs_iter_filesystems(zhp, zfs_snapshot_cb, sd); + rv = zfs_iter_filesystems_v2(zhp, 0, zfs_snapshot_cb, sd); } zfs_close(zhp); @@ -4129,6 +4233,8 @@ zfs_snapshot_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, nvlist_t *props) * same pool, as does lzc_snapshot (below). */ elem = nvlist_next_nvpair(snaps, NULL); + if (elem == NULL) + return (-1); (void) strlcpy(pool, nvpair_name(elem), sizeof (pool)); pool[strcspn(pool, "/@")] = '\0'; zpool_hdl = zpool_open(hdl, pool); @@ -4261,7 +4367,7 @@ rollback_destroy(zfs_handle_t *zhp, void *data) rollback_data_t *cbp = data; if (zfs_prop_get_int(zhp, ZFS_PROP_CREATETXG) > cbp->cb_create) { - cbp->cb_error |= zfs_iter_dependents(zhp, B_FALSE, + cbp->cb_error |= zfs_iter_dependents_v2(zhp, 0, B_FALSE, rollback_destroy_dependent, cbp); cbp->cb_error |= zfs_destroy(zhp, B_FALSE); @@ -4301,10 +4407,10 @@ zfs_rollback(zfs_handle_t *zhp, zfs_handle_t *snap, boolean_t force) if (cb.cb_create > 0) min_txg = cb.cb_create; - (void) zfs_iter_snapshots(zhp, B_FALSE, rollback_destroy, &cb, + (void) zfs_iter_snapshots_v2(zhp, 0, rollback_destroy, &cb, min_txg, 0); - (void) zfs_iter_bookmarks(zhp, rollback_destroy, &cb); + (void) zfs_iter_bookmarks_v2(zhp, 0, rollback_destroy, &cb); if (cb.cb_error) return (-1); @@ -4619,7 +4725,7 @@ zfs_expand_proplist(zfs_handle_t *zhp, zprop_list_t **plp, boolean_t received, zprop_list_t **last, **start; nvlist_t *userprops, *propval; nvpair_t *elem; - char *strval; + const char *strval; char buf[ZFS_MAXPROPLEN]; if (zprop_expand_list(hdl, plp, ZFS_TYPE_DATASET) != 0) @@ -4885,7 +4991,7 @@ zfs_hold_one(zfs_handle_t *zhp, void *arg) fnvlist_add_string(ha->nvl, name, ha->tag); if (ha->recursive) - rv = zfs_iter_filesystems(zhp, zfs_hold_one, ha); + rv = zfs_iter_filesystems_v2(zhp, 0, zfs_hold_one, ha); zfs_close(zhp); return (rv); } @@ -5016,7 +5122,7 @@ zfs_release_one(zfs_handle_t *zhp, void *arg) } if (ha->recursive) - rv = zfs_iter_filesystems(zhp, zfs_release_one, ha); + rv = zfs_iter_filesystems_v2(zhp, 0, zfs_release_one, ha); zfs_close(zhp); return (rv); } @@ -5119,7 +5225,7 @@ tryagain: nvbuf = malloc(nvsz); if (nvbuf == NULL) { - err = (zfs_error(hdl, EZFS_NOMEM, strerror(errno))); + err = (zfs_error(hdl, EZFS_NOMEM, zfs_strerror(errno))); goto out; } @@ -5405,7 +5511,7 @@ volsize_from_vdevs(zpool_handle_t *zhp, uint64_t nblocks, uint64_t blksize) } for (int v = 0; v < nvdevs; v++) { - char *type; + const char *type; uint64_t nparity, ashift, asize, tsize; uint64_t volsize; @@ -5487,7 +5593,7 @@ zvol_volsize_to_reservation(zpool_handle_t *zph, uint64_t volsize, uint64_t numdb; uint64_t nblocks, volblocksize; int ncopies; - char *strval; + const char *strval; if (nvlist_lookup_string(props, zfs_prop_to_name(ZFS_PROP_COPIES), &strval) == 0) diff --git a/lib/libzfs/libzfs_diff.c b/lib/libzfs/libzfs_diff.c index f0e9a262e6bf..edf290c4d040 100644 --- a/lib/libzfs/libzfs_diff.c +++ b/lib/libzfs/libzfs_diff.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -44,6 +44,7 @@ #include <pthread.h> #include <sys/zfs_ioctl.h> #include <libzfs.h> +#include <libzutil.h> #include "libzfs_impl.h" #define ZDIFF_SNAPDIR "/.zfs/snapshot/" @@ -54,6 +55,10 @@ #define ZDIFF_REMOVED '-' #define ZDIFF_RENAMED "R" +#define ZDIFF_ADDED_COLOR ANSI_GREEN +#define ZDIFF_MODIFIED_COLOR ANSI_YELLOW +#define ZDIFF_REMOVED_COLOR ANSI_RED +#define ZDIFF_RENAMED_COLOR ANSI_BOLD_BLUE /* * Given a {dsname, object id}, get the object path @@ -128,6 +133,25 @@ stream_bytes(FILE *fp, const char *string) } } +/* + * Takes the type of change (like `print_file`), outputs the appropriate color + */ +static const char * +type_to_color(char type) +{ + if (type == '+') + return (ZDIFF_ADDED_COLOR); + else if (type == '-') + return (ZDIFF_REMOVED_COLOR); + else if (type == 'M') + return (ZDIFF_MODIFIED_COLOR); + else if (type == 'R') + return (ZDIFF_RENAMED_COLOR); + else + return (NULL); +} + + static char get_what(mode_t what) { @@ -175,6 +199,8 @@ static void print_rename(FILE *fp, differ_info_t *di, const char *old, const char *new, zfs_stat_t *isb) { + if (isatty(fileno(fp))) + color_start(ZDIFF_RENAMED_COLOR); if (di->timestamped) (void) fprintf(fp, "%10lld.%09lld\t", (longlong_t)isb->zs_ctime[0], @@ -186,12 +212,18 @@ print_rename(FILE *fp, differ_info_t *di, const char *old, const char *new, (void) fputs(di->scripted ? "\t" : " -> ", fp); print_cmn(fp, di, new); (void) fputc('\n', fp); + + if (isatty(fileno(fp))) + color_end(); } static void print_link_change(FILE *fp, differ_info_t *di, int delta, const char *file, zfs_stat_t *isb) { + if (isatty(fileno(fp))) + color_start(ZDIFF_MODIFIED_COLOR); + if (di->timestamped) (void) fprintf(fp, "%10lld.%09lld\t", (longlong_t)isb->zs_ctime[0], @@ -201,12 +233,17 @@ print_link_change(FILE *fp, differ_info_t *di, int delta, const char *file, (void) fprintf(fp, "%c\t", get_what(isb->zs_mode)); print_cmn(fp, di, file); (void) fprintf(fp, "\t(%+d)\n", delta); + if (isatty(fileno(fp))) + color_end(); } static void print_file(FILE *fp, differ_info_t *di, char type, const char *file, zfs_stat_t *isb) { + if (isatty(fileno(fp))) + color_start(type_to_color(type)); + if (di->timestamped) (void) fprintf(fp, "%10lld.%09lld\t", (longlong_t)isb->zs_ctime[0], @@ -216,6 +253,9 @@ print_file(FILE *fp, differ_info_t *di, char type, const char *file, (void) fprintf(fp, "%c\t", get_what(isb->zs_mode)); print_cmn(fp, di, file); (void) fputc('\n', fp); + + if (isatty(fileno(fp))) + color_end(); } static int @@ -243,7 +283,7 @@ write_inuse_diffs_one(FILE *fp, differ_info_t *di, uint64_t dobj) fobjerr = get_stats_for_obj(di, di->fromsnap, dobj, fobjname, MAXPATHLEN, &fsb); if (fobjerr && di->zerr != ENOTSUP && di->zerr != ENOENT) { - zfs_error_aux(di->zhp->zfs_hdl, "%s", strerror(di->zerr)); + zfs_error_aux(di->zhp->zfs_hdl, "%s", zfs_strerror(di->zerr)); zfs_error(di->zhp->zfs_hdl, di->zerr, di->errbuf); /* * Let's not print an error for the same object more than @@ -258,7 +298,7 @@ write_inuse_diffs_one(FILE *fp, differ_info_t *di, uint64_t dobj) if (tobjerr && di->zerr != ENOTSUP && di->zerr != ENOENT) { if (!already_logged) { zfs_error_aux(di->zhp->zfs_hdl, - "%s", strerror(di->zerr)); + "%s", zfs_strerror(di->zerr)); zfs_error(di->zhp->zfs_hdl, di->zerr, di->errbuf); } } @@ -377,7 +417,7 @@ write_free_diffs(FILE *fp, differ_info_t *di, dmu_diff_record_t *dr) if (zc.zc_obj > dr->ddr_last) { break; } - err = describe_free(fp, di, zc.zc_obj, fobjname, + (void) describe_free(fp, di, zc.zc_obj, fobjname, MAXPATHLEN); } else if (errno == ESRCH) { break; @@ -405,7 +445,7 @@ differ(void *arg) if ((ofp = fdopen(di->outputfd, "w")) == NULL) { di->zerr = errno; - strlcpy(di->errbuf, strerror(errno), sizeof (di->errbuf)); + strlcpy(di->errbuf, zfs_strerror(errno), sizeof (di->errbuf)); (void) close(di->datafd); return ((void *)-1); } @@ -572,8 +612,7 @@ get_snapshot_names(differ_info_t *di, const char *fromsnap, zfs_handle_t *zhp; di->ds = zfs_alloc(di->zhp->zfs_hdl, tdslen + 1); - (void) strncpy(di->ds, tosnap, tdslen); - di->ds[tdslen] = '\0'; + (void) strlcpy(di->ds, tosnap, tdslen + 1); zhp = zfs_open(hdl, di->ds, ZFS_TYPE_FILESYSTEM); while (zhp != NULL) { @@ -609,8 +648,7 @@ get_snapshot_names(differ_info_t *di, const char *fromsnap, int dslen = fdslen ? fdslen : tdslen; di->ds = zfs_alloc(hdl, dslen + 1); - (void) strncpy(di->ds, fdslen ? fromsnap : tosnap, dslen); - di->ds[dslen] = '\0'; + (void) strlcpy(di->ds, fdslen ? fromsnap : tosnap, dslen + 1); di->fromsnap = zfs_asprintf(hdl, "%s%s", di->ds, atptrf); if (tsnlen) { @@ -724,7 +762,7 @@ zfs_show_diffs(zfs_handle_t *zhp, int outfd, const char *fromsnap, } if (pipe2(pipefd, O_CLOEXEC)) { - zfs_error_aux(zhp->zfs_hdl, "%s", strerror(errno)); + zfs_error_aux(zhp->zfs_hdl, "%s", zfs_strerror(errno)); teardown_differ_info(&di); return (zfs_error(zhp->zfs_hdl, EZFS_PIPEFAILED, errbuf)); } @@ -738,7 +776,7 @@ zfs_show_diffs(zfs_handle_t *zhp, int outfd, const char *fromsnap, di.datafd = pipefd[0]; if (pthread_create(&tid, NULL, differ, &di)) { - zfs_error_aux(zhp->zfs_hdl, "%s", strerror(errno)); + zfs_error_aux(zhp->zfs_hdl, "%s", zfs_strerror(errno)); (void) close(pipefd[0]); (void) close(pipefd[1]); teardown_differ_info(&di); @@ -764,14 +802,15 @@ zfs_show_diffs(zfs_handle_t *zhp, int outfd, const char *fromsnap, zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "\n Not an earlier snapshot from the same fs")); } else if (errno != EPIPE || di.zerr == 0) { - zfs_error_aux(zhp->zfs_hdl, "%s", strerror(errno)); + zfs_error_aux(zhp->zfs_hdl, "%s", zfs_strerror(errno)); } (void) close(pipefd[1]); (void) pthread_cancel(tid); (void) pthread_join(tid, NULL); teardown_differ_info(&di); if (di.zerr != 0 && di.zerr != EPIPE) { - zfs_error_aux(zhp->zfs_hdl, "%s", strerror(di.zerr)); + zfs_error_aux(zhp->zfs_hdl, "%s", + zfs_strerror(di.zerr)); return (zfs_error(zhp->zfs_hdl, EZFS_DIFF, di.errbuf)); } else { return (zfs_error(zhp->zfs_hdl, EZFS_DIFFDATA, errbuf)); @@ -782,7 +821,7 @@ zfs_show_diffs(zfs_handle_t *zhp, int outfd, const char *fromsnap, (void) pthread_join(tid, NULL); if (di.zerr != 0) { - zfs_error_aux(zhp->zfs_hdl, "%s", strerror(di.zerr)); + zfs_error_aux(zhp->zfs_hdl, "%s", zfs_strerror(di.zerr)); return (zfs_error(zhp->zfs_hdl, EZFS_DIFF, di.errbuf)); } teardown_differ_info(&di); diff --git a/lib/libzfs/libzfs_impl.h b/lib/libzfs/libzfs_impl.h index 878daab3fe20..ef0359f45ea0 100644 --- a/lib/libzfs/libzfs_impl.h +++ b/lib/libzfs/libzfs_impl.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -140,7 +140,7 @@ extern zfs_handle_t *make_dataset_handle_zc(libzfs_handle_t *, zfs_cmd_t *); extern zfs_handle_t *make_dataset_simple_handle_zc(zfs_handle_t *, zfs_cmd_t *); extern int zprop_parse_value(libzfs_handle_t *, nvpair_t *, int, zfs_type_t, - nvlist_t *, char **, uint64_t *, const char *); + nvlist_t *, const char **, uint64_t *, const char *); extern int zprop_expand_list(libzfs_handle_t *hdl, zprop_list_t **plp, zfs_type_t type); diff --git a/lib/libzfs/libzfs_import.c b/lib/libzfs/libzfs_import.c index ed3cfea56fa0..e2d40a7b3bfb 100644 --- a/lib/libzfs/libzfs_import.c +++ b/lib/libzfs/libzfs_import.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -280,7 +280,7 @@ zpool_in_use(libzfs_handle_t *hdl, int fd, pool_state_t *state, char **namestr, boolean_t *inuse) { nvlist_t *config; - char *name = NULL; + const char *name = NULL; boolean_t ret; uint64_t guid = 0, vdev_guid; zpool_handle_t *zhp; @@ -291,10 +291,8 @@ zpool_in_use(libzfs_handle_t *hdl, int fd, pool_state_t *state, char **namestr, *inuse = B_FALSE; - if (zpool_read_label(fd, &config, NULL) != 0) { - (void) no_memory(hdl); + if (zpool_read_label(fd, &config, NULL) != 0) return (-1); - } if (config == NULL) return (0); diff --git a/lib/libzfs/libzfs_iter.c b/lib/libzfs/libzfs_iter.c index db199c44ed30..452d8fd6ab71 100644 --- a/lib/libzfs/libzfs_iter.c +++ b/lib/libzfs/libzfs_iter.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -39,7 +39,8 @@ #include "libzfs_impl.h" static int -zfs_iter_clones(zfs_handle_t *zhp, zfs_iter_f func, void *data) +zfs_iter_clones(zfs_handle_t *zhp, int flags __maybe_unused, zfs_iter_f func, + void *data) { nvlist_t *nvl = zfs_get_clones_nvl(zhp); nvpair_t *pair; @@ -69,6 +70,7 @@ zfs_do_list_ioctl(zfs_handle_t *zhp, int arg, zfs_cmd_t *zc) orig_cookie = zc->zc_cookie; top: (void) strlcpy(zc->zc_name, zhp->zfs_name, sizeof (zc->zc_name)); + zc->zc_objset_stats.dds_creation_txg = 0; rc = zfs_ioctl(zhp->zfs_hdl, arg, zc); if (rc == -1) { @@ -103,6 +105,13 @@ top: int zfs_iter_filesystems(zfs_handle_t *zhp, zfs_iter_f func, void *data) { + return (zfs_iter_filesystems_v2(zhp, 0, func, data)); +} + +int +zfs_iter_filesystems_v2(zfs_handle_t *zhp, int flags, zfs_iter_f func, + void *data) +{ zfs_cmd_t zc = {"\0"}; zfs_handle_t *nzhp; int ret; @@ -112,16 +121,21 @@ zfs_iter_filesystems(zfs_handle_t *zhp, zfs_iter_f func, void *data) zcmd_alloc_dst_nvlist(zhp->zfs_hdl, &zc, 0); + if ((flags & ZFS_ITER_SIMPLE) == ZFS_ITER_SIMPLE) + zc.zc_simple = B_TRUE; + while ((ret = zfs_do_list_ioctl(zhp, ZFS_IOC_DATASET_LIST_NEXT, &zc)) == 0) { + if (zc.zc_simple) + nzhp = make_dataset_simple_handle_zc(zhp, &zc); + else + nzhp = make_dataset_handle_zc(zhp->zfs_hdl, &zc); /* * Silently ignore errors, as the only plausible explanation is * that the pool has since been removed. */ - if ((nzhp = make_dataset_handle_zc(zhp->zfs_hdl, - &zc)) == NULL) { + if (nzhp == NULL) continue; - } if ((ret = func(nzhp, data)) != 0) { zcmd_free_nvlists(&zc); @@ -139,6 +153,14 @@ int zfs_iter_snapshots(zfs_handle_t *zhp, boolean_t simple, zfs_iter_f func, void *data, uint64_t min_txg, uint64_t max_txg) { + return (zfs_iter_snapshots_v2(zhp, simple ? ZFS_ITER_SIMPLE : 0, func, + data, min_txg, max_txg)); +} + +int +zfs_iter_snapshots_v2(zfs_handle_t *zhp, int flags, zfs_iter_f func, + void *data, uint64_t min_txg, uint64_t max_txg) +{ zfs_cmd_t zc = {"\0"}; zfs_handle_t *nzhp; int ret; @@ -148,7 +170,7 @@ zfs_iter_snapshots(zfs_handle_t *zhp, boolean_t simple, zfs_iter_f func, zhp->zfs_type == ZFS_TYPE_BOOKMARK) return (0); - zc.zc_simple = simple; + zc.zc_simple = (flags & ZFS_ITER_SIMPLE) != 0; zcmd_alloc_dst_nvlist(zhp->zfs_hdl, &zc, 0); @@ -168,7 +190,7 @@ zfs_iter_snapshots(zfs_handle_t *zhp, boolean_t simple, zfs_iter_f func, while ((ret = zfs_do_list_ioctl(zhp, ZFS_IOC_SNAPSHOT_LIST_NEXT, &zc)) == 0) { - if (simple) + if (zc.zc_simple) nzhp = make_dataset_simple_handle_zc(zhp, &zc); else nzhp = make_dataset_handle_zc(zhp->zfs_hdl, &zc); @@ -192,6 +214,13 @@ zfs_iter_snapshots(zfs_handle_t *zhp, boolean_t simple, zfs_iter_f func, int zfs_iter_bookmarks(zfs_handle_t *zhp, zfs_iter_f func, void *data) { + return (zfs_iter_bookmarks_v2(zhp, 0, func, data)); +} + +int +zfs_iter_bookmarks_v2(zfs_handle_t *zhp, int flags __maybe_unused, + zfs_iter_f func, void *data) +{ zfs_handle_t *nzhp; nvlist_t *props = NULL; nvlist_t *bmarks = NULL; @@ -216,7 +245,7 @@ zfs_iter_bookmarks(zfs_handle_t *zhp, zfs_iter_f func, void *data) for (pair = nvlist_next_nvpair(bmarks, NULL); pair != NULL; pair = nvlist_next_nvpair(bmarks, pair)) { char name[ZFS_MAX_DATASET_NAME_LEN]; - char *bmark_name; + const char *bmark_name; nvlist_t *bmark_props; bmark_name = nvpair_name(pair); @@ -297,8 +326,16 @@ zfs_snapshot_compare(const void *larg, const void *rarg) } int -zfs_iter_snapshots_sorted(zfs_handle_t *zhp, zfs_iter_f callback, void *data, - uint64_t min_txg, uint64_t max_txg) +zfs_iter_snapshots_sorted(zfs_handle_t *zhp, zfs_iter_f callback, + void *data, uint64_t min_txg, uint64_t max_txg) +{ + return (zfs_iter_snapshots_sorted_v2(zhp, 0, callback, data, + min_txg, max_txg)); +} + +int +zfs_iter_snapshots_sorted_v2(zfs_handle_t *zhp, int flags, zfs_iter_f callback, + void *data, uint64_t min_txg, uint64_t max_txg) { int ret = 0; zfs_node_t *node; @@ -308,7 +345,7 @@ zfs_iter_snapshots_sorted(zfs_handle_t *zhp, zfs_iter_f callback, void *data, avl_create(&avl, zfs_snapshot_compare, sizeof (zfs_node_t), offsetof(zfs_node_t, zn_avlnode)); - ret = zfs_iter_snapshots(zhp, B_FALSE, zfs_sort_snaps, &avl, min_txg, + ret = zfs_iter_snapshots_v2(zhp, flags, zfs_sort_snaps, &avl, min_txg, max_txg); for (node = avl_first(&avl); node != NULL; node = AVL_NEXT(&avl, node)) @@ -374,6 +411,13 @@ int zfs_iter_snapspec(zfs_handle_t *fs_zhp, const char *spec_orig, zfs_iter_f func, void *arg) { + return (zfs_iter_snapspec_v2(fs_zhp, 0, spec_orig, func, arg)); +} + +int +zfs_iter_snapspec_v2(zfs_handle_t *fs_zhp, int flags, const char *spec_orig, + zfs_iter_f func, void *arg) +{ char *buf, *comma_separated, *cp; int err = 0; int ret = 0; @@ -411,7 +455,7 @@ zfs_iter_snapspec(zfs_handle_t *fs_zhp, const char *spec_orig, } } - err = zfs_iter_snapshots_sorted(fs_zhp, + err = zfs_iter_snapshots_sorted_v2(fs_zhp, flags, snapspec_cb, &ssa, 0, 0); if (ret == 0) ret = err; @@ -450,12 +494,18 @@ zfs_iter_snapspec(zfs_handle_t *fs_zhp, const char *spec_orig, int zfs_iter_children(zfs_handle_t *zhp, zfs_iter_f func, void *data) { + return (zfs_iter_children_v2(zhp, 0, func, data)); +} + +int +zfs_iter_children_v2(zfs_handle_t *zhp, int flags, zfs_iter_f func, void *data) +{ int ret; - if ((ret = zfs_iter_snapshots(zhp, B_FALSE, func, data, 0, 0)) != 0) + if ((ret = zfs_iter_snapshots_v2(zhp, flags, func, data, 0, 0)) != 0) return (ret); - return (zfs_iter_filesystems(zhp, func, data)); + return (zfs_iter_filesystems_v2(zhp, flags, func, data)); } @@ -466,6 +516,7 @@ typedef struct iter_stack_frame { typedef struct iter_dependents_arg { boolean_t first; + int flags; boolean_t allowrecursion; iter_stack_frame_t *stack; zfs_iter_f func; @@ -481,7 +532,7 @@ iter_dependents_cb(zfs_handle_t *zhp, void *arg) ida->first = B_FALSE; if (zhp->zfs_type == ZFS_TYPE_SNAPSHOT) { - err = zfs_iter_clones(zhp, iter_dependents_cb, ida); + err = zfs_iter_clones(zhp, ida->flags, iter_dependents_cb, ida); } else if (zhp->zfs_type != ZFS_TYPE_BOOKMARK) { iter_stack_frame_t isf; iter_stack_frame_t *f; @@ -515,9 +566,10 @@ iter_dependents_cb(zfs_handle_t *zhp, void *arg) isf.zhp = zhp; isf.next = ida->stack; ida->stack = &isf; - err = zfs_iter_filesystems(zhp, iter_dependents_cb, ida); + err = zfs_iter_filesystems_v2(zhp, ida->flags, + iter_dependents_cb, ida); if (err == 0) - err = zfs_iter_snapshots(zhp, B_FALSE, + err = zfs_iter_snapshots_v2(zhp, ida->flags, iter_dependents_cb, ida, 0, 0); ida->stack = isf.next; } @@ -534,7 +586,15 @@ int zfs_iter_dependents(zfs_handle_t *zhp, boolean_t allowrecursion, zfs_iter_f func, void *data) { + return (zfs_iter_dependents_v2(zhp, 0, allowrecursion, func, data)); +} + +int +zfs_iter_dependents_v2(zfs_handle_t *zhp, int flags, boolean_t allowrecursion, + zfs_iter_f func, void *data) +{ iter_dependents_arg_t ida; + ida.flags = flags; ida.allowrecursion = allowrecursion; ida.stack = NULL; ida.func = func; diff --git a/lib/libzfs/libzfs_mount.c b/lib/libzfs/libzfs_mount.c index 511552884947..ec6ebad2f180 100644 --- a/lib/libzfs/libzfs_mount.c +++ b/lib/libzfs/libzfs_mount.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -22,7 +22,7 @@ /* * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2014, 2021 by Delphix. All rights reserved. + * Copyright (c) 2014, 2022 by Delphix. All rights reserved. * Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com> * Copyright 2017 RackTop Systems. * Copyright (c) 2018 Datto Inc. @@ -74,6 +74,7 @@ #include <sys/dsl_crypt.h> #include <libzfs.h> +#include <libzutil.h> #include "libzfs_impl.h" #include <thread_pool.h> @@ -291,7 +292,7 @@ static int zfs_add_option(zfs_handle_t *zhp, char *options, int len, zfs_prop_t prop, const char *on, const char *off) { - char *source; + const char *source; uint64_t value; /* Skip adding duplicate default options */ @@ -466,7 +467,7 @@ zfs_mount_at(zfs_handle_t *zhp, const char *options, int flags, if (mkdirp(mountpoint, 0755) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "failed to create mountpoint: %s"), - strerror(errno)); + zfs_strerror(errno)); return (zfs_error_fmt(hdl, EZFS_MOUNTFAILED, dgettext(TEXT_DOMAIN, "cannot mount '%s'"), mountpoint)); @@ -524,7 +525,7 @@ zfs_mount_at(zfs_handle_t *zhp, const char *options, int flags, (u_longlong_t)zfs_prop_get_int(zhp, ZFS_PROP_VERSION), spa_version); } else { - zfs_error_aux(hdl, "%s", strerror(rc)); + zfs_error_aux(hdl, "%s", zfs_strerror(rc)); } return (zfs_error_fmt(hdl, EZFS_MOUNTFAILED, dgettext(TEXT_DOMAIN, "cannot mount '%s'"), @@ -788,6 +789,16 @@ zfs_commit_shares(const enum sa_protocol *proto) sa_commit_shares(*p); } +void +zfs_truncate_shares(const enum sa_protocol *proto) +{ + if (proto == NULL) + proto = share_all_proto; + + for (const enum sa_protocol *p = proto; *p != SA_NO_PROTOCOL; ++p) + sa_truncate_shares(*p); +} + /* * Unshare the given filesystem. */ @@ -930,7 +941,7 @@ zfs_iter_cb(zfs_handle_t *zhp, void *data) } libzfs_add_handle(cbp, zhp); - if (zfs_iter_filesystems(zhp, zfs_iter_cb, cbp) != 0) { + if (zfs_iter_filesystems_v2(zhp, 0, zfs_iter_cb, cbp) != 0) { zfs_close(zhp); return (-1); } @@ -1279,7 +1290,7 @@ zpool_enable_datasets(zpool_handle_t *zhp, const char *mntopts, int flags) * over all child filesystems. */ libzfs_add_handle(&cb, zfsp); - if (zfs_iter_filesystems(zfsp, zfs_iter_cb, &cb) != 0) + if (zfs_iter_filesystems_v2(zfsp, 0, zfs_iter_cb, &cb) != 0) goto out; /* @@ -1290,7 +1301,7 @@ zpool_enable_datasets(zpool_handle_t *zhp, const char *mntopts, int flags) zfs_foreach_mountpoint(zhp->zpool_hdl, cb.cb_handles, cb.cb_used, zfs_mount_one, &ms, B_TRUE); if (ms.ms_mntstatus != 0) - ret = ms.ms_mntstatus; + ret = EZFS_MOUNTFAILED; /* * Share all filesystems that need to be shared. This needs to be @@ -1301,7 +1312,7 @@ zpool_enable_datasets(zpool_handle_t *zhp, const char *mntopts, int flags) zfs_foreach_mountpoint(zhp->zpool_hdl, cb.cb_handles, cb.cb_used, zfs_share_one, &ms, B_FALSE); if (ms.ms_mntstatus != 0) - ret = ms.ms_mntstatus; + ret = EZFS_SHAREFAILED; else zfs_commit_shares(NULL); @@ -1412,10 +1423,10 @@ zpool_disable_datasets(zpool_handle_t *zhp, boolean_t force) * Walk through and first unshare everything. */ for (i = 0; i < used; i++) { - for (enum sa_protocol i = 0; i < SA_PROTOCOL_COUNT; ++i) { - if (sa_is_shared(sets[i].mountpoint, i) && + for (enum sa_protocol p = 0; p < SA_PROTOCOL_COUNT; ++p) { + if (sa_is_shared(sets[i].mountpoint, p) && unshare_one(hdl, sets[i].mountpoint, - sets[i].mountpoint, i) != 0) + sets[i].mountpoint, p) != 0) goto out; } } diff --git a/lib/libzfs/libzfs_pool.c b/lib/libzfs/libzfs_pool.c index 375abb944e24..979bbdd3809a 100644 --- a/lib/libzfs/libzfs_pool.c +++ b/lib/libzfs/libzfs_pool.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -22,14 +22,14 @@ /* * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2011, 2020 by Delphix. All rights reserved. + * Copyright (c) 2011, 2024 by Delphix. All rights reserved. * Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com> * Copyright (c) 2018 Datto Inc. * Copyright (c) 2017 Open-E, Inc. All Rights Reserved. * Copyright (c) 2017, Intel Corporation. * Copyright (c) 2018, loli10K <ezomori.nozomu@gmail.com> * Copyright (c) 2021, Colm Buckley <colm@tuatha.org> - * Copyright (c) 2021, Klara Inc. + * Copyright (c) 2021, 2023, Klara Inc. */ #include <errno.h> @@ -60,9 +60,9 @@ static boolean_t zpool_vdev_is_interior(const char *name); typedef struct prop_flags { - int create:1; /* Validate property on creation */ - int import:1; /* Validate property on import */ - int vdevprop:1; /* Validate property as a VDEV property */ + unsigned int create:1; /* Validate property on creation */ + unsigned int import:1; /* Validate property on import */ + unsigned int vdevprop:1; /* Validate property as a VDEV property */ } prop_flags_t; /* @@ -255,6 +255,7 @@ zpool_get_state_str(zpool_handle_t *zhp) if (zpool_get_state(zhp) == POOL_STATE_UNAVAIL) { str = gettext("FAULTED"); } else if (status == ZPOOL_STATUS_IO_FAILURE_WAIT || + status == ZPOOL_STATUS_IO_FAILURE_CONTINUE || status == ZPOOL_STATUS_IO_FAILURE_MMP) { str = gettext("SUSPENDED"); } else { @@ -339,6 +340,8 @@ zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf, case ZPOOL_PROP_ASHIFT: case ZPOOL_PROP_MAXBLOCKSIZE: case ZPOOL_PROP_MAXDNODESIZE: + case ZPOOL_PROP_BCLONESAVED: + case ZPOOL_PROP_BCLONEUSED: if (literal) (void) snprintf(buf, len, "%llu", (u_longlong_t)intval); @@ -380,6 +383,7 @@ zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf, } break; + case ZPOOL_PROP_BCLONERATIO: case ZPOOL_PROP_DEDUPRATIO: if (literal) (void) snprintf(buf, len, "%llu.%02llu", @@ -424,6 +428,37 @@ zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf, } /* + * Get a zpool property value for 'propname' and return the value in + * a pre-allocated buffer. + */ +int +zpool_get_userprop(zpool_handle_t *zhp, const char *propname, char *buf, + size_t len, zprop_source_t *srctype) +{ + nvlist_t *nv, *nvl; + uint64_t ival; + const char *value; + zprop_source_t source = ZPROP_SRC_LOCAL; + + nvl = zhp->zpool_props; + if (nvlist_lookup_nvlist(nvl, propname, &nv) == 0) { + if (nvlist_lookup_uint64(nv, ZPROP_SOURCE, &ival) == 0) + source = ival; + verify(nvlist_lookup_string(nv, ZPROP_VALUE, &value) == 0); + } else { + source = ZPROP_SRC_DEFAULT; + value = "-"; + } + + if (srctype) + *srctype = source; + + (void) strlcpy(buf, value, len); + + return (0); +} + +/* * Check if the bootfs name has the same pool name as it is set to. * Assuming bootfs is a valid dataset name. */ @@ -456,9 +491,9 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname, nvpair_t *elem; nvlist_t *retprops; zpool_prop_t prop; - char *strval; + const char *strval; uint64_t intval; - char *slash, *check; + const char *slash, *check; struct stat64 statbuf; zpool_handle_t *zhp; char report[1024]; @@ -547,6 +582,44 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname, goto error; } continue; + } else if (prop == ZPOOL_PROP_INVAL && + zfs_prop_user(propname)) { + /* + * This is a user property: make sure it's a + * string, and that it's less than ZAP_MAXNAMELEN. + */ + if (nvpair_type(elem) != DATA_TYPE_STRING) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "'%s' must be a string"), propname); + (void) zfs_error(hdl, EZFS_BADPROP, errbuf); + goto error; + } + + if (strlen(nvpair_name(elem)) >= ZAP_MAXNAMELEN) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "property name '%s' is too long"), + propname); + (void) zfs_error(hdl, EZFS_BADPROP, errbuf); + goto error; + } + + (void) nvpair_value_string(elem, &strval); + + if (strlen(strval) >= ZFS_MAXPROPLEN) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "property value '%s' is too long"), + strval); + (void) zfs_error(hdl, EZFS_BADPROP, errbuf); + goto error; + } + + if (nvlist_add_string(retprops, propname, + strval) != 0) { + (void) no_memory(hdl); + goto error; + } + + continue; } /* @@ -686,11 +759,12 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname, goto error; } - *slash = '\0'; + *(char *)slash = '\0'; if (strval[0] != '\0' && (stat64(strval, &statbuf) != 0 || !S_ISDIR(statbuf.st_mode))) { + *(char *)slash = '/'; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' is not a valid directory"), strval); @@ -698,7 +772,7 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname, goto error; } - *slash = '/'; + *(char *)slash = '/'; break; case ZPOOL_PROP_COMPATIBILITY: @@ -851,9 +925,30 @@ zpool_expand_proplist(zpool_handle_t *zhp, zprop_list_t **plp, features = zpool_get_features(zhp); if ((*plp)->pl_all && firstexpand) { + /* Handle userprops in the all properties case */ + if (zhp->zpool_props == NULL && zpool_props_refresh(zhp)) + return (-1); + + nvp = NULL; + while ((nvp = nvlist_next_nvpair(zhp->zpool_props, nvp)) != + NULL) { + const char *propname = nvpair_name(nvp); + + if (!zfs_prop_user(propname)) + continue; + + entry = zfs_alloc(hdl, sizeof (zprop_list_t)); + entry->pl_prop = ZPROP_USERPROP; + entry->pl_user_prop = zfs_strdup(hdl, propname); + entry->pl_width = strlen(entry->pl_user_prop); + entry->pl_all = B_TRUE; + + *last = entry; + last = &entry->pl_next; + } + for (i = 0; i < SPA_FEATURES; i++) { - zprop_list_t *entry = zfs_alloc(hdl, - sizeof (zprop_list_t)); + entry = zfs_alloc(hdl, sizeof (zprop_list_t)); entry->pl_prop = ZPROP_USERPROP; entry->pl_user_prop = zfs_asprintf(hdl, "feature@%s", spa_feature_table[i].fi_uname); @@ -870,7 +965,6 @@ zpool_expand_proplist(zpool_handle_t *zhp, zprop_list_t **plp, nvp != NULL; nvp = nvlist_next_nvpair(features, nvp)) { char *propname; boolean_t found; - zprop_list_t *entry; if (zfeature_is_supported(nvpair_name(nvp))) continue; @@ -916,6 +1010,12 @@ zpool_expand_proplist(zpool_handle_t *zhp, zprop_list_t **plp, NULL, literal) == 0) { if (strlen(buf) > entry->pl_width) entry->pl_width = strlen(buf); + } else if (entry->pl_prop == ZPROP_INVAL && + zfs_prop_user(entry->pl_user_prop) && + zpool_get_userprop(zhp, entry->pl_user_prop, buf, + sizeof (buf), NULL) == 0) { + if (strlen(buf) > entry->pl_width) + entry->pl_width = strlen(buf); } } @@ -928,7 +1028,7 @@ vdev_expand_proplist(zpool_handle_t *zhp, const char *vdevname, { zprop_list_t *entry; char buf[ZFS_MAXPROPLEN]; - char *strval = NULL; + const char *strval = NULL; int err = 0; nvpair_t *elem = NULL; nvlist_t *vprops = NULL; @@ -1286,7 +1386,7 @@ zpool_has_special_vdev(nvlist_t *nvroot) if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN, &child, &children) == 0) { for (uint_t c = 0; c < children; c++) { - char *bias; + const char *bias; if (nvlist_lookup_string(child[c], ZPOOL_CONFIG_ALLOCATION_BIAS, &bias) == 0 && @@ -1310,7 +1410,7 @@ zpool_has_draid_vdev(nvlist_t *nvroot) if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN, &child, &children) == 0) { for (uint_t c = 0; c < children; c++) { - char *type; + const char *type; if (nvlist_lookup_string(child[c], ZPOOL_CONFIG_TYPE, &type) == 0 && @@ -1390,7 +1490,7 @@ zpool_create(libzfs_handle_t *hdl, const char *pool, nvlist_t *nvroot, if (fsprops) { uint64_t zoned; - char *zonestr; + const char *zonestr; zoned = ((nvlist_lookup_string(fsprops, zfs_prop_to_name(ZFS_PROP_ZONED), &zonestr) == 0) && @@ -1624,7 +1724,7 @@ zpool_discard_checkpoint(zpool_handle_t *zhp) * necessary verification to ensure that the vdev specification is well-formed. */ int -zpool_add(zpool_handle_t *zhp, nvlist_t *nvroot) +zpool_add(zpool_handle_t *zhp, nvlist_t *nvroot, boolean_t check_ashift) { zfs_cmd_t zc = {"\0"}; int ret; @@ -1656,6 +1756,7 @@ zpool_add(zpool_handle_t *zhp, nvlist_t *nvroot) zcmd_write_conf_nvlist(hdl, &zc, nvroot); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); + zc.zc_flags = check_ashift; if (zfs_ioctl(hdl, ZFS_IOC_VDEV_ADD, &zc) != 0) { switch (errno) { @@ -1799,7 +1900,8 @@ zpool_rewind_exclaim(libzfs_handle_t *hdl, const char *name, boolean_t dryrun, (void) nvlist_lookup_int64(nv, ZPOOL_CONFIG_REWIND_TIME, &loss); if (localtime_r((time_t *)&rewindto, &t) != NULL && - strftime(timestr, 128, "%c", &t) != 0) { + ctime_r((time_t *)&rewindto, timestr) != NULL) { + timestr[24] = 0; if (dryrun) { (void) printf(dgettext(TEXT_DOMAIN, "Would be able to return %s " @@ -1861,7 +1963,8 @@ zpool_explain_recover(libzfs_handle_t *hdl, const char *name, int reason, "Recovery is possible, but will result in some data loss.\n")); if (localtime_r((time_t *)&rewindto, &t) != NULL && - strftime(timestr, 128, "%c", &t) != 0) { + ctime_r((time_t *)&rewindto, timestr) != NULL) { + timestr[24] = 0; (void) printf(dgettext(TEXT_DOMAIN, "\tReturning the pool to its state as of %s\n" "\tshould correct the problem. "), @@ -1983,7 +2086,7 @@ zpool_print_unsup_feat(nvlist_t *config) for (nvpair_t *nvp = nvlist_next_nvpair(unsup_feat, NULL); nvp != NULL; nvp = nvlist_next_nvpair(unsup_feat, nvp)) { - char *desc = fnvpair_value_string(nvp); + const char *desc = fnvpair_value_string(nvp); if (strlen(desc) > 0) (void) printf("\t%s (%s)\n", nvpair_name(nvp), desc); else @@ -2007,7 +2110,7 @@ zpool_import_props(libzfs_handle_t *hdl, nvlist_t *config, const char *newname, nvlist_t *nvinfo = NULL; nvlist_t *missing = NULL; const char *thename; - char *origname; + const char *origname; int ret; int error = 0; char errbuf[ERRBUFLEN]; @@ -2214,7 +2317,6 @@ zpool_import_props(libzfs_handle_t *hdl, nvlist_t *config, const char *newname, ((policy.zlp_rewind & ZPOOL_TRY_REWIND) != 0), nv); } nvlist_free(nv); - return (0); } return (ret); @@ -2236,7 +2338,7 @@ zpool_translate_vdev_guids(zpool_handle_t *zhp, nvlist_t *vds, elem = nvlist_next_nvpair(vds, elem)) { boolean_t spare, cache; - char *vd_path = nvpair_name(elem); + const char *vd_path = nvpair_name(elem); nvlist_t *tgt = zpool_find_vdev(zhp, vd_path, &spare, &cache, NULL); @@ -2289,8 +2391,8 @@ xlate_init_err(int err) } /* - * Begin, suspend, or cancel the initialization (initializing of all free - * blocks) for the given vdevs in the given pool. + * Begin, suspend, cancel, or uninit (clear) the initialization (initializing + * of all free blocks) for the given vdevs in the given pool. */ static int zpool_initialize_impl(zpool_handle_t *zhp, pool_initialize_func_t cmd_type, @@ -2316,11 +2418,16 @@ zpool_initialize_impl(zpool_handle_t *zhp, pool_initialize_func_t cmd_type, vdev_guids, &errlist); if (err != 0) { - if (errlist != NULL) { - vd_errlist = fnvlist_lookup_nvlist(errlist, - ZPOOL_INITIALIZE_VDEVS); + if (errlist != NULL && nvlist_lookup_nvlist(errlist, + ZPOOL_INITIALIZE_VDEVS, &vd_errlist) == 0) { goto list_errors; } + + if (err == EINVAL && cmd_type == POOL_INITIALIZE_UNINIT) { + zfs_error_aux(zhp->zpool_hdl, dgettext(TEXT_DOMAIN, + "uninitialize is not supported by kernel")); + } + (void) zpool_standard_error(zhp->zpool_hdl, err, dgettext(TEXT_DOMAIN, "operation failed")); goto out; @@ -2350,7 +2457,7 @@ list_errors: for (elem = nvlist_next_nvpair(vd_errlist, NULL); elem != NULL; elem = nvlist_next_nvpair(vd_errlist, elem)) { int64_t vd_error = xlate_init_err(fnvpair_value_int64(elem)); - char *path; + const char *path; if (nvlist_lookup_string(guids_to_paths, nvpair_name(elem), &path) != 0) @@ -2448,7 +2555,7 @@ check_trim_errs(zpool_handle_t *zhp, trimflags_t *trim_flags, for (elem = nvlist_next_nvpair(errlist, NULL); elem != NULL; elem = nvlist_next_nvpair(errlist, elem)) { int64_t vd_error = xlate_trim_err(fnvpair_value_int64(elem)); - char *path; + const char *path; /* * If only the pool was specified, and it was not a secure @@ -2545,50 +2652,84 @@ out: int zpool_scan(zpool_handle_t *zhp, pool_scan_func_t func, pool_scrub_cmd_t cmd) { - zfs_cmd_t zc = {"\0"}; char errbuf[ERRBUFLEN]; int err; libzfs_handle_t *hdl = zhp->zpool_hdl; - (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); - zc.zc_cookie = func; - zc.zc_flags = cmd; + nvlist_t *args = fnvlist_alloc(); + fnvlist_add_uint64(args, "scan_type", (uint64_t)func); + fnvlist_add_uint64(args, "scan_command", (uint64_t)cmd); + + err = lzc_scrub(ZFS_IOC_POOL_SCRUB, zhp->zpool_name, args, NULL); + fnvlist_free(args); - if (zfs_ioctl(hdl, ZFS_IOC_POOL_SCAN, &zc) == 0) + if (err == 0) { return (0); + } else if (err == ZFS_ERR_IOC_CMD_UNAVAIL) { + zfs_cmd_t zc = {"\0"}; + (void) strlcpy(zc.zc_name, zhp->zpool_name, + sizeof (zc.zc_name)); + zc.zc_cookie = func; + zc.zc_flags = cmd; - err = errno; + if (zfs_ioctl(hdl, ZFS_IOC_POOL_SCAN, &zc) == 0) + return (0); + } - /* ECANCELED on a scrub means we resumed a paused scrub */ - if (err == ECANCELED && func == POOL_SCAN_SCRUB && - cmd == POOL_SCRUB_NORMAL) + /* + * An ECANCELED on a scrub means one of the following: + * 1. we resumed a paused scrub. + * 2. we resumed a paused error scrub. + * 3. Error scrub is not run because of no error log. + */ + if (err == ECANCELED && (func == POOL_SCAN_SCRUB || + func == POOL_SCAN_ERRORSCRUB) && cmd == POOL_SCRUB_NORMAL) return (0); - - if (err == ENOENT && func != POOL_SCAN_NONE && cmd == POOL_SCRUB_NORMAL) + /* + * The following cases have been handled here: + * 1. Paused a scrub/error scrub if there is none in progress. + */ + if (err == ENOENT && func != POOL_SCAN_NONE && cmd == + POOL_SCRUB_PAUSE) { return (0); + } + + ASSERT3U(func, >=, POOL_SCAN_NONE); + ASSERT3U(func, <, POOL_SCAN_FUNCS); - if (func == POOL_SCAN_SCRUB) { + if (func == POOL_SCAN_SCRUB || func == POOL_SCAN_ERRORSCRUB) { if (cmd == POOL_SCRUB_PAUSE) { (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot pause scrubbing %s"), - zc.zc_name); + zhp->zpool_name); } else { assert(cmd == POOL_SCRUB_NORMAL); (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot scrub %s"), - zc.zc_name); + zhp->zpool_name); } } else if (func == POOL_SCAN_RESILVER) { assert(cmd == POOL_SCRUB_NORMAL); (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, - "cannot restart resilver on %s"), zc.zc_name); + "cannot restart resilver on %s"), zhp->zpool_name); } else if (func == POOL_SCAN_NONE) { (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, - "cannot cancel scrubbing %s"), zc.zc_name); + "cannot cancel scrubbing %s"), zhp->zpool_name); } else { assert(!"unexpected result"); } + /* + * With EBUSY, five cases are possible: + * + * Current state Requested + * 1. Normal Scrub Running Normal Scrub or Error Scrub + * 2. Normal Scrub Paused Error Scrub + * 3. Normal Scrub Paused Pause Normal Scrub + * 4. Error Scrub Running Normal Scrub or Error Scrub + * 5. Error Scrub Paused Pause Error Scrub + * 6. Resilvering Anything else + */ if (err == EBUSY) { nvlist_t *nvroot; pool_scan_stat_t *ps = NULL; @@ -2600,12 +2741,43 @@ zpool_scan(zpool_handle_t *zhp, pool_scan_func_t func, pool_scrub_cmd_t cmd) ZPOOL_CONFIG_SCAN_STATS, (uint64_t **)&ps, &psc); if (ps && ps->pss_func == POOL_SCAN_SCRUB && ps->pss_state == DSS_SCANNING) { - if (cmd == POOL_SCRUB_PAUSE) - return (zfs_error(hdl, EZFS_SCRUB_PAUSED, + if (ps->pss_pass_scrub_pause == 0) { + /* handles case 1 */ + assert(cmd == POOL_SCRUB_NORMAL); + return (zfs_error(hdl, EZFS_SCRUBBING, errbuf)); - else - return (zfs_error(hdl, EZFS_SCRUBBING, errbuf)); + } else { + if (func == POOL_SCAN_ERRORSCRUB) { + /* handles case 2 */ + ASSERT3U(cmd, ==, POOL_SCRUB_NORMAL); + return (zfs_error(hdl, + EZFS_SCRUB_PAUSED_TO_CANCEL, + errbuf)); + } else { + /* handles case 3 */ + ASSERT3U(func, ==, POOL_SCAN_SCRUB); + ASSERT3U(cmd, ==, POOL_SCRUB_PAUSE); + return (zfs_error(hdl, + EZFS_SCRUB_PAUSED, errbuf)); + } + } + } else if (ps && + ps->pss_error_scrub_func == POOL_SCAN_ERRORSCRUB && + ps->pss_error_scrub_state == DSS_ERRORSCRUBBING) { + if (ps->pss_pass_error_scrub_pause == 0) { + /* handles case 4 */ + ASSERT3U(cmd, ==, POOL_SCRUB_NORMAL); + return (zfs_error(hdl, EZFS_ERRORSCRUBBING, + errbuf)); + } else { + /* handles case 5 */ + ASSERT3U(func, ==, POOL_SCAN_ERRORSCRUB); + ASSERT3U(cmd, ==, POOL_SCRUB_PAUSE); + return (zfs_error(hdl, EZFS_ERRORSCRUB_PAUSED, + errbuf)); + } } else { + /* handles case 6 */ return (zfs_error(hdl, EZFS_RESILVERING, errbuf)); } } else if (err == ENOENT) { @@ -2631,7 +2803,7 @@ vdev_to_nvlist_iter(nvlist_t *nv, nvlist_t *search, boolean_t *avail_spare, nvlist_t **child; nvlist_t *ret; uint64_t is_log; - char *srchkey; + const char *srchkey; nvpair_t *pair = nvlist_next_nvpair(search, NULL); /* Nothing to look for */ @@ -2653,7 +2825,7 @@ vdev_to_nvlist_iter(nvlist_t *nv, nvlist_t *search, boolean_t *avail_spare, break; case DATA_TYPE_STRING: { - char *srchval, *val; + const char *srchval, *val; srchval = fnvpair_value_string(pair); if (nvlist_lookup_string(nv, srchkey, &val) != 0) @@ -2679,7 +2851,7 @@ vdev_to_nvlist_iter(nvlist_t *nv, nvlist_t *search, boolean_t *avail_spare, if (zfs_strcmp_pathname(srchval, val, wholedisk) == 0) return (nv); - } else if (strcmp(srchkey, ZPOOL_CONFIG_TYPE) == 0 && val) { + } else if (strcmp(srchkey, ZPOOL_CONFIG_TYPE) == 0) { char *type, *idx, *end, *p; uint64_t id, vdev_id; @@ -2856,6 +3028,7 @@ zpool_vdev_is_interior(const char *name) strncmp(name, VDEV_TYPE_SPARE, strlen(VDEV_TYPE_SPARE)) == 0 || strncmp(name, VDEV_TYPE_REPLACING, strlen(VDEV_TYPE_REPLACING)) == 0 || + strncmp(name, VDEV_TYPE_ROOT, strlen(VDEV_TYPE_ROOT)) == 0 || strncmp(name, VDEV_TYPE_MIRROR, strlen(VDEV_TYPE_MIRROR)) == 0) return (B_TRUE); @@ -2866,6 +3039,9 @@ zpool_vdev_is_interior(const char *name) return (B_FALSE); } +/* + * Lookup the nvlist for a given vdev. + */ nvlist_t * zpool_find_vdev(zpool_handle_t *zhp, const char *path, boolean_t *avail_spare, boolean_t *l2cache, boolean_t *log) @@ -2873,6 +3049,7 @@ zpool_find_vdev(zpool_handle_t *zhp, const char *path, boolean_t *avail_spare, char *end; nvlist_t *nvroot, *search, *ret; uint64_t guid; + boolean_t __avail_spare, __l2cache, __log; search = fnvlist_alloc(); @@ -2888,6 +3065,18 @@ zpool_find_vdev(zpool_handle_t *zhp, const char *path, boolean_t *avail_spare, nvroot = fnvlist_lookup_nvlist(zhp->zpool_config, ZPOOL_CONFIG_VDEV_TREE); + /* + * User can pass NULL for avail_spare, l2cache, and log, but + * we still need to provide variables to vdev_to_nvlist_iter(), so + * just point them to junk variables here. + */ + if (!avail_spare) + avail_spare = &__avail_spare; + if (!l2cache) + l2cache = &__l2cache; + if (!log) + log = &__log; + *avail_spare = B_FALSE; *l2cache = B_FALSE; if (log != NULL) @@ -2898,154 +3087,6 @@ zpool_find_vdev(zpool_handle_t *zhp, const char *path, boolean_t *avail_spare, return (ret); } -static int -vdev_is_online(nvlist_t *nv) -{ - uint64_t ival; - - if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_OFFLINE, &ival) == 0 || - nvlist_lookup_uint64(nv, ZPOOL_CONFIG_FAULTED, &ival) == 0 || - nvlist_lookup_uint64(nv, ZPOOL_CONFIG_REMOVED, &ival) == 0) - return (0); - - return (1); -} - -/* - * Helper function for zpool_get_physpaths(). - */ -static int -vdev_get_one_physpath(nvlist_t *config, char *physpath, size_t physpath_size, - size_t *bytes_written) -{ - size_t bytes_left, pos, rsz; - char *tmppath; - const char *format; - - if (nvlist_lookup_string(config, ZPOOL_CONFIG_PHYS_PATH, - &tmppath) != 0) - return (EZFS_NODEVICE); - - pos = *bytes_written; - bytes_left = physpath_size - pos; - format = (pos == 0) ? "%s" : " %s"; - - rsz = snprintf(physpath + pos, bytes_left, format, tmppath); - *bytes_written += rsz; - - if (rsz >= bytes_left) { - /* if physpath was not copied properly, clear it */ - if (bytes_left != 0) { - physpath[pos] = 0; - } - return (EZFS_NOSPC); - } - return (0); -} - -static int -vdev_get_physpaths(nvlist_t *nv, char *physpath, size_t phypath_size, - size_t *rsz, boolean_t is_spare) -{ - char *type; - int ret; - - if (nvlist_lookup_string(nv, ZPOOL_CONFIG_TYPE, &type) != 0) - return (EZFS_INVALCONFIG); - - if (strcmp(type, VDEV_TYPE_DISK) == 0) { - /* - * An active spare device has ZPOOL_CONFIG_IS_SPARE set. - * For a spare vdev, we only want to boot from the active - * spare device. - */ - if (is_spare) { - uint64_t spare = 0; - (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_IS_SPARE, - &spare); - if (!spare) - return (EZFS_INVALCONFIG); - } - - if (vdev_is_online(nv)) { - if ((ret = vdev_get_one_physpath(nv, physpath, - phypath_size, rsz)) != 0) - return (ret); - } - } else if (strcmp(type, VDEV_TYPE_MIRROR) == 0 || - strcmp(type, VDEV_TYPE_RAIDZ) == 0 || - strcmp(type, VDEV_TYPE_REPLACING) == 0 || - (is_spare = (strcmp(type, VDEV_TYPE_SPARE) == 0))) { - nvlist_t **child; - uint_t count; - int i, ret; - - if (nvlist_lookup_nvlist_array(nv, - ZPOOL_CONFIG_CHILDREN, &child, &count) != 0) - return (EZFS_INVALCONFIG); - - for (i = 0; i < count; i++) { - ret = vdev_get_physpaths(child[i], physpath, - phypath_size, rsz, is_spare); - if (ret == EZFS_NOSPC) - return (ret); - } - } - - return (EZFS_POOL_INVALARG); -} - -/* - * Get phys_path for a root pool config. - * Return 0 on success; non-zero on failure. - */ -static int -zpool_get_config_physpath(nvlist_t *config, char *physpath, size_t phypath_size) -{ - size_t rsz; - nvlist_t *vdev_root; - nvlist_t **child; - uint_t count; - char *type; - - rsz = 0; - - if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, - &vdev_root) != 0) - return (EZFS_INVALCONFIG); - - if (nvlist_lookup_string(vdev_root, ZPOOL_CONFIG_TYPE, &type) != 0 || - nvlist_lookup_nvlist_array(vdev_root, ZPOOL_CONFIG_CHILDREN, - &child, &count) != 0) - return (EZFS_INVALCONFIG); - - /* - * root pool can only have a single top-level vdev. - */ - if (strcmp(type, VDEV_TYPE_ROOT) != 0 || count != 1) - return (EZFS_POOL_INVALARG); - - (void) vdev_get_physpaths(child[0], physpath, phypath_size, &rsz, - B_FALSE); - - /* No online devices */ - if (rsz == 0) - return (EZFS_NODEVICE); - - return (0); -} - -/* - * Get phys_path for a root pool - * Return 0 on success; non-zero on failure. - */ -int -zpool_get_physpath(zpool_handle_t *zhp, char *physpath, size_t phypath_size) -{ - return (zpool_get_config_physpath(zhp->zpool_config, physpath, - phypath_size)); -} - /* * Convert a vdev path to a GUID. Returns GUID or 0 on error. * @@ -3110,11 +3151,11 @@ zpool_vdev_online(zpool_handle_t *zhp, const char *path, int flags, zc.zc_guid = fnvlist_lookup_uint64(tgt, ZPOOL_CONFIG_GUID); - if (avail_spare) + if (!(flags & ZFS_ONLINE_SPARE) && avail_spare) return (zfs_error(hdl, EZFS_ISSPARE, errbuf)); #ifndef __FreeBSD__ - char *pathname; + const char *pathname; if ((flags & ZFS_ONLINE_EXPAND || zpool_get_prop_int(zhp, ZPOOL_PROP_AUTOEXPAND, NULL)) && nvlist_lookup_string(tgt, ZPOOL_CONFIG_PATH, &pathname) == 0) { @@ -3222,6 +3263,40 @@ zpool_vdev_offline(zpool_handle_t *zhp, const char *path, boolean_t istmp) } /* + * Remove the specified vdev asynchronously from the configuration, so + * that it may come ONLINE if reinserted. This is called from zed on + * Udev remove event. + * Note: We also have a similar function zpool_vdev_remove() that + * removes the vdev from the pool. + */ +int +zpool_vdev_remove_wanted(zpool_handle_t *zhp, const char *path) +{ + zfs_cmd_t zc = {"\0"}; + char errbuf[ERRBUFLEN]; + nvlist_t *tgt; + boolean_t avail_spare, l2cache; + libzfs_handle_t *hdl = zhp->zpool_hdl; + + (void) snprintf(errbuf, sizeof (errbuf), + dgettext(TEXT_DOMAIN, "cannot remove %s"), path); + + (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); + if ((tgt = zpool_find_vdev(zhp, path, &avail_spare, &l2cache, + NULL)) == NULL) + return (zfs_error(hdl, EZFS_NODEVICE, errbuf)); + + zc.zc_guid = fnvlist_lookup_uint64(tgt, ZPOOL_CONFIG_GUID); + + zc.zc_cookie = VDEV_STATE_REMOVED; + + if (zfs_ioctl(hdl, ZFS_IOC_VDEV_SET_STATE, &zc) == 0) + return (0); + + return (zpool_standard_error(hdl, errno, errbuf)); +} + +/* * Mark the given vdev faulted. */ int @@ -3257,21 +3332,23 @@ zpool_vdev_fault(zpool_handle_t *zhp, uint64_t guid, vdev_aux_t aux) } /* - * Mark the given vdev degraded. + * Generic set vdev state function */ -int -zpool_vdev_degrade(zpool_handle_t *zhp, uint64_t guid, vdev_aux_t aux) +static int +zpool_vdev_set_state(zpool_handle_t *zhp, uint64_t guid, vdev_aux_t aux, + vdev_state_t state) { zfs_cmd_t zc = {"\0"}; char errbuf[ERRBUFLEN]; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) snprintf(errbuf, sizeof (errbuf), - dgettext(TEXT_DOMAIN, "cannot degrade %llu"), (u_longlong_t)guid); + dgettext(TEXT_DOMAIN, "cannot set %s %llu"), + zpool_state_to_name(state, aux), (u_longlong_t)guid); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); zc.zc_guid = guid; - zc.zc_cookie = VDEV_STATE_DEGRADED; + zc.zc_cookie = state; zc.zc_obj = aux; if (zfs_ioctl(hdl, ZFS_IOC_VDEV_SET_STATE, &zc) == 0) @@ -3281,6 +3358,27 @@ zpool_vdev_degrade(zpool_handle_t *zhp, uint64_t guid, vdev_aux_t aux) } /* + * Mark the given vdev degraded. + */ +int +zpool_vdev_degrade(zpool_handle_t *zhp, uint64_t guid, vdev_aux_t aux) +{ + return (zpool_vdev_set_state(zhp, guid, aux, VDEV_STATE_DEGRADED)); +} + +/* + * Mark the given vdev as in a removed state (as if the device does not exist). + * + * This is different than zpool_vdev_remove() which does a removal of a device + * from the pool (but the device does exist). + */ +int +zpool_vdev_set_removed_state(zpool_handle_t *zhp, uint64_t guid, vdev_aux_t aux) +{ + return (zpool_vdev_set_state(zhp, guid, aux, VDEV_STATE_REMOVED)); +} + +/* * Returns TRUE if the given nvlist is a vdev that was originally swapped in as * a hot spare. */ @@ -3292,7 +3390,8 @@ is_replacing_spare(nvlist_t *search, nvlist_t *tgt, int which) if (nvlist_lookup_nvlist_array(search, ZPOOL_CONFIG_CHILDREN, &child, &children) == 0) { - char *type = fnvlist_lookup_string(search, ZPOOL_CONFIG_TYPE); + const char *type = fnvlist_lookup_string(search, + ZPOOL_CONFIG_TYPE); if ((strcmp(type, VDEV_TYPE_SPARE) == 0 || strcmp(type, VDEV_TYPE_DRAID_SPARE) == 0) && children == 2 && child[which] == tgt) @@ -3321,6 +3420,7 @@ zpool_vdev_attach(zpool_handle_t *zhp, const char *old_disk, boolean_t avail_spare, l2cache, islog; uint64_t val; char *newname; + const char *type; nvlist_t **child; uint_t children; nvlist_t *config_root; @@ -3355,6 +3455,14 @@ zpool_vdev_attach(zpool_handle_t *zhp, const char *old_disk, return (zfs_error(hdl, EZFS_POOL_NOTSUP, errbuf)); } + type = fnvlist_lookup_string(tgt, ZPOOL_CONFIG_TYPE); + if (strcmp(type, VDEV_TYPE_RAIDZ) == 0 && + zfeature_lookup_guid("org.openzfs:raidz_expansion", NULL) != 0) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "the loaded zfs module doesn't support raidz expansion")); + return (zfs_error(hdl, EZFS_POOL_NOTSUP, errbuf)); + } + if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN, &child, &children) != 0 || children != 1) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, @@ -3422,6 +3530,10 @@ zpool_vdev_attach(zpool_handle_t *zhp, const char *old_disk, zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot replace a replacing device")); } + } else if (strcmp(type, VDEV_TYPE_RAIDZ) == 0) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "raidz_expansion feature must be enabled " + "in order to attach a device to raidz")); } else { char status[64] = {0}; zpool_prop_get_feature(zhp, @@ -3451,8 +3563,7 @@ zpool_vdev_attach(zpool_handle_t *zhp, const char *old_disk, break; case EBUSY: - zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "%s is busy, " - "or device removal is in progress"), + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "%s is busy"), new_disk); (void) zfs_error(hdl, EZFS_BADDEV, errbuf); break; @@ -3483,6 +3594,34 @@ zpool_vdev_attach(zpool_handle_t *zhp, const char *old_disk, (void) zfs_error(hdl, EZFS_DEVOVERFLOW, errbuf); break; + case ENXIO: + /* + * The existing raidz vdev has offline children + */ + if (strcmp(type, VDEV_TYPE_RAIDZ) == 0) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "raidz vdev has devices that are are offline or " + "being replaced")); + (void) zfs_error(hdl, EZFS_BADDEV, errbuf); + break; + } else { + (void) zpool_standard_error(hdl, errno, errbuf); + } + break; + + case EADDRINUSE: + /* + * The boot reserved area is already being used (FreeBSD) + */ + if (strcmp(type, VDEV_TYPE_RAIDZ) == 0) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "the reserved boot area needed for the expansion " + "is already being used by a boot loader")); + (void) zfs_error(hdl, EZFS_BADDEV, errbuf); + } else { + (void) zpool_standard_error(hdl, errno, errbuf); + } + break; default: (void) zpool_standard_error(hdl, errno, errbuf); } @@ -3595,7 +3734,8 @@ zpool_vdev_split(zpool_handle_t *zhp, char *newname, nvlist_t **newroot, nvlist_t *props, splitflags_t flags) { zfs_cmd_t zc = {"\0"}; - char errbuf[ERRBUFLEN], *bias; + char errbuf[ERRBUFLEN]; + const char *bias; nvlist_t *tree, *config, **child, **newchild, *newconfig = NULL; nvlist_t **varray = NULL, *zc_props = NULL; uint_t c, children, newchildren, lastlog = 0, vcount, found = 0; @@ -3653,7 +3793,7 @@ zpool_vdev_split(zpool_handle_t *zhp, char *newname, nvlist_t **newroot, for (c = 0; c < children; c++) { uint64_t is_log = B_FALSE, is_hole = B_FALSE; boolean_t is_special = B_FALSE, is_dedup = B_FALSE; - char *type; + const char *type; nvlist_t **mchild, *vdev; uint_t mchildren; int entry; @@ -3869,6 +4009,12 @@ zpool_vdev_remove(zpool_handle_t *zhp, const char *path) switch (errno) { + case EALREADY: + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "removal for this vdev is already in progress.")); + (void) zfs_error(hdl, EZFS_BUSY, errbuf); + break; + case EINVAL: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid config; all top-level vdevs must " @@ -4126,7 +4272,7 @@ char * zpool_vdev_name(libzfs_handle_t *hdl, zpool_handle_t *zhp, nvlist_t *nv, int name_flags) { - char *type, *tpath; + const char *type, *tpath; const char *path; uint64_t value; char buf[PATH_BUF_LEN]; @@ -4245,33 +4391,28 @@ zpool_get_errlog(zpool_handle_t *zhp, nvlist_t **nverrlistp) { zfs_cmd_t zc = {"\0"}; libzfs_handle_t *hdl = zhp->zpool_hdl; - uint64_t count; - zbookmark_phys_t *zb = NULL; - int i; + zbookmark_phys_t *buf; + uint64_t buflen = 10000; /* approx. 1MB of RAM */ + + if (fnvlist_lookup_uint64(zhp->zpool_config, + ZPOOL_CONFIG_ERRCOUNT) == 0) + return (0); /* - * Retrieve the raw error list from the kernel. If the number of errors - * has increased, allocate more space and continue until we get the - * entire list. + * Retrieve the raw error list from the kernel. If it doesn't fit, + * allocate a larger buffer and retry. */ - count = fnvlist_lookup_uint64(zhp->zpool_config, ZPOOL_CONFIG_ERRCOUNT); - if (count == 0) - return (0); - zc.zc_nvlist_dst = (uintptr_t)zfs_alloc(zhp->zpool_hdl, - count * sizeof (zbookmark_phys_t)); - zc.zc_nvlist_dst_size = count; (void) strcpy(zc.zc_name, zhp->zpool_name); for (;;) { + buf = zfs_alloc(zhp->zpool_hdl, + buflen * sizeof (zbookmark_phys_t)); + zc.zc_nvlist_dst = (uintptr_t)buf; + zc.zc_nvlist_dst_size = buflen; if (zfs_ioctl(zhp->zpool_hdl, ZFS_IOC_ERROR_LOG, &zc) != 0) { - free((void *)(uintptr_t)zc.zc_nvlist_dst); + free(buf); if (errno == ENOMEM) { - void *dst; - - count = zc.zc_nvlist_dst_size; - dst = zfs_alloc(zhp->zpool_hdl, count * - sizeof (zbookmark_phys_t)); - zc.zc_nvlist_dst = (uintptr_t)dst; + buflen *= 2; } else { return (zpool_standard_error_fmt(hdl, errno, dgettext(TEXT_DOMAIN, "errors: List of " @@ -4289,18 +4430,17 @@ zpool_get_errlog(zpool_handle_t *zhp, nvlist_t **nverrlistp) * _not_ copied as part of the process. So we point the start of our * array appropriate and decrement the total number of elements. */ - zb = ((zbookmark_phys_t *)(uintptr_t)zc.zc_nvlist_dst) + - zc.zc_nvlist_dst_size; - count -= zc.zc_nvlist_dst_size; + zbookmark_phys_t *zb = buf + zc.zc_nvlist_dst_size; + uint64_t zblen = buflen - zc.zc_nvlist_dst_size; - qsort(zb, count, sizeof (zbookmark_phys_t), zbookmark_mem_compare); + qsort(zb, zblen, sizeof (zbookmark_phys_t), zbookmark_mem_compare); verify(nvlist_alloc(nverrlistp, 0, KM_SLEEP) == 0); /* * Fill in the nverrlistp with nvlist's of dataset and object numbers. */ - for (i = 0; i < count; i++) { + for (uint64_t i = 0; i < zblen; i++) { nvlist_t *nv; /* ignoring zb_blkid and zb_level for now */ @@ -4327,11 +4467,11 @@ zpool_get_errlog(zpool_handle_t *zhp, nvlist_t **nverrlistp) nvlist_free(nv); } - free((void *)(uintptr_t)zc.zc_nvlist_dst); + free(buf); return (0); nomem: - free((void *)(uintptr_t)zc.zc_nvlist_dst); + free(buf); return (no_memory(zhp->zpool_hdl)); } @@ -4832,8 +4972,8 @@ zpool_load_compat(const char *compat, boolean_t *features, char *report, for (uint_t i = 0; i < SPA_FEATURES; i++) features[i] = B_TRUE; - char err_badfile[1024] = ""; - char err_badtoken[1024] = ""; + char err_badfile[ZFS_MAXPROPLEN] = ""; + char err_badtoken[ZFS_MAXPROPLEN] = ""; /* * We ignore errors from the directory open() @@ -5123,6 +5263,19 @@ zpool_get_vdev_prop_value(nvlist_t *nvprop, vdev_prop_t prop, char *prop_name, (u_longlong_t)intval); } break; + case VDEV_PROP_CHECKSUM_N: + case VDEV_PROP_CHECKSUM_T: + case VDEV_PROP_IO_N: + case VDEV_PROP_IO_T: + case VDEV_PROP_SLOW_IO_N: + case VDEV_PROP_SLOW_IO_T: + if (intval == UINT64_MAX) { + (void) strlcpy(buf, "-", len); + } else { + (void) snprintf(buf, len, "%llu", + (u_longlong_t)intval); + } + break; case VDEV_PROP_FRAGMENTATION: if (intval == UINT64_MAX) { (void) strlcpy(buf, "-", len); @@ -5153,6 +5306,9 @@ zpool_get_vdev_prop_value(nvlist_t *nvprop, vdev_prop_t prop, char *prop_name, } else { src = ZPROP_SRC_DEFAULT; intval = vdev_prop_default_numeric(prop); + /* Only use if provided by the RAIDZ VDEV above */ + if (prop == VDEV_PROP_RAIDZ_EXPANDING) + return (ENOENT); } if (vdev_prop_index_to_string(prop, intval, (const char **)&strval) != 0) diff --git a/lib/libzfs/libzfs_sendrecv.c b/lib/libzfs/libzfs_sendrecv.c index 794aff5feef8..526f57ea403c 100644 --- a/lib/libzfs/libzfs_sendrecv.c +++ b/lib/libzfs/libzfs_sendrecv.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -83,6 +83,9 @@ typedef struct progress_arg { boolean_t pa_parsable; boolean_t pa_estimate; int pa_verbosity; + boolean_t pa_astitle; + boolean_t pa_progress; + uint64_t pa_size; } progress_arg_t; static int @@ -116,7 +119,7 @@ dump_record(dmu_replay_record_t *drr, void *payload, size_t payload_len, typedef struct fsavl_node { avl_node_t fn_node; nvlist_t *fn_nvfs; - char *fn_snapname; + const char *fn_snapname; uint64_t fn_guid; } fsavl_node_t; @@ -134,7 +137,7 @@ fsavl_compare(const void *arg1, const void *arg2) * (optionally) name. */ static nvlist_t * -fsavl_find(avl_tree_t *avl, uint64_t snapguid, char **snapname) +fsavl_find(avl_tree_t *avl, uint64_t snapguid, const char **snapname) { fsavl_node_t fn_find; fsavl_node_t *fn; @@ -285,7 +288,7 @@ send_iterate_prop(zfs_handle_t *zhp, boolean_t received_only, nvlist_t *nv); /* * Collect guid, valid props, optionally holds, etc. of a snapshot. - * This interface is intended for use as a zfs_iter_snapshots_sorted visitor. + * This interface is intended for use as a zfs_iter_snapshots_v2_sorted visitor. */ static int send_iterate_snap(zfs_handle_t *zhp, void *arg) @@ -381,7 +384,7 @@ send_iterate_prop(zfs_handle_t *zhp, boolean_t received_only, nvlist_t *nv) nvpair_t *elem = NULL; while ((elem = nvlist_next_nvpair(props, elem)) != NULL) { - char *propname = nvpair_name(elem); + const char *propname = nvpair_name(elem); zfs_prop_t prop = zfs_name_to_prop(propname); if (!zfs_prop_user(propname)) { @@ -409,7 +412,7 @@ send_iterate_prop(zfs_handle_t *zhp, boolean_t received_only, nvlist_t *nv) if (isspacelimit && zhp->zfs_type == ZFS_TYPE_SNAPSHOT) continue; - char *source; + const char *source; if (nvlist_lookup_string(propnv, ZPROP_SOURCE, &source) == 0) { if (strcmp(source, zhp->zfs_name) != 0 && strcmp(source, ZPROP_SOURCE_VAL_RECVD) != 0) @@ -425,7 +428,7 @@ send_iterate_prop(zfs_handle_t *zhp, boolean_t received_only, nvlist_t *nv) if (zfs_prop_user(propname) || zfs_prop_get_type(prop) == PROP_TYPE_STRING) { - char *value; + const char *value; value = fnvlist_lookup_string(propnv, ZPROP_VALUE); fnvlist_add_string(nv, propname, value); } else { @@ -437,6 +440,29 @@ send_iterate_prop(zfs_handle_t *zhp, boolean_t received_only, nvlist_t *nv) } /* + * returns snapshot guid + * and returns 0 if the snapshot does not exist + */ +static uint64_t +get_snap_guid(libzfs_handle_t *hdl, const char *fs, const char *snap) +{ + char name[MAXPATHLEN + 1]; + uint64_t guid = 0; + + if (fs == NULL || fs[0] == '\0' || snap == NULL || snap[0] == '\0') + return (guid); + + (void) snprintf(name, sizeof (name), "%s@%s", fs, snap); + zfs_handle_t *zhp = zfs_open(hdl, name, ZFS_TYPE_SNAPSHOT); + if (zhp != NULL) { + guid = zfs_prop_get_int(zhp, ZFS_PROP_GUID); + zfs_close(zhp); + } + + return (guid); +} + +/* * returns snapshot creation txg * and returns 0 if the snapshot does not exist */ @@ -593,10 +619,10 @@ send_iterate_fs(zfs_handle_t *zhp, void *arg) min_txg = fromsnap_txg; if (!sd->replicate && tosnap_txg != 0) max_txg = tosnap_txg; - (void) zfs_iter_snapshots_sorted(zhp, send_iterate_snap, sd, - min_txg, max_txg); + (void) zfs_iter_snapshots_sorted_v2(zhp, 0, send_iterate_snap, + sd, min_txg, max_txg); } else { - char snapname[MAXPATHLEN]; + char snapname[MAXPATHLEN] = { 0 }; zfs_handle_t *snap; (void) snprintf(snapname, sizeof (snapname), "%s@%s", @@ -636,7 +662,7 @@ send_iterate_fs(zfs_handle_t *zhp, void *arg) /* Iterate over children. */ if (sd->recursive) - rv = zfs_iter_filesystems(zhp, send_iterate_fs, sd); + rv = zfs_iter_filesystems_v2(zhp, 0, send_iterate_fs, sd); out: /* Restore saved fields. */ @@ -710,6 +736,7 @@ typedef struct send_dump_data { boolean_t seenfrom, seento, replicate, doall, fromorigin; boolean_t dryrun, parsable, progress, embed_data, std_out; boolean_t large_block, compress, raw, holds; + boolean_t progressastitle; int outfd; boolean_t err; nvlist_t *fss; @@ -766,7 +793,7 @@ zfs_send_space(zfs_handle_t *zhp, const char *snapname, const char *from, case EFAULT: case EROFS: case EINVAL: - zfs_error_aux(hdl, "%s", strerror(error)); + zfs_error_aux(hdl, "%s", zfs_strerror(error)); return (zfs_error(hdl, EZFS_BADBACKUP, errbuf)); default: @@ -849,13 +876,8 @@ dump_ioctl(zfs_handle_t *zhp, const char *fromsnap, uint64_t fromsnap_obj, case EFAULT: case EROFS: case EINVAL: - zfs_error_aux(hdl, "%s", strerror(errno)); + zfs_error_aux(hdl, "%s", zfs_strerror(errno)); return (zfs_error(hdl, EZFS_BADBACKUP, errbuf)); - case ENOTSUP: - zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, - "large blocks detected but large_blocks feature " - "is inactive; raw send unsupported")); - return (zfs_error(hdl, EZFS_NOTSUP, errbuf)); default: return (zfs_standard_error(hdl, errno, errbuf)); @@ -906,6 +928,39 @@ zfs_send_progress(zfs_handle_t *zhp, int fd, uint64_t *bytes_written, return (0); } +static volatile boolean_t send_progress_thread_signal_duetotimer; +static void +send_progress_thread_act(int sig, siginfo_t *info, void *ucontext) +{ + (void) sig, (void) ucontext; + send_progress_thread_signal_duetotimer = info->si_code == SI_TIMER; +} + +struct timer_desirability { + timer_t timer; + boolean_t desired; +}; +static void +timer_delete_cleanup(void *timer) +{ + struct timer_desirability *td = timer; + if (td->desired) + timer_delete(td->timer); +} + +#ifdef SIGINFO +#define SEND_PROGRESS_THREAD_PARENT_BLOCK_SIGINFO sigaddset(&new, SIGINFO) +#else +#define SEND_PROGRESS_THREAD_PARENT_BLOCK_SIGINFO +#endif +#define SEND_PROGRESS_THREAD_PARENT_BLOCK(old) { \ + sigset_t new; \ + sigemptyset(&new); \ + sigaddset(&new, SIGUSR1); \ + SEND_PROGRESS_THREAD_PARENT_BLOCK_SIGINFO; \ + pthread_sigmask(SIG_BLOCK, &new, old); \ +} + static void * send_progress_thread(void *arg) { @@ -913,12 +968,33 @@ send_progress_thread(void *arg) zfs_handle_t *zhp = pa->pa_zhp; uint64_t bytes; uint64_t blocks; + uint64_t total = pa->pa_size / 100; char buf[16]; time_t t; struct tm tm; int err; - if (!pa->pa_parsable) { + const struct sigaction signal_action = + {.sa_sigaction = send_progress_thread_act, .sa_flags = SA_SIGINFO}; + struct sigevent timer_cfg = + {.sigev_notify = SIGEV_SIGNAL, .sigev_signo = SIGUSR1}; + const struct itimerspec timer_time = + {.it_value = {.tv_sec = 1}, .it_interval = {.tv_sec = 1}}; + struct timer_desirability timer = {}; + + sigaction(SIGUSR1, &signal_action, NULL); +#ifdef SIGINFO + sigaction(SIGINFO, &signal_action, NULL); +#endif + + if ((timer.desired = pa->pa_progress || pa->pa_astitle)) { + if (timer_create(CLOCK_MONOTONIC, &timer_cfg, &timer.timer)) + return ((void *)(uintptr_t)errno); + (void) timer_settime(timer.timer, 0, &timer_time, NULL); + } + pthread_cleanup_push(timer_delete_cleanup, &timer); + + if (!pa->pa_parsable && pa->pa_progress) { (void) fprintf(stderr, "TIME %s %sSNAPSHOT %s\n", pa->pa_estimate ? "BYTES" : " SENT", @@ -930,17 +1006,28 @@ send_progress_thread(void *arg) * Print the progress from ZFS_IOC_SEND_PROGRESS every second. */ for (;;) { - (void) sleep(1); + pause(); if ((err = zfs_send_progress(zhp, pa->pa_fd, &bytes, &blocks)) != 0) { if (err == EINTR || err == ENOENT) - return ((void *)0); - return ((void *)(uintptr_t)err); + err = 0; + pthread_exit(((void *)(uintptr_t)err)); } (void) time(&t); localtime_r(&t, &tm); + if (pa->pa_astitle) { + char buf_bytes[16]; + char buf_size[16]; + int pct; + zfs_nicenum(bytes, buf_bytes, sizeof (buf_bytes)); + zfs_nicenum(pa->pa_size, buf_size, sizeof (buf_size)); + pct = (total > 0) ? bytes / total : 100; + zfs_setproctitle("sending %s (%d%%: %s/%s)", + zhp->zfs_name, MIN(pct, 100), buf_bytes, buf_size); + } + if (pa->pa_verbosity >= 2 && pa->pa_parsable) { (void) fprintf(stderr, "%02d:%02d:%02d\t%llu\t%llu\t%s\n", @@ -957,21 +1044,26 @@ send_progress_thread(void *arg) (void) fprintf(stderr, "%02d:%02d:%02d\t%llu\t%s\n", tm.tm_hour, tm.tm_min, tm.tm_sec, (u_longlong_t)bytes, zhp->zfs_name); - } else { + } else if (pa->pa_progress || + !send_progress_thread_signal_duetotimer) { zfs_nicebytes(bytes, buf, sizeof (buf)); (void) fprintf(stderr, "%02d:%02d:%02d %5s %s\n", tm.tm_hour, tm.tm_min, tm.tm_sec, buf, zhp->zfs_name); } } + pthread_cleanup_pop(B_TRUE); + return (NULL); } static boolean_t -send_progress_thread_exit(libzfs_handle_t *hdl, pthread_t ptid) +send_progress_thread_exit( + libzfs_handle_t *hdl, pthread_t ptid, sigset_t *oldmask) { void *status = NULL; (void) pthread_cancel(ptid); (void) pthread_join(ptid, &status); + pthread_sigmask(SIG_SETMASK, oldmask, NULL); int error = (int)(uintptr_t)status; if (error != 0 && status != PTHREAD_CANCELED) return (zfs_standard_error(hdl, error, @@ -989,8 +1081,23 @@ send_print_verbose(FILE *fout, const char *tosnap, const char *fromsnap, (void) fprintf(fout, dgettext(TEXT_DOMAIN, "incremental\t%s\t%s"), fromsnap, tosnap); } else { +/* + * Workaround for GCC 12+ with UBSan enabled deficencies. + * + * GCC 12+ invoked with -fsanitize=undefined incorrectly reports the code + * below as violating -Wformat-overflow. + */ +#if defined(__GNUC__) && !defined(__clang__) && \ + defined(ZFS_UBSAN_ENABLED) && defined(HAVE_FORMAT_OVERFLOW) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-overflow" +#endif (void) fprintf(fout, dgettext(TEXT_DOMAIN, "full\t%s"), tosnap); +#if defined(__GNUC__) && !defined(__clang__) && \ + defined(ZFS_UBSAN_ENABLED) && defined(HAVE_FORMAT_OVERFLOW) +#pragma GCC diagnostic pop +#endif } (void) fprintf(fout, "\t%llu", (longlong_t)size); } else { @@ -1010,8 +1117,23 @@ send_print_verbose(FILE *fout, const char *tosnap, const char *fromsnap, if (size != 0) { char buf[16]; zfs_nicebytes(size, buf, sizeof (buf)); +/* + * Workaround for GCC 12+ with UBSan enabled deficencies. + * + * GCC 12+ invoked with -fsanitize=undefined incorrectly reports the code + * below as violating -Wformat-overflow. + */ +#if defined(__GNUC__) && !defined(__clang__) && \ + defined(ZFS_UBSAN_ENABLED) && defined(HAVE_FORMAT_OVERFLOW) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-overflow" +#endif (void) fprintf(fout, dgettext(TEXT_DOMAIN, " estimated size is %s"), buf); +#if defined(__GNUC__) && !defined(__clang__) && \ + defined(ZFS_UBSAN_ENABLED) && defined(HAVE_FORMAT_OVERFLOW) +#pragma GCC diagnostic pop +#endif } } (void) fprintf(fout, "\n"); @@ -1019,7 +1141,7 @@ send_print_verbose(FILE *fout, const char *tosnap, const char *fromsnap, /* * Send a single filesystem snapshot, updating the send dump data. - * This interface is intended for use as a zfs_iter_snapshots_sorted visitor. + * This interface is intended for use as a zfs_iter_snapshots_v2_sorted visitor. */ static int dump_snapshot(zfs_handle_t *zhp, void *arg) @@ -1068,7 +1190,7 @@ dump_snapshot(zfs_handle_t *zhp, void *arg) if (!sdd->doall && !isfromsnap && !istosnap) { if (sdd->replicate) { - char *snapname; + const char *snapname; nvlist_t *snapprops; /* * Filter out all intermediate snapshots except origin @@ -1135,29 +1257,33 @@ dump_snapshot(zfs_handle_t *zhp, void *arg) * If progress reporting is requested, spawn a new thread to * poll ZFS_IOC_SEND_PROGRESS at a regular interval. */ - if (sdd->progress) { + sigset_t oldmask; + { pa.pa_zhp = zhp; pa.pa_fd = sdd->outfd; pa.pa_parsable = sdd->parsable; pa.pa_estimate = B_FALSE; pa.pa_verbosity = sdd->verbosity; + pa.pa_size = sdd->size; + pa.pa_astitle = sdd->progressastitle; + pa.pa_progress = sdd->progress; if ((err = pthread_create(&tid, NULL, send_progress_thread, &pa)) != 0) { zfs_close(zhp); return (err); } + SEND_PROGRESS_THREAD_PARENT_BLOCK(&oldmask); } err = dump_ioctl(zhp, sdd->prevsnap, sdd->prevsnap_obj, fromorigin, sdd->outfd, flags, sdd->debugnv); - if (sdd->progress && - send_progress_thread_exit(zhp->zfs_hdl, tid)) + if (send_progress_thread_exit(zhp->zfs_hdl, tid, &oldmask)) return (-1); } - (void) strcpy(sdd->prevsnap, thissnap); + (void) strlcpy(sdd->prevsnap, thissnap, sizeof (sdd->prevsnap)); sdd->prevsnap_obj = zfs_prop_get_int(zhp, ZFS_PROP_OBJSETID); zfs_close(zhp); return (err); @@ -1226,7 +1352,7 @@ dump_filesystem(zfs_handle_t *zhp, send_dump_data_t *sdd) zhp->zfs_name, sdd->tosnap); } } - rv = zfs_iter_snapshots_sorted(zhp, dump_snapshot, sdd, + rv = zfs_iter_snapshots_sorted_v2(zhp, 0, dump_snapshot, sdd, min_txg, max_txg); } else { char snapname[MAXPATHLEN] = { 0 }; @@ -1241,7 +1367,7 @@ dump_filesystem(zfs_handle_t *zhp, send_dump_data_t *sdd) if (snap != NULL) rv = dump_snapshot(snap, sdd); else - rv = -1; + rv = errno; } /* Dump tosnap. */ @@ -1253,7 +1379,7 @@ dump_filesystem(zfs_handle_t *zhp, send_dump_data_t *sdd) if (snap != NULL) rv = dump_snapshot(snap, sdd); else - rv = -1; + rv = errno; } } @@ -1305,7 +1431,7 @@ dump_filesystems(zfs_handle_t *rzhp, send_dump_data_t *sdd) nvfs = fnvpair_value_nvlist(fspair); (void) nvlist_lookup_uint64(nvfs, "origin", &origin_guid); if (origin_guid != 0) { - char *snapname; + const char *snapname; nvlist_t *origin_nv = fsavl_find(sdd->fsavl, origin_guid, &snapname); if (origin_nv != NULL) { @@ -1324,7 +1450,7 @@ again: for (fspair = nvlist_next_nvpair(sdd->fss, NULL); fspair; fspair = nvlist_next_nvpair(sdd->fss, fspair)) { nvlist_t *fslist, *parent_nv; - char *fsname; + const char *fsname; zfs_handle_t *zhp; int err; uint64_t origin_guid = 0; @@ -1488,15 +1614,16 @@ lzc_flags_from_sendflags(const sendflags_t *flags) static int estimate_size(zfs_handle_t *zhp, const char *from, int fd, sendflags_t *flags, uint64_t resumeobj, uint64_t resumeoff, uint64_t bytes, - const char *redactbook, char *errbuf) + const char *redactbook, char *errbuf, uint64_t *sizep) { uint64_t size; FILE *fout = flags->dryrun ? stdout : stderr; progress_arg_t pa = { 0 }; int err = 0; pthread_t ptid; + sigset_t oldmask; - if (flags->progress) { + { pa.pa_zhp = zhp; pa.pa_fd = fd; pa.pa_parsable = flags->parsable; @@ -1506,21 +1633,26 @@ estimate_size(zfs_handle_t *zhp, const char *from, int fd, sendflags_t *flags, err = pthread_create(&ptid, NULL, send_progress_thread, &pa); if (err != 0) { - zfs_error_aux(zhp->zfs_hdl, "%s", strerror(errno)); + zfs_error_aux(zhp->zfs_hdl, "%s", zfs_strerror(errno)); return (zfs_error(zhp->zfs_hdl, EZFS_THREADCREATEFAILED, errbuf)); } + SEND_PROGRESS_THREAD_PARENT_BLOCK(&oldmask); } err = lzc_send_space_resume_redacted(zhp->zfs_name, from, lzc_flags_from_sendflags(flags), resumeobj, resumeoff, bytes, redactbook, fd, &size); + *sizep = size; - if (flags->progress && send_progress_thread_exit(zhp->zfs_hdl, ptid)) + if (send_progress_thread_exit(zhp->zfs_hdl, ptid, &oldmask)) return (-1); + if (!flags->progress && !flags->parsable) + return (err); + if (err != 0) { - zfs_error_aux(zhp->zfs_hdl, "%s", strerror(err)); + zfs_error_aux(zhp->zfs_hdl, "%s", zfs_strerror(err)); return (zfs_error(zhp->zfs_hdl, EZFS_BADBACKUP, errbuf)); } @@ -1636,7 +1768,7 @@ find_redact_book(libzfs_handle_t *hdl, const char *path, "dataset to be sent no longer exists")); } else { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, - "unknown error: %s"), strerror(error)); + "unknown error: %s"), zfs_strerror(error)); } return (zfs_error(hdl, EZFS_BADPROP, errbuf)); } @@ -1685,8 +1817,8 @@ zfs_send_resume_impl_cb_impl(libzfs_handle_t *hdl, sendflags_t *flags, int outfd, nvlist_t *resume_nvl) { char errbuf[ERRBUFLEN]; - char *toname; - char *fromname = NULL; + const char *toname; + const char *fromname = NULL; uint64_t resumeobj, resumeoff, toguid, fromguid, bytes; zfs_handle_t *zhp; int error = 0; @@ -1695,6 +1827,7 @@ zfs_send_resume_impl_cb_impl(libzfs_handle_t *hdl, sendflags_t *flags, uint64_t *redact_snap_guids = NULL; int num_redact_snaps = 0; char *redact_book = NULL; + uint64_t size = 0; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot resume send")); @@ -1718,7 +1851,7 @@ zfs_send_resume_impl_cb_impl(libzfs_handle_t *hdl, sendflags_t *flags, (void) nvlist_lookup_uint64(resume_nvl, "fromguid", &fromguid); if (flags->saved) { - (void) strcpy(name, toname); + (void) strlcpy(name, toname, sizeof (name)); } else { error = guid_to_name(hdl, toname, toguid, B_FALSE, name); if (error != 0) { @@ -1780,7 +1913,7 @@ zfs_send_resume_impl_cb_impl(libzfs_handle_t *hdl, sendflags_t *flags, enum lzc_send_flags lzc_flags = lzc_flags_from_sendflags(flags) | lzc_flags_from_resume_nvl(resume_nvl); - if (flags->verbosity != 0) { + if (flags->verbosity != 0 || flags->progressastitle) { /* * Some of these may have come from the resume token, set them * here for size estimate purposes. @@ -1797,22 +1930,26 @@ zfs_send_resume_impl_cb_impl(libzfs_handle_t *hdl, sendflags_t *flags, if (lzc_flags & LZC_SEND_FLAG_SAVED) tmpflags.saved = B_TRUE; error = estimate_size(zhp, fromname, outfd, &tmpflags, - resumeobj, resumeoff, bytes, redact_book, errbuf); + resumeobj, resumeoff, bytes, redact_book, errbuf, &size); } if (!flags->dryrun) { progress_arg_t pa = { 0 }; pthread_t tid; + sigset_t oldmask; /* * If progress reporting is requested, spawn a new thread to * poll ZFS_IOC_SEND_PROGRESS at a regular interval. */ - if (flags->progress) { + { pa.pa_zhp = zhp; pa.pa_fd = outfd; pa.pa_parsable = flags->parsable; pa.pa_estimate = B_FALSE; pa.pa_verbosity = flags->verbosity; + pa.pa_size = size; + pa.pa_astitle = flags->progressastitle; + pa.pa_progress = flags->progress; error = pthread_create(&tid, NULL, send_progress_thread, &pa); @@ -1822,6 +1959,7 @@ zfs_send_resume_impl_cb_impl(libzfs_handle_t *hdl, sendflags_t *flags, zfs_close(zhp); return (error); } + SEND_PROGRESS_THREAD_PARENT_BLOCK(&oldmask); } error = lzc_send_resume_redacted(zhp->zfs_name, fromname, outfd, @@ -1829,8 +1967,10 @@ zfs_send_resume_impl_cb_impl(libzfs_handle_t *hdl, sendflags_t *flags, if (redact_book != NULL) free(redact_book); - if (flags->progress && send_progress_thread_exit(hdl, tid)) + if (send_progress_thread_exit(hdl, tid, &oldmask)) { + zfs_close(zhp); return (-1); + } char errbuf[ERRBUFLEN]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, @@ -1865,7 +2005,7 @@ zfs_send_resume_impl_cb_impl(libzfs_handle_t *hdl, sendflags_t *flags, case ERANGE: case EFAULT: case EROFS: - zfs_error_aux(hdl, "%s", strerror(errno)); + zfs_error_aux(hdl, "%s", zfs_strerror(errno)); return (zfs_error(hdl, EZFS_BADBACKUP, errbuf)); default: @@ -2099,9 +2239,9 @@ send_prelim_records(zfs_handle_t *zhp, const char *from, int fd, fnvlist_add_boolean(hdrnv, "raw"); } - if ((err = gather_nvlist(zhp->zfs_hdl, tofs, + if (gather_nvlist(zhp->zfs_hdl, tofs, from, tosnap, recursive, raw, doall, replicate, skipmissing, - verbose, backup, holds, props, &fss, fsavlp)) != 0) { + verbose, backup, holds, props, &fss, fsavlp) != 0) { return (zfs_error(zhp->zfs_hdl, EZFS_BADBACKUP, errbuf)); } @@ -2151,13 +2291,13 @@ send_prelim_records(zfs_handle_t *zhp, const char *from, int fd, err = dump_record(&drr, packbuf, buflen, &zc, fd); free(packbuf); if (err != 0) { - zfs_error_aux(zhp->zfs_hdl, "%s", strerror(err)); + zfs_error_aux(zhp->zfs_hdl, "%s", zfs_strerror(err)); return (zfs_error(zhp->zfs_hdl, EZFS_BADBACKUP, errbuf)); } err = send_conclusion_record(fd, &zc); if (err != 0) { - zfs_error_aux(zhp->zfs_hdl, "%s", strerror(err)); + zfs_error_aux(zhp->zfs_hdl, "%s", zfs_strerror(err)); return (zfs_error(zhp->zfs_hdl, EZFS_BADBACKUP, errbuf)); } @@ -2265,6 +2405,7 @@ zfs_send_cb_impl(zfs_handle_t *zhp, const char *fromsnap, const char *tosnap, sdd.verbosity = flags->verbosity; sdd.parsable = flags->parsable; sdd.progress = flags->progress; + sdd.progressastitle = flags->progressastitle; sdd.dryrun = flags->dryrun; sdd.large_block = flags->largeblock; sdd.embed_data = flags->embed_data; @@ -2514,6 +2655,7 @@ zfs_send_one_cb_impl(zfs_handle_t *zhp, const char *from, int fd, char *name = zhp->zfs_name; pthread_t ptid; progress_arg_t pa = { 0 }; + uint64_t size = 0; char errbuf[ERRBUFLEN]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, @@ -2596,9 +2738,9 @@ zfs_send_one_cb_impl(zfs_handle_t *zhp, const char *from, int fd, /* * Perform size estimate if verbose was specified. */ - if (flags->verbosity != 0) { + if (flags->verbosity != 0 || flags->progressastitle) { err = estimate_size(zhp, from, fd, flags, 0, 0, 0, redactbook, - errbuf); + errbuf, &size); if (err != 0) return (err); } @@ -2610,26 +2752,31 @@ zfs_send_one_cb_impl(zfs_handle_t *zhp, const char *from, int fd, * If progress reporting is requested, spawn a new thread to poll * ZFS_IOC_SEND_PROGRESS at a regular interval. */ - if (flags->progress) { + sigset_t oldmask; + { pa.pa_zhp = zhp; pa.pa_fd = fd; pa.pa_parsable = flags->parsable; pa.pa_estimate = B_FALSE; pa.pa_verbosity = flags->verbosity; + pa.pa_size = size; + pa.pa_astitle = flags->progressastitle; + pa.pa_progress = flags->progress; err = pthread_create(&ptid, NULL, send_progress_thread, &pa); if (err != 0) { - zfs_error_aux(zhp->zfs_hdl, "%s", strerror(errno)); + zfs_error_aux(zhp->zfs_hdl, "%s", zfs_strerror(errno)); return (zfs_error(zhp->zfs_hdl, EZFS_THREADCREATEFAILED, errbuf)); } + SEND_PROGRESS_THREAD_PARENT_BLOCK(&oldmask); } err = lzc_send_redacted(name, from, fd, lzc_flags_from_sendflags(flags), redactbook); - if (flags->progress && send_progress_thread_exit(hdl, ptid)) + if (send_progress_thread_exit(hdl, ptid, &oldmask)) return (-1); if (err == 0 && (flags->props || flags->holds || flags->backup)) { @@ -2677,13 +2824,8 @@ zfs_send_one_cb_impl(zfs_handle_t *zhp, const char *from, int fd, case EPIPE: case ERANGE: case EROFS: - zfs_error_aux(hdl, "%s", strerror(errno)); + zfs_error_aux(hdl, "%s", zfs_strerror(errno)); return (zfs_error(hdl, EZFS_BADBACKUP, errbuf)); - case ENOTSUP: - zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, - "large blocks detected but large_blocks feature " - "is inactive; raw send unsupported")); - return (zfs_error(hdl, EZFS_NOTSUP, errbuf)); default: return (zfs_standard_error(hdl, errno, errbuf)); @@ -2867,7 +3009,7 @@ recv_rename(libzfs_handle_t *hdl, const char *name, const char *tryname, goto out; if (tryname) { - (void) strcpy(newname, tryname); + (void) strlcpy(newname, tryname, ZFS_MAX_DATASET_NAME_LEN); if (flags->verbose) { (void) printf("attempting rename %s to %s\n", name, newname); @@ -3082,9 +3224,9 @@ guid_to_name_cb(zfs_handle_t *zhp, void *arg) return (EEXIST); } - err = zfs_iter_children(zhp, guid_to_name_cb, gtnd); + err = zfs_iter_children_v2(zhp, 0, guid_to_name_cb, gtnd); if (err != EEXIST && gtnd->bookmark_ok) - err = zfs_iter_bookmarks(zhp, guid_to_name_cb, gtnd); + err = zfs_iter_bookmarks_v2(zhp, 0, guid_to_name_cb, gtnd); zfs_close(zhp); return (err); } @@ -3138,9 +3280,11 @@ guid_to_name_redact_snaps(libzfs_handle_t *hdl, const char *parent, continue; int err = guid_to_name_cb(zfs_handle_dup(zhp), >nd); if (err != EEXIST) - err = zfs_iter_children(zhp, guid_to_name_cb, >nd); + err = zfs_iter_children_v2(zhp, 0, guid_to_name_cb, + >nd); if (err != EEXIST && bookmark_ok) - err = zfs_iter_bookmarks(zhp, guid_to_name_cb, >nd); + err = zfs_iter_bookmarks_v2(zhp, 0, guid_to_name_cb, + >nd); zfs_close(zhp); if (err == EEXIST) return (0); @@ -3173,7 +3317,7 @@ created_before(libzfs_handle_t *hdl, avl_tree_t *avl, uint64_t guid1, uint64_t guid2) { nvlist_t *nvfs; - char *fsname = NULL, *snapname = NULL; + const char *fsname = NULL, *snapname = NULL; char buf[ZFS_MAX_DATASET_NAME_LEN]; int rv; zfs_handle_t *guid1hdl, *guid2hdl; @@ -3239,7 +3383,7 @@ recv_fix_encryption_hierarchy(libzfs_handle_t *hdl, const char *top_zfs, nvpair_t *snapel = NULL; boolean_t is_encroot, is_clone, stream_encroot; char *cp; - char *stream_keylocation = NULL; + const char *stream_keylocation = NULL; char keylocation[MAXNAMELEN]; char fsname[ZFS_MAX_DATASET_NAME_LEN]; @@ -3359,12 +3503,12 @@ recv_incremental_replication(libzfs_handle_t *hdl, const char *tofs, nvlist_t *local_nv, *deleted = NULL; avl_tree_t *local_avl; nvpair_t *fselem, *nextfselem; - char *fromsnap; + const char *fromsnap; char newname[ZFS_MAX_DATASET_NAME_LEN]; char guidname[32]; int error; boolean_t needagain, progress, recursive; - char *s1, *s2; + const char *s1, *s2; fromsnap = fnvlist_lookup_string(stream_nv, "fromsnap"); @@ -3396,7 +3540,7 @@ again: uint64_t originguid = 0; uint64_t stream_originguid = 0; uint64_t parent_fromsnap_guid, stream_parent_fromsnap_guid; - char *fsname, *stream_fsname; + const char *fsname, *stream_fsname; nextfselem = nvlist_next_nvpair(local_nv, fselem); @@ -3431,7 +3575,7 @@ again: case 1: { /* promote it! */ nvlist_t *origin_nvfs; - char *origin_fsname; + const char *origin_fsname; origin_nvfs = fsavl_find(local_avl, originguid, NULL); @@ -3462,7 +3606,7 @@ again: for (snapelem = nvlist_next_nvpair(snaps, NULL); snapelem; snapelem = nextsnapelem) { uint64_t thisguid; - char *stream_snapname; + const char *stream_snapname; nvlist_t *found, *props; nextsnapelem = nvlist_next_nvpair(snaps, snapelem); @@ -3608,7 +3752,7 @@ again: * new fs. */ if (parent != NULL) { - char *pname; + const char *pname; pname = fnvlist_lookup_string(parent, "name"); (void) snprintf(tryname, sizeof (tryname), @@ -3659,8 +3803,8 @@ zfs_receive_package(libzfs_handle_t *hdl, int fd, const char *destname, { nvlist_t *stream_nv = NULL; avl_tree_t *stream_avl = NULL; - char *fromsnap = NULL; - char *sendsnap = NULL; + const char *fromsnap = NULL; + const char *sendsnap = NULL; char *cp; char tofs[ZFS_MAX_DATASET_NAME_LEN]; char sendfs[ZFS_MAX_DATASET_NAME_LEN]; @@ -4106,6 +4250,15 @@ zfs_setup_cmdline_props(libzfs_handle_t *hdl, zfs_type_t type, goto error; } + /* + * For plain replicated send, we can ignore encryption + * properties other than first stream + */ + if ((zfs_prop_encryption_key_param(prop) || prop == + ZFS_PROP_ENCRYPTION) && !newfs && recursive && !raw) { + continue; + } + /* incremental streams can only exclude encryption properties */ if ((zfs_prop_encryption_key_param(prop) || prop == ZFS_PROP_ENCRYPTION) && !newfs && @@ -4140,7 +4293,7 @@ zfs_setup_cmdline_props(libzfs_handle_t *hdl, zfs_type_t type, */ if (nvlist_exists(origprops, newname)) { nvlist_t *attrs; - char *source = NULL; + const char *source = NULL; attrs = fnvlist_lookup_nvlist(origprops, newname); @@ -4207,7 +4360,8 @@ zfs_setup_cmdline_props(libzfs_handle_t *hdl, zfs_type_t type, if (cp != NULL) *cp = '\0'; - if (!raw && zfs_crypto_create(hdl, namebuf, voprops, NULL, + if (!raw && !(!newfs && recursive) && + zfs_crypto_create(hdl, namebuf, voprops, NULL, B_FALSE, wkeydata_out, wkeylen_out) != 0) { fnvlist_free(voprops); ret = zfs_error(hdl, EZFS_CRYPTOFAILED, errbuf); @@ -4263,7 +4417,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, zprop_errflags_t prop_errflags; nvlist_t *prop_errors = NULL; boolean_t recursive; - char *snapname = NULL; + const char *snapname = NULL; char destsnap[MAXPATHLEN * 2]; char origin[MAXNAMELEN] = {0}; char name[MAXPATHLEN]; @@ -4294,7 +4448,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, boolean_t holds = flags->holds && !flags->skipholds; if (stream_avl != NULL) { - char *keylocation = NULL; + const char *keylocation = NULL; nvlist_t *lookup = NULL; nvlist_t *fs = fsavl_find(stream_avl, drrb->drr_toguid, &snapname); @@ -4318,7 +4472,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, err = nvlist_lookup_string(rcvprops, zfs_prop_to_name(ZFS_PROP_KEYLOCATION), &keylocation); if (err == 0) { - strcpy(tmp_keylocation, keylocation); + strlcpy(tmp_keylocation, keylocation, MAXNAMELEN); (void) nvlist_remove_all(rcvprops, zfs_prop_to_name(ZFS_PROP_KEYLOCATION)); } @@ -4374,7 +4528,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, * prepend a path separator. */ int len = strlen(drrb->drr_toname); - cp = malloc(len + 2); + cp = umem_alloc(len + 2, UMEM_NOFAIL); cp[0] = '/'; (void) strcpy(&cp[1], drrb->drr_toname); chopprefix = cp; @@ -4427,7 +4581,8 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, */ (void) strlcpy(destsnap, tosnap, sizeof (destsnap)); (void) strlcat(destsnap, chopprefix, sizeof (destsnap)); - free(cp); + if (cp != NULL) + umem_free(cp, strlen(cp) + 1); if (!zfs_name_valid(destsnap, ZFS_TYPE_SNAPSHOT)) { err = zfs_error(hdl, EZFS_INVALIDNAME, errbuf); goto out; @@ -4485,18 +4640,20 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot receive new filesystem stream")); - (void) strcpy(name, destsnap); + (void) strlcpy(name, destsnap, sizeof (name)); cp = strrchr(name, '/'); if (cp) *cp = '\0'; if (cp && !zfs_dataset_exists(hdl, name, ZFS_TYPE_DATASET)) { char suffix[ZFS_MAX_DATASET_NAME_LEN]; - (void) strcpy(suffix, strrchr(destsnap, '/')); + (void) strlcpy(suffix, strrchr(destsnap, '/'), + sizeof (suffix)); if (guid_to_name(hdl, name, parent_snapguid, B_FALSE, destsnap) == 0) { *strchr(destsnap, '@') = '\0'; - (void) strcat(destsnap, suffix); + (void) strlcat(destsnap, suffix, + sizeof (destsnap)); } } } else { @@ -4514,7 +4671,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, "cannot receive incremental stream")); } - (void) strcpy(name, destsnap); + (void) strlcpy(name, destsnap, sizeof (name)); *strchr(name, '@') = '\0'; /* @@ -4526,24 +4683,51 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, strlen(sendfs)) != '\0' && *chopprefix != '@')) && !zfs_dataset_exists(hdl, name, ZFS_TYPE_DATASET)) { char snap[ZFS_MAX_DATASET_NAME_LEN]; - (void) strcpy(snap, strchr(destsnap, '@')); + (void) strlcpy(snap, strchr(destsnap, '@'), + sizeof (snap)); if (guid_to_name(hdl, name, drrb->drr_fromguid, B_FALSE, destsnap) == 0) { *strchr(destsnap, '@') = '\0'; - (void) strcat(destsnap, snap); + (void) strlcat(destsnap, snap, + sizeof (destsnap)); } } } - (void) strcpy(name, destsnap); + (void) strlcpy(name, destsnap, sizeof (name)); *strchr(name, '@') = '\0'; redacted = DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo) & DMU_BACKUP_FEATURE_REDACTED; - if (zfs_dataset_exists(hdl, name, ZFS_TYPE_DATASET)) { + if (flags->heal) { + if (flags->isprefix || flags->istail || flags->force || + flags->canmountoff || flags->resumable || flags->nomount || + flags->skipholds) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "corrective recv can not be used when combined with" + " this flag")); + err = zfs_error(hdl, EZFS_INVALIDNAME, errbuf); + goto out; + } + uint64_t guid = + get_snap_guid(hdl, name, strchr(destsnap, '@') + 1); + if (guid == 0) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "corrective recv must specify an existing snapshot" + " to heal")); + err = zfs_error(hdl, EZFS_INVALIDNAME, errbuf); + goto out; + } else if (guid != drrb->drr_toguid) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "local snapshot doesn't match the snapshot" + " in the provided stream")); + err = zfs_error(hdl, EZFS_WRONG_PARENT, errbuf); + goto out; + } + } else if (zfs_dataset_exists(hdl, name, ZFS_TYPE_DATASET)) { zfs_cmd_t zc = {"\0"}; - zfs_handle_t *zhp; + zfs_handle_t *zhp = NULL; boolean_t encrypted; (void) strcpy(zc.zc_name, name); @@ -4600,6 +4784,33 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, goto out; } + /* + * When receiving full/newfs on existing dataset, then it + * should be done with "-F" flag. Its enforced for initial + * receive in previous checks in this function. + * Similarly, on resuming full/newfs recv on existing dataset, + * it should be done with "-F" flag. + * + * When dataset doesn't exist, then full/newfs recv is done on + * newly created dataset and it's marked INCONSISTENT. But + * When receiving on existing dataset, recv is first done on + * %recv and its marked INCONSISTENT. Existing dataset is not + * marked INCONSISTENT. + * Resume of full/newfs receive with dataset not INCONSISTENT + * indicates that its resuming newfs on existing dataset. So, + * enforce "-F" flag in this case. + */ + if (stream_resumingnewfs && + !zfs_prop_get_int(zhp, ZFS_PROP_INCONSISTENT) && + !flags->force) { + zfs_close(zhp); + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "Resuming recv on existing destination '%s'\n" + "must specify -F to overwrite it"), name); + err = zfs_error(hdl, EZFS_RESUME_EXISTS, errbuf); + goto out; + } + if (stream_wantsnewfs && zhp->zfs_dmustats.dds_origin[0]) { zfs_close(zhp); @@ -4737,8 +4948,9 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, } if (flags->verbose) { - (void) printf("%s %s stream of %s into %s\n", + (void) printf("%s %s%s stream of %s into %s\n", flags->dryrun ? "would receive" : "receiving", + flags->heal ? " corrective" : "", drrb->drr_fromguid ? "incremental" : "full", drrb->drr_toname, destsnap); (void) fflush(stdout); @@ -4808,10 +5020,17 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, goto out; } - err = ioctl_err = lzc_receive_with_cmdprops(destsnap, rcvprops, - oxprops, wkeydata, wkeylen, origin, flags->force, flags->resumable, - raw, infd, drr_noswap, -1, &read_bytes, &errflags, - NULL, &prop_errors); + if (flags->heal) { + err = ioctl_err = lzc_receive_with_heal(destsnap, rcvprops, + oxprops, wkeydata, wkeylen, origin, flags->force, + flags->heal, flags->resumable, raw, infd, drr_noswap, -1, + &read_bytes, &errflags, NULL, &prop_errors); + } else { + err = ioctl_err = lzc_receive_with_cmdprops(destsnap, rcvprops, + oxprops, wkeydata, wkeylen, origin, flags->force, + flags->resumable, raw, infd, drr_noswap, -1, &read_bytes, + &errflags, NULL, &prop_errors); + } ioctl_errno = ioctl_err; prop_errflags = errflags; @@ -4857,7 +5076,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, if (err == 0 && snapprops_nvlist) { zfs_cmd_t zc = {"\0"}; - (void) strcpy(zc.zc_name, destsnap); + (void) strlcpy(zc.zc_name, destsnap, sizeof (zc.zc_name)); zc.zc_cookie = B_TRUE; /* received */ zcmd_write_src_nvlist(hdl, &zc, snapprops_nvlist); (void) zfs_ioctl(hdl, ZFS_IOC_SET_PROP, &zc); @@ -4933,7 +5152,12 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, (void) zfs_error(hdl, EZFS_BADRESTORE, errbuf); break; case EACCES: - if (raw && stream_wantsnewfs) { + if (flags->heal) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "key must be loaded to do a non-raw " + "corrective recv on an encrypted " + "dataset.")); + } else if (raw && stream_wantsnewfs) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "failed to create encryption key")); } else if (raw && !stream_wantsnewfs) { @@ -4960,21 +5184,27 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, *cp = '@'; break; case EINVAL: - if (flags->resumable) { - zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, - "kernel modules must be upgraded to " - "receive this stream.")); - } else if (embedded && !raw) { + if (embedded && !raw) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "incompatible embedded data stream " "feature with encrypted receive.")); + } else if (flags->resumable) { + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "kernel modules must be upgraded to " + "receive this stream.")); } (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); break; case ECKSUM: case ZFS_ERR_STREAM_TRUNCATED: - recv_ecksum_set_aux(hdl, destsnap, flags->resumable, - ioctl_err == ECKSUM); + if (flags->heal) + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "corrective receive was not able to " + "reconstruct the data needed for " + "healing.")); + else + recv_ecksum_set_aux(hdl, destsnap, + flags->resumable, ioctl_err == ECKSUM); (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); break; case ZFS_ERR_STREAM_LARGE_BLOCK_MISMATCH: @@ -4984,10 +5214,22 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); break; case ENOTSUP: - zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, - "pool must be upgraded to receive this stream.")); + if (flags->heal) + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "stream is not compatible with the " + "data in the pool.")); + else + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "pool must be upgraded to receive this " + "stream.")); (void) zfs_error(hdl, EZFS_BADVERSION, errbuf); break; + case ZFS_ERR_CRYPTO_NOTSUP: + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "stream uses crypto parameters not compatible with " + "this pool")); + (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); + break; case EDQUOT: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "destination %s space quota exceeded."), name); @@ -5015,6 +5257,27 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, "be updated.")); (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); break; + case ZFS_ERR_RESUME_EXISTS: + cp = strchr(destsnap, '@'); + if (newfs) { + /* it's the containing fs that exists */ + *cp = '\0'; + } + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "Resuming recv on existing dataset without force")); + (void) zfs_error_fmt(hdl, EZFS_RESUME_EXISTS, + dgettext(TEXT_DOMAIN, "cannot resume recv %s"), + destsnap); + *cp = '@'; + break; + case E2BIG: + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "zfs receive required kernel memory allocation " + "larger than the system can support. Please file " + "an issue at the OpenZFS issue tracker:\n" + "https://github.com/openzfs/zfs/issues/new")); + (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); + break; case EBUSY: if (hastoken) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, @@ -5303,7 +5566,7 @@ zfs_receive(libzfs_handle_t *hdl, const char *tosnap, nvlist_t *props, char *top_zfs = NULL; int err; struct stat sb; - char *originsnap = NULL; + const char *originsnap = NULL; /* * The only way fstat can fail is if we do not have a valid file diff --git a/lib/libzfs/libzfs_status.c b/lib/libzfs/libzfs_status.c index 9f450806d78c..a2259eee91ca 100644 --- a/lib/libzfs/libzfs_status.c +++ b/lib/libzfs/libzfs_status.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -168,7 +168,8 @@ find_vdev_problem(nvlist_t *vdev, int (*func)(vdev_stat_t *, uint_t), * later. */ if (ignore_replacing == B_TRUE) { - char *type = fnvlist_lookup_string(vdev, ZPOOL_CONFIG_TYPE); + const char *type = fnvlist_lookup_string(vdev, + ZPOOL_CONFIG_TYPE); if (strcmp(type, VDEV_TYPE_REPLACING) == 0) return (B_FALSE); } @@ -222,7 +223,6 @@ check_status(nvlist_t *config, boolean_t isimport, { pool_scan_stat_t *ps = NULL; uint_t vsc, psc; - uint64_t nerr; uint64_t suspended; uint64_t hostid = 0; uint64_t errata = 0; @@ -392,6 +392,7 @@ check_status(nvlist_t *config, boolean_t isimport, * Persistent data errors. */ if (!isimport) { + uint64_t nerr; if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_ERRCOUNT, &nerr) == 0 && nerr != 0) return (ZPOOL_STATUS_CORRUPT_DATA); diff --git a/lib/libzfs/libzfs_util.c b/lib/libzfs/libzfs_util.c index 4adaab86ecec..73ae0950ccb6 100644 --- a/lib/libzfs/libzfs_util.c +++ b/lib/libzfs/libzfs_util.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -22,7 +22,7 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2020 Joyent, Inc. All rights reserved. - * Copyright (c) 2011, 2020 by Delphix. All rights reserved. + * Copyright (c) 2011, 2024 by Delphix. All rights reserved. * Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com> * Copyright (c) 2017 Datto Inc. * Copyright (c) 2020 The FreeBSD Foundation @@ -170,6 +170,8 @@ libzfs_error_description(libzfs_handle_t *hdl) return (dgettext(TEXT_DOMAIN, "I/O error")); case EZFS_INTR: return (dgettext(TEXT_DOMAIN, "signal received")); + case EZFS_CKSUM: + return (dgettext(TEXT_DOMAIN, "insufficient replicas")); case EZFS_ISSPARE: return (dgettext(TEXT_DOMAIN, "device is reserved as a hot " "spare")); @@ -241,10 +243,20 @@ libzfs_error_description(libzfs_handle_t *hdl) "into a new one")); case EZFS_SCRUB_PAUSED: return (dgettext(TEXT_DOMAIN, "scrub is paused; " - "use 'zpool scrub' to resume")); + "use 'zpool scrub' to resume scrub")); + case EZFS_SCRUB_PAUSED_TO_CANCEL: + return (dgettext(TEXT_DOMAIN, "scrub is paused; " + "use 'zpool scrub' to resume or 'zpool scrub -s' to " + "cancel scrub")); case EZFS_SCRUBBING: return (dgettext(TEXT_DOMAIN, "currently scrubbing; " - "use 'zpool scrub -s' to cancel current scrub")); + "use 'zpool scrub -s' to cancel scrub")); + case EZFS_ERRORSCRUBBING: + return (dgettext(TEXT_DOMAIN, "currently error scrubbing; " + "use 'zpool scrub -s' to cancel error scrub")); + case EZFS_ERRORSCRUB_PAUSED: + return (dgettext(TEXT_DOMAIN, "error scrub is paused; " + "use 'zpool scrub -e' to resume error scrub")); case EZFS_NO_SCRUB: return (dgettext(TEXT_DOMAIN, "there is no active scrub")); case EZFS_DIFF: @@ -302,6 +314,14 @@ libzfs_error_description(libzfs_handle_t *hdl) case EZFS_NOT_USER_NAMESPACE: return (dgettext(TEXT_DOMAIN, "the provided file " "was not a user namespace file")); + case EZFS_RESUME_EXISTS: + return (dgettext(TEXT_DOMAIN, "Resuming recv on existing " + "dataset without force")); + case EZFS_RAIDZ_EXPAND_IN_PROGRESS: + return (dgettext(TEXT_DOMAIN, "raidz expansion in progress")); + case EZFS_ASHIFT_MISMATCH: + return (dgettext(TEXT_DOMAIN, "adding devices with " + "different physical sector sizes is not allowed")); case EZFS_UNKNOWN: return (dgettext(TEXT_DOMAIN, "unknown error")); default: @@ -396,6 +416,10 @@ zfs_common_error(libzfs_handle_t *hdl, int error, const char *fmt, case EINTR: zfs_verror(hdl, EZFS_INTR, fmt, ap); return (-1); + + case ECKSUM: + zfs_verror(hdl, EZFS_CKSUM, fmt, ap); + return (-1); } return (0); @@ -492,7 +516,7 @@ zfs_standard_error_fmt(libzfs_handle_t *hdl, int error, const char *fmt, ...) zfs_verror(hdl, EZFS_NOT_USER_NAMESPACE, fmt, ap); break; default: - zfs_error_aux(hdl, "%s", strerror(error)); + zfs_error_aux(hdl, "%s", zfs_strerror(error)); zfs_verror(hdl, EZFS_UNKNOWN, fmt, ap); break; } @@ -679,7 +703,7 @@ zpool_standard_error_fmt(libzfs_handle_t *hdl, int error, const char *fmt, ...) case ENOSPC: case EDQUOT: zfs_verror(hdl, EZFS_NOSPC, fmt, ap); - return (-1); + break; case EAGAIN: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, @@ -744,8 +768,14 @@ zpool_standard_error_fmt(libzfs_handle_t *hdl, int error, const char *fmt, ...) case ZFS_ERR_IOC_ARG_BADTYPE: zfs_verror(hdl, EZFS_IOC_NOTSUPPORTED, fmt, ap); break; + case ZFS_ERR_RAIDZ_EXPAND_IN_PROGRESS: + zfs_verror(hdl, EZFS_RAIDZ_EXPAND_IN_PROGRESS, fmt, ap); + break; + case ZFS_ERR_ASHIFT_MISMATCH: + zfs_verror(hdl, EZFS_ASHIFT_MISMATCH, fmt, ap); + break; default: - zfs_error_aux(hdl, "%s", strerror(error)); + zfs_error_aux(hdl, "%s", zfs_strerror(error)); zfs_verror(hdl, EZFS_UNKNOWN, fmt, ap); } @@ -1240,7 +1270,7 @@ zcmd_read_dst_nvlist(libzfs_handle_t *hdl, zfs_cmd_t *zc, nvlist_t **nvlp) static void zprop_print_headers(zprop_get_cbdata_t *cbp, zfs_type_t type) { - zprop_list_t *pl = cbp->cb_proplist; + zprop_list_t *pl; int i; char *title; size_t len; @@ -1586,13 +1616,13 @@ zfs_nicestrtonum(libzfs_handle_t *hdl, const char *value, uint64_t *num) */ int zprop_parse_value(libzfs_handle_t *hdl, nvpair_t *elem, int prop, - zfs_type_t type, nvlist_t *ret, char **svalp, uint64_t *ivalp, + zfs_type_t type, nvlist_t *ret, const char **svalp, uint64_t *ivalp, const char *errbuf) { data_type_t datatype = nvpair_type(elem); zprop_type_t proptype; const char *propname; - char *value; + const char *value; boolean_t isnone = B_FALSE; boolean_t isauto = B_FALSE; int err = 0; @@ -1673,6 +1703,20 @@ zprop_parse_value(libzfs_handle_t *hdl, nvpair_t *elem, int prop, } /* + * Special handling for "checksum_*=none". In this case it's not + * 0 but UINT64_MAX. + */ + if ((type & ZFS_TYPE_VDEV) && isnone && + (prop == VDEV_PROP_CHECKSUM_N || + prop == VDEV_PROP_CHECKSUM_T || + prop == VDEV_PROP_IO_N || + prop == VDEV_PROP_IO_T || + prop == VDEV_PROP_SLOW_IO_N || + prop == VDEV_PROP_SLOW_IO_T)) { + *ivalp = UINT64_MAX; + } + + /* * Special handling for setting 'refreservation' to 'auto'. Use * UINT64_MAX to tell the caller to use zfs_fix_auto_resv(). * 'auto' is only allowed on volumes. @@ -1753,6 +1797,7 @@ addlist(libzfs_handle_t *hdl, const char *propname, zprop_list_t **listp, * a user-defined property. */ if (prop == ZPROP_USERPROP && ((type == ZFS_TYPE_POOL && + !zfs_prop_user(propname) && !zpool_prop_feature(propname) && !zpool_prop_unsupported(propname)) || ((type == ZFS_TYPE_DATASET) && !zfs_prop_user(propname) && @@ -1931,7 +1976,7 @@ zfs_version_print(void) char *kver = zfs_version_kernel(); if (kver == NULL) { fprintf(stderr, "zfs_version_kernel() failed: %s\n", - strerror(errno)); + zfs_strerror(errno)); return (-1); } @@ -1944,7 +1989,7 @@ zfs_version_print(void) * Return 1 if the user requested ANSI color output, and our terminal supports * it. Return 0 for no color. */ -static int +int use_color(void) { static int use_color = -1; @@ -1990,10 +2035,11 @@ use_color(void) } /* - * color_start() and color_end() are used for when you want to colorize a block - * of text. For example: + * The functions color_start() and color_end() are used for when you want + * to colorize a block of text. * - * color_start(ANSI_RED_FG) + * For example: + * color_start(ANSI_RED) * printf("hello"); * printf("world"); * color_end(); @@ -2001,18 +2047,25 @@ use_color(void) void color_start(const char *color) { - if (use_color()) + if (color && use_color()) { fputs(color, stdout); + fflush(stdout); + } } void color_end(void) { - if (use_color()) + if (use_color()) { fputs(ANSI_RESET, stdout); + fflush(stdout); + } + } -/* printf() with a color. If color is NULL, then do a normal printf. */ +/* + * printf() with a color. If color is NULL, then do a normal printf. + */ int printf_color(const char *color, const char *format, ...) { @@ -2031,3 +2084,196 @@ printf_color(const char *color, const char *format, ...) return (rc); } + +/* PATH + 5 env vars + a NULL entry = 7 */ +#define ZPOOL_VDEV_SCRIPT_ENV_COUNT 7 + +/* + * There's a few places where ZFS will call external scripts (like the script + * in zpool.d/ and `zfs_prepare_disk`). These scripts are called with a + * reduced $PATH, and some vdev specific environment vars set. This function + * will allocate an populate the environment variable array that is passed to + * these scripts. The user must free the arrays with zpool_vdev_free_env() when + * they are done. + * + * The following env vars will be set (but value could be blank): + * + * POOL_NAME + * VDEV_PATH + * VDEV_UPATH + * VDEV_ENC_SYSFS_PATH + * + * In addition, you can set an optional environment variable named 'opt_key' + * to 'opt_val' if you want. + * + * Returns allocated env[] array on success, NULL otherwise. + */ +char ** +zpool_vdev_script_alloc_env(const char *pool_name, + const char *vdev_path, const char *vdev_upath, + const char *vdev_enc_sysfs_path, const char *opt_key, const char *opt_val) +{ + char **env = NULL; + int rc; + + env = calloc(ZPOOL_VDEV_SCRIPT_ENV_COUNT, sizeof (*env)); + if (!env) + return (NULL); + + env[0] = strdup("PATH=/bin:/sbin:/usr/bin:/usr/sbin"); + if (!env[0]) + goto error; + + /* Setup our custom environment variables */ + rc = asprintf(&env[1], "POOL_NAME=%s", pool_name ? pool_name : ""); + if (rc == -1) { + env[1] = NULL; + goto error; + } + + rc = asprintf(&env[2], "VDEV_PATH=%s", vdev_path ? vdev_path : ""); + if (rc == -1) { + env[2] = NULL; + goto error; + } + + rc = asprintf(&env[3], "VDEV_UPATH=%s", vdev_upath ? vdev_upath : ""); + if (rc == -1) { + env[3] = NULL; + goto error; + } + + rc = asprintf(&env[4], "VDEV_ENC_SYSFS_PATH=%s", + vdev_enc_sysfs_path ? vdev_enc_sysfs_path : ""); + if (rc == -1) { + env[4] = NULL; + goto error; + } + + if (opt_key != NULL) { + rc = asprintf(&env[5], "%s=%s", opt_key, + opt_val ? opt_val : ""); + if (rc == -1) { + env[5] = NULL; + goto error; + } + } + + return (env); + +error: + for (int i = 0; i < ZPOOL_VDEV_SCRIPT_ENV_COUNT; i++) + free(env[i]); + + free(env); + + return (NULL); +} + +/* + * Free the env[] array that was allocated by zpool_vdev_script_alloc_env(). + */ +void +zpool_vdev_script_free_env(char **env) +{ + for (int i = 0; i < ZPOOL_VDEV_SCRIPT_ENV_COUNT; i++) + free(env[i]); + + free(env); +} + +/* + * Prepare a disk by (optionally) running a program before labeling the disk. + * This can be useful for installing disk firmware or doing some pre-flight + * checks on the disk before it becomes part of the pool. The program run is + * located at ZFSEXECDIR/zfs_prepare_disk + * (E.x: /usr/local/libexec/zfs/zfs_prepare_disk). + * + * Return 0 on success, non-zero on failure. + */ +int +zpool_prepare_disk(zpool_handle_t *zhp, nvlist_t *vdev_nv, + const char *prepare_str, char **lines[], int *lines_cnt) +{ + const char *script_path = ZFSEXECDIR "/zfs_prepare_disk"; + const char *pool_name; + int rc = 0; + + /* Path to script and a NULL entry */ + char *argv[2] = {(char *)script_path}; + char **env = NULL; + const char *path = NULL, *enc_sysfs_path = NULL; + char *upath; + *lines_cnt = 0; + + if (access(script_path, X_OK) != 0) { + /* No script, nothing to do */ + return (0); + } + + (void) nvlist_lookup_string(vdev_nv, ZPOOL_CONFIG_PATH, &path); + (void) nvlist_lookup_string(vdev_nv, ZPOOL_CONFIG_VDEV_ENC_SYSFS_PATH, + &enc_sysfs_path); + + upath = zfs_get_underlying_path(path); + pool_name = zhp ? zpool_get_name(zhp) : NULL; + + env = zpool_vdev_script_alloc_env(pool_name, path, upath, + enc_sysfs_path, "VDEV_PREPARE", prepare_str); + + free(upath); + + if (env == NULL) { + return (ENOMEM); + } + + rc = libzfs_run_process_get_stdout(script_path, argv, env, lines, + lines_cnt); + + zpool_vdev_script_free_env(env); + + return (rc); +} + +/* + * Optionally run a script and then label a disk. The script can be used to + * prepare a disk for inclusion into the pool. For example, it might update + * the disk's firmware or check its health. + * + * The 'name' provided is the short name, stripped of any leading + * /dev path, and is passed to zpool_label_disk. vdev_nv is the nvlist for + * the vdev. prepare_str is a string that gets passed as the VDEV_PREPARE + * env variable to the script. + * + * The following env vars are passed to the script: + * + * POOL_NAME: The pool name (blank during zpool create) + * VDEV_PREPARE: Reason why the disk is being prepared for inclusion: + * "create", "add", "replace", or "autoreplace" + * VDEV_PATH: Path to the disk + * VDEV_UPATH: One of the 'underlying paths' to the disk. This is + * useful for DM devices. + * VDEV_ENC_SYSFS_PATH: Path to the disk's enclosure sysfs path, if available. + * + * Note, some of these values can be blank. + * + * Return 0 on success, non-zero otherwise. + */ +int +zpool_prepare_and_label_disk(libzfs_handle_t *hdl, zpool_handle_t *zhp, + const char *name, nvlist_t *vdev_nv, const char *prepare_str, + char **lines[], int *lines_cnt) +{ + int rc; + char vdev_path[MAXPATHLEN]; + (void) snprintf(vdev_path, sizeof (vdev_path), "%s/%s", DISK_ROOT, + name); + + /* zhp will be NULL when creating a pool */ + rc = zpool_prepare_disk(zhp, vdev_nv, prepare_str, lines, lines_cnt); + if (rc != 0) + return (rc); + + rc = zpool_label_disk(hdl, zhp, name); + return (rc); +} diff --git a/lib/libzfs/os/freebsd/libzfs_compat.c b/lib/libzfs/os/freebsd/libzfs_compat.c index b08b7e2c439b..2abf7755b518 100644 --- a/lib/libzfs/os/freebsd/libzfs_compat.c +++ b/lib/libzfs/os/freebsd/libzfs_compat.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -38,7 +38,8 @@ #define ZFS_KMOD "openzfs" #endif - +#ifndef HAVE_EXECVPE +/* FreeBSD prior to 15 lacks execvpe */ static int execvPe(const char *name, const char *path, char * const *argv, char * const *envp) @@ -192,6 +193,7 @@ execvpe(const char *name, char * const argv[], char * const envp[]) return (execvPe(name, path, argv, envp)); } +#endif /* !HAVE_EXECVPE */ static __thread char errbuf[ERRBUFLEN]; @@ -204,11 +206,13 @@ libzfs_error_init(int error) if (modfind("zfs") < 0) { size_t len = snprintf(msg, msglen, dgettext(TEXT_DOMAIN, "Failed to load %s module: "), ZFS_KMOD); + if (len >= msglen) + len = msglen - 1; msg += len; msglen -= len; } - (void) snprintf(msg, msglen, "%s", strerror(error)); + (void) snprintf(msg, msglen, "%s", zfs_strerror(error)); return (errbuf); } diff --git a/lib/libzfs/os/freebsd/libzfs_zmount.c b/lib/libzfs/os/freebsd/libzfs_zmount.c index 6a26cae1e090..3c50daf471b7 100644 --- a/lib/libzfs/os/freebsd/libzfs_zmount.c +++ b/lib/libzfs/os/freebsd/libzfs_zmount.c @@ -28,9 +28,6 @@ * This file implements Solaris compatible zmount() function. */ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/param.h> #include <sys/mount.h> #include <sys/uio.h> @@ -73,33 +70,30 @@ build_iovec(struct iovec **iov, int *iovlen, const char *name, void *val, *iovlen = ++i; } -static int -do_mount_(const char *spec, const char *dir, int mflag, - char *dataptr, int datalen, const char *optptr, int optlen) +int +do_mount(zfs_handle_t *zhp, const char *mntpt, const char *opts, int flags) { struct iovec *iov; char *optstr, *p, *tofree; int iovlen, rv; + const char *spec = zfs_get_name(zhp); assert(spec != NULL); - assert(dir != NULL); - assert(dataptr == NULL), (void) dataptr; - assert(datalen == 0), (void) datalen; - assert(optptr != NULL); - assert(optlen > 0), (void) optlen; + assert(mntpt != NULL); + assert(opts != NULL); - tofree = optstr = strdup(optptr); + tofree = optstr = strdup(opts); assert(optstr != NULL); iov = NULL; iovlen = 0; if (strstr(optstr, MNTOPT_REMOUNT) != NULL) build_iovec(&iov, &iovlen, "update", NULL, 0); - if (mflag & MS_RDONLY) + if (flags & MS_RDONLY) build_iovec(&iov, &iovlen, "ro", NULL, 0); build_iovec(&iov, &iovlen, "fstype", __DECONST(char *, MNTTYPE_ZFS), (size_t)-1); - build_iovec(&iov, &iovlen, "fspath", __DECONST(char *, dir), + build_iovec(&iov, &iovlen, "fspath", __DECONST(char *, mntpt), (size_t)-1); build_iovec(&iov, &iovlen, "from", __DECONST(char *, spec), (size_t)-1); while ((p = strsep(&optstr, ",/")) != NULL) @@ -109,14 +103,7 @@ do_mount_(const char *spec, const char *dir, int mflag, if (rv < 0) return (errno); return (rv); -} - -int -do_mount(zfs_handle_t *zhp, const char *mntpt, const char *opts, int flags) -{ - return (do_mount_(zfs_get_name(zhp), mntpt, flags, NULL, 0, - opts, sizeof (mntpt))); } int diff --git a/lib/libzfs/os/linux/libzfs_mount_os.c b/lib/libzfs/os/linux/libzfs_mount_os.c index 299d3a66e67e..f0bf3dcc6c6b 100644 --- a/lib/libzfs/os/linux/libzfs_mount_os.c +++ b/lib/libzfs/os/linux/libzfs_mount_os.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -84,6 +84,13 @@ static const option_map_t option_map[] = { { MNTOPT_ACL, MS_POSIXACL, ZS_COMMENT }, { MNTOPT_NOACL, MS_COMMENT, ZS_COMMENT }, { MNTOPT_POSIXACL, MS_POSIXACL, ZS_COMMENT }, + /* + * Case sensitive options are just listed here to silently + * ignore the error if passed with zfs mount command. + */ + { MNTOPT_CASESENSITIVE, MS_COMMENT, ZS_COMMENT }, + { MNTOPT_CASEINSENSITIVE, MS_COMMENT, ZS_COMMENT }, + { MNTOPT_CASEMIXED, MS_COMMENT, ZS_COMMENT }, #ifdef MS_NOATIME { MNTOPT_NOATIME, MS_NOATIME, ZS_COMMENT }, { MNTOPT_ATIME, MS_COMMENT, ZS_COMMENT }, diff --git a/lib/libzfs/os/linux/libzfs_pool_os.c b/lib/libzfs/os/linux/libzfs_pool_os.c index b135e0146962..86eef3255bc2 100644 --- a/lib/libzfs/os/linux/libzfs_pool_os.c +++ b/lib/libzfs/os/linux/libzfs_pool_os.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -96,7 +96,7 @@ zpool_relabel_disk(libzfs_handle_t *hdl, const char *path, const char *msg) static int read_efi_label(nvlist_t *config, diskaddr_t *sb) { - char *path; + const char *path; int fd; char diskname[MAXPATHLEN]; int err = -1; @@ -273,6 +273,16 @@ zpool_label_disk(libzfs_handle_t *hdl, zpool_handle_t *zhp, const char *name) vtoc->efi_parts[0].p_start = start_block; vtoc->efi_parts[0].p_size = slice_size; + if (vtoc->efi_parts[0].p_size * vtoc->efi_lbasize < SPA_MINDEVSIZE) { + (void) close(fd); + efi_free(vtoc); + + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot " + "label '%s': partition would be less than the minimum " + "device size (64M)"), path); + return (zfs_error(hdl, EZFS_LABELFAILED, errbuf)); + } + /* * Why we use V_USR: V_BACKUP confuses users, and is considered * disposable by some EFI utilities (since EFI doesn't have a backup diff --git a/lib/libzfs/os/linux/libzfs_util_os.c b/lib/libzfs/os/linux/libzfs_util_os.c index 712f8094755c..99faae66833e 100644 --- a/lib/libzfs/os/linux/libzfs_util_os.c +++ b/lib/libzfs/os/linux/libzfs_util_os.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -145,8 +145,8 @@ libzfs_load_module(void) if (pfds[0].revents & POLLIN) { verify(read(ino, ev, evsz) > sizeof (struct inotify_event)); - if (strcmp(ev->name, &ZFS_DEV[sizeof (ZFS_DEVDIR)]) - == 0) { + if (strncmp(ev->name, &ZFS_DEV[sizeof (ZFS_DEVDIR)], + ev->len) == 0) { ret = 0; break; } diff --git a/lib/libzfs_core/libzfs_core.abi b/lib/libzfs_core/libzfs_core.abi index fae98469a04f..5b95c8f779db 100644 --- a/lib/libzfs_core/libzfs_core.abi +++ b/lib/libzfs_core/libzfs_core.abi @@ -1,7 +1,6 @@ <abi-corpus version='2.0' architecture='elf-amd-x86_64' soname='libzfs_core.so.3'> <elf-needed> <dependency name='libnvpair.so.3'/> - <dependency name='libpthread.so.0'/> <dependency name='libc.so.6'/> <dependency name='ld-linux-x86-64.so.2'/> </elf-needed> @@ -181,12 +180,14 @@ <elf-symbol name='lzc_receive_resumable' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzc_receive_with_cmdprops' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzc_receive_with_header' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='lzc_receive_with_heal' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzc_redact' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzc_release' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzc_rename' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzc_reopen' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzc_rollback' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzc_rollback_to' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='lzc_scrub' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzc_send' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzc_send_redacted' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzc_send_resume' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> @@ -208,41 +209,50 @@ <elf-symbol name='membar_enter' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='membar_exit' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='membar_producer' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> + <elf-symbol name='membar_sync' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='mkdirp' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='print_timestamp' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='spl_pagesize' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='strlcat' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='strlcpy' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-function-symbols> - <abi-instr address-size='64' path='assert.c' language='LANG_C99'> - <type-decl name='variadic parameter type' id='2c1145c5'/> - <function-decl name='libspl_set_assert_ok' mangled-name='libspl_set_assert_ok' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_set_assert_ok'> - <parameter type-id='c19b74c3' name='val'/> + <abi-instr address-size='64' path='lib/libspl/assert.c' language='LANG_C99'> + <class-decl name='__va_list_tag' size-in-bits='192' is-struct='yes' visibility='default' id='d5027220'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='gp_offset' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='fp_offset' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='overflow_arg_area' type-id='eaa32e2f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='reg_save_area' type-id='eaa32e2f' visibility='default'/> + </data-member> + </class-decl> + <pointer-type-def type-id='d5027220' size-in-bits='64' id='b7f2d5e6'/> + <function-decl name='abort' visibility='default' binding='global' size-in-bits='64'> <return type-id='48b5725f'/> </function-decl> - <function-decl name='libspl_assertf' mangled-name='libspl_assertf' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_assertf'> - <parameter type-id='80f4b756' name='file'/> - <parameter type-id='80f4b756' name='func'/> - <parameter type-id='95e97e5e' name='line'/> - <parameter type-id='80f4b756' name='format'/> - <parameter is-variadic='yes'/> + <function-decl name='__vfprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter type-id='b7f2d5e6'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='libspl_set_assert_ok' mangled-name='libspl_set_assert_ok' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_set_assert_ok'> + <parameter type-id='c19b74c3' name='val'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='atomic.c' language='LANG_C99'> - <type-decl name='long int' size-in-bits='64' id='bd54fe1a'/> - <type-decl name='short int' size-in-bits='16' id='a2185560'/> - <type-decl name='signed char' size-in-bits='8' id='28577a57'/> - <type-decl name='unsigned short int' size-in-bits='16' id='8efea9e5'/> + <abi-instr address-size='64' path='lib/libspl/atomic.c' language='LANG_C99'> <typedef-decl name='ulong_t' type-id='7359adad' id='ee1f298e'/> <typedef-decl name='int8_t' type-id='2171a512' id='ee31ee44'/> - <typedef-decl name='int16_t' type-id='03896e23' id='23bd8cb5'/> <typedef-decl name='uint16_t' type-id='253c2d2a' id='149c6638'/> <typedef-decl name='__int8_t' type-id='28577a57' id='2171a512'/> - <typedef-decl name='__int16_t' type-id='a2185560' id='03896e23'/> <typedef-decl name='__uint16_t' type-id='8efea9e5' id='253c2d2a'/> - <typedef-decl name='__ssize_t' type-id='bd54fe1a' id='41060289'/> - <typedef-decl name='ssize_t' type-id='41060289' id='79a0948f'/> <qualified-type-def type-id='149c6638' volatile='yes' id='5120c5f7'/> <pointer-type-def type-id='5120c5f7' size-in-bits='64' id='93977ae7'/> <qualified-type-def type-id='8f92235e' volatile='yes' id='430e0681'/> @@ -305,11 +315,6 @@ <parameter type-id='3ff5601b' name='bits'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='atomic_add_long' mangled-name='atomic_add_long' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_add_long'> - <parameter type-id='64698d33' name='target'/> - <parameter type-id='bd54fe1a' name='bits'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='atomic_sub_ptr' mangled-name='atomic_sub_ptr' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_sub_ptr'> <parameter type-id='fe09dd29' name='target'/> <parameter type-id='79a0948f' name='bits'/> @@ -330,11 +335,6 @@ <parameter type-id='3ff5601b' name='bits'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='atomic_sub_long' mangled-name='atomic_sub_long' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_sub_long'> - <parameter type-id='64698d33' name='target'/> - <parameter type-id='bd54fe1a' name='bits'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='atomic_or_8' mangled-name='atomic_or_8' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_or_8'> <parameter type-id='aa323ea4' name='target'/> <parameter type-id='b96825af' name='bits'/> @@ -572,13 +572,18 @@ <return type-id='48b5725f'/> </function-decl> <type-decl name='unsigned long int' size-in-bits='64' id='7359adad'/> + <type-decl name='unsigned short int' size-in-bits='16' id='8efea9e5'/> </abi-instr> - <abi-instr address-size='64' path='getexecname.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/getexecname.c' language='LANG_C99'> <function-decl name='getexecname' mangled-name='getexecname' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getexecname'> <return type-id='80f4b756'/> </function-decl> + <function-decl name='getexecname_impl' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='26a90f95'/> + <return type-id='79a0948f'/> + </function-decl> </abi-instr> - <abi-instr address-size='64' path='list.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/list.c' language='LANG_C99'> <typedef-decl name='list_node_t' type-id='b0b5e45e' id='b21843b2'/> <typedef-decl name='list_t' type-id='e824dae9' id='0899125f'/> <class-decl name='list_node' size-in-bits='128' is-struct='yes' visibility='default' id='b0b5e45e'> @@ -600,7 +605,6 @@ <var-decl name='list_head' type-id='b0b5e45e' visibility='default'/> </data-member> </class-decl> - <typedef-decl name='size_t' type-id='7359adad' id='b59d7dce'/> <pointer-type-def type-id='b0b5e45e' size-in-bits='64' id='b03eadb4'/> <pointer-type-def type-id='b21843b2' size-in-bits='64' id='ccc38265'/> <pointer-type-def type-id='0899125f' size-in-bits='64' id='352ec160'/> @@ -690,33 +694,82 @@ <return type-id='95e97e5e'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='mkdirp.c' language='LANG_C99'> - <typedef-decl name='__mode_t' type-id='f0981eeb' id='e1c52942'/> + <abi-instr address-size='64' path='lib/libspl/mkdirp.c' language='LANG_C99'> <typedef-decl name='mode_t' type-id='e1c52942' id='d50d396c'/> + <typedef-decl name='wchar_t' type-id='95e97e5e' id='928221d2'/> + <qualified-type-def type-id='26a90f95' restrict='yes' id='266fe297'/> + <qualified-type-def type-id='928221d2' const='yes' id='effb3702'/> + <pointer-type-def type-id='effb3702' size-in-bits='64' id='f077d3f8'/> + <qualified-type-def type-id='f077d3f8' restrict='yes' id='598aab80'/> + <pointer-type-def type-id='928221d2' size-in-bits='64' id='323d93c1'/> + <qualified-type-def type-id='323d93c1' restrict='yes' id='f1358bc3'/> + <function-decl name='calloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='strdup' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strlen' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='access' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__mbstowcs_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='f1358bc3'/> + <parameter type-id='9d26089a'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='__wcstombs_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='266fe297'/> + <parameter type-id='598aab80'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='mkdir' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='e1c52942'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='mkdirp' mangled-name='mkdirp' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mkdirp'> <parameter type-id='80f4b756' name='d'/> <parameter type-id='d50d396c' name='mode'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='os/linux/gethostid.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/os/linux/getexecname.c' language='LANG_C99'> + <function-decl name='__readlink_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='266fe297'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='79a0948f'/> + </function-decl> + </abi-instr> + <abi-instr address-size='64' path='lib/libspl/os/linux/gethostid.c' language='LANG_C99'> + <type-decl name='long long unsigned int' size-in-bits='64' id='3a47d82b'/> + <pointer-type-def type-id='26a90f95' size-in-bits='64' id='9b23c9ad'/> + <qualified-type-def type-id='9b23c9ad' restrict='yes' id='8c85230f'/> + <function-decl name='strtoull' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='8c85230f'/> + <parameter type-id='95e97e5e'/> + <return type-id='3a47d82b'/> + </function-decl> <function-decl name='get_system_hostid' mangled-name='get_system_hostid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='get_system_hostid'> <return type-id='7359adad'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='os/linux/getmntany.c' language='LANG_C99'> - <array-type-def dimensions='1' type-id='03085adc' size-in-bits='192' id='083f8d58'> - <subrange length='3' type-id='7359adad' id='56f209d2'/> - </array-type-def> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='8' id='89feb1ec'> - <subrange length='1' type-id='7359adad' id='52f813b4'/> - </array-type-def> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='160' id='664ac0b7'> - <subrange length='20' type-id='7359adad' id='fdca39cf'/> - </array-type-def> - <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> - <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> - <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> + <abi-instr address-size='64' path='lib/libspl/os/linux/getmntany.c' language='LANG_C99'> <class-decl name='mnttab' size-in-bits='256' is-struct='yes' visibility='default' id='1b055409'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='mnt_special' type-id='26a90f95' visibility='default'/> @@ -751,6 +804,26 @@ <var-decl name='mnt_minor' type-id='3502e3ff' visibility='default'/> </data-member> </class-decl> + <class-decl name='mntent' size-in-bits='320' is-struct='yes' visibility='default' id='56fe4a37'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='mnt_fsname' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='mnt_dir' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='mnt_type' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='mnt_opts' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='mnt_freq' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='288'> + <var-decl name='mnt_passno' type-id='95e97e5e' visibility='default'/> + </data-member> + </class-decl> <class-decl name='stat64' size-in-bits='1152' is-struct='yes' visibility='default' id='0bbec9cd'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='st_dev' type-id='35ed8932' visibility='default'/> @@ -798,128 +871,46 @@ <var-decl name='__glibc_reserved' type-id='083f8d58' visibility='default'/> </data-member> </class-decl> - <typedef-decl name='__dev_t' type-id='7359adad' id='35ed8932'/> - <typedef-decl name='__uid_t' type-id='f0981eeb' id='cc5fcceb'/> - <typedef-decl name='__gid_t' type-id='f0981eeb' id='d94ec6d9'/> <typedef-decl name='__ino64_t' type-id='7359adad' id='71288a47'/> - <typedef-decl name='__nlink_t' type-id='7359adad' id='80f0b9df'/> - <typedef-decl name='__off_t' type-id='bd54fe1a' id='79989e9c'/> - <typedef-decl name='__off64_t' type-id='bd54fe1a' id='724e4de6'/> - <typedef-decl name='__time_t' type-id='bd54fe1a' id='65eda9c0'/> - <typedef-decl name='__blksize_t' type-id='bd54fe1a' id='d3f10a7f'/> <typedef-decl name='__blkcnt64_t' type-id='bd54fe1a' id='4e711bf1'/> - <typedef-decl name='__syscall_slong_t' type-id='bd54fe1a' id='03085adc'/> - <typedef-decl name='FILE' type-id='ec1ed955' id='aa12d1ba'/> - <typedef-decl name='_IO_lock_t' type-id='48b5725f' id='bb4788fa'/> - <class-decl name='_IO_FILE' size-in-bits='1728' is-struct='yes' visibility='default' id='ec1ed955'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='_flags' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='_IO_read_ptr' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='_IO_read_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='_IO_read_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='_IO_write_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='_IO_write_ptr' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='_IO_write_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='_IO_buf_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='_IO_buf_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='_IO_save_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='_IO_backup_base' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='_IO_save_end' type-id='26a90f95' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='_markers' type-id='e4c6fa61' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='_chain' type-id='dca988a5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='896'> - <var-decl name='_fileno' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='928'> - <var-decl name='_flags2' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='_old_offset' type-id='79989e9c' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1024'> - <var-decl name='_cur_column' type-id='8efea9e5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1040'> - <var-decl name='_vtable_offset' type-id='28577a57' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1048'> - <var-decl name='_shortbuf' type-id='89feb1ec' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1088'> - <var-decl name='_lock' type-id='cecf4ea7' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1152'> - <var-decl name='_offset' type-id='724e4de6' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1216'> - <var-decl name='_codecvt' type-id='570f8c59' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='_wide_data' type-id='c65a1f29' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='_freeres_list' type-id='dca988a5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='_freeres_buf' type-id='eaa32e2f' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='__pad5' type-id='b59d7dce' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='_mode' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='1568'> - <var-decl name='_unused2' type-id='664ac0b7' visibility='default'/> - </data-member> - </class-decl> - <class-decl name='timespec' size-in-bits='128' is-struct='yes' visibility='default' id='a9c79a1f'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='tv_sec' type-id='65eda9c0' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='tv_nsec' type-id='03085adc' visibility='default'/> - </data-member> - </class-decl> - <pointer-type-def type-id='aa12d1ba' size-in-bits='64' id='822cd80b'/> - <pointer-type-def type-id='ec1ed955' size-in-bits='64' id='dca988a5'/> - <pointer-type-def type-id='a4036571' size-in-bits='64' id='570f8c59'/> - <pointer-type-def type-id='bb4788fa' size-in-bits='64' id='cecf4ea7'/> - <pointer-type-def type-id='010ae0b9' size-in-bits='64' id='e4c6fa61'/> - <pointer-type-def type-id='79bd3751' size-in-bits='64' id='c65a1f29'/> <pointer-type-def type-id='0c544dc0' size-in-bits='64' id='394fc496'/> + <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='1b055409' size-in-bits='64' id='9d424d31'/> <pointer-type-def type-id='0bbec9cd' size-in-bits='64' id='62f7a03d'/> - <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> - <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> - <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> + <qualified-type-def type-id='62f7a03d' restrict='yes' id='f1cadedf'/> + <function-decl name='getmntent_r' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='3cad23cd'/> + <parameter type-id='266fe297'/> + <parameter type-id='95e97e5e'/> + <return type-id='b6b61d2f'/> + </function-decl> + <function-decl name='feof' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strcmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strerror' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='__fprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='stat64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='f1cadedf'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='getmntany' mangled-name='getmntany' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getmntany'> <parameter type-id='822cd80b' name='fp'/> <parameter type-id='9d424d31' name='mgetp'/> @@ -938,18 +929,28 @@ <return type-id='95e97e5e'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='os/linux/zone.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/os/linux/zone.c' language='LANG_C99'> <typedef-decl name='zoneid_t' type-id='3502e3ff' id='4da03624'/> + <function-decl name='strtoul' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='9d26089a'/> + <parameter type-id='8c85230f'/> + <parameter type-id='95e97e5e'/> + <return type-id='7359adad'/> + </function-decl> <function-decl name='getzoneid' mangled-name='getzoneid' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='getzoneid'> <return type-id='4da03624'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='page.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/page.c' language='LANG_C99'> + <function-decl name='sysconf' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='bd54fe1a'/> + </function-decl> <function-decl name='spl_pagesize' mangled-name='spl_pagesize' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='spl_pagesize'> <return type-id='b59d7dce'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='strlcat.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libspl/strlcat.c' language='LANG_C99'> <function-decl name='strlcat' mangled-name='strlcat' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='strlcat'> <parameter type-id='26a90f95' name='dst'/> <parameter type-id='80f4b756' name='src'/> @@ -957,26 +958,123 @@ <return type-id='b59d7dce'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='strlcpy.c' language='LANG_C99'> - <function-decl name='strlcpy' mangled-name='strlcpy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='strlcpy'> - <parameter type-id='26a90f95' name='dst'/> - <parameter type-id='80f4b756' name='src'/> - <parameter type-id='b59d7dce' name='len'/> + <abi-instr address-size='64' path='lib/libspl/timestamp.c' language='LANG_C99'> + <typedef-decl name='nl_item' type-id='95e97e5e' id='03b79a94'/> + <class-decl name='tm' size-in-bits='448' is-struct='yes' visibility='default' id='dddf6ca2'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='tm_sec' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='tm_min' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='tm_hour' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='tm_mday' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='tm_mon' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='160'> + <var-decl name='tm_year' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='tm_wday' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='224'> + <var-decl name='tm_yday' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='tm_isdst' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='tm_gmtoff' type-id='bd54fe1a' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='tm_zone' type-id='80f4b756' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='time_t' type-id='65eda9c0' id='c9d12d66'/> + <qualified-type-def type-id='c9d12d66' const='yes' id='588b3216'/> + <pointer-type-def type-id='588b3216' size-in-bits='64' id='9f201474'/> + <qualified-type-def type-id='9f201474' restrict='yes' id='d6e2847c'/> + <qualified-type-def type-id='dddf6ca2' const='yes' id='e824a34f'/> + <pointer-type-def type-id='e824a34f' size-in-bits='64' id='d6ad37ff'/> + <qualified-type-def type-id='d6ad37ff' restrict='yes' id='f8c6051d'/> + <pointer-type-def type-id='c9d12d66' size-in-bits='64' id='b2eb2c3f'/> + <pointer-type-def type-id='dddf6ca2' size-in-bits='64' id='d915a820'/> + <qualified-type-def type-id='d915a820' restrict='yes' id='f099ad08'/> + <function-decl name='nl_langinfo' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='03b79a94'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='time' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b2eb2c3f'/> + <return type-id='c9d12d66'/> + </function-decl> + <function-decl name='strftime' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='266fe297'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='9d26089a'/> + <parameter type-id='f8c6051d'/> <return type-id='b59d7dce'/> </function-decl> - </abi-instr> - <abi-instr address-size='64' path='timestamp.c' language='LANG_C99'> + <function-decl name='localtime_r' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='d6e2847c'/> + <parameter type-id='f099ad08'/> + <return type-id='d915a820'/> + </function-decl> + <function-decl name='__printf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='print_timestamp' mangled-name='print_timestamp' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='print_timestamp'> <parameter type-id='3502e3ff' name='timestamp_fmt'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='libzfs_core.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libzfs_core/libzfs_core.c' language='LANG_C99'> + <array-type-def dimensions='1' type-id='03085adc' size-in-bits='192' id='083f8d58'> + <subrange length='3' type-id='7359adad' id='56f209d2'/> + </array-type-def> <type-decl name='char' size-in-bits='8' id='a84c031d'/> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='8' id='89feb1ec'> + <subrange length='1' type-id='7359adad' id='52f813b4'/> + </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='160' id='664ac0b7'> + <subrange length='20' type-id='7359adad' id='fdca39cf'/> + </array-type-def> <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='2048' id='d1617432'> <subrange length='256' type-id='7359adad' id='36e5b9fa'/> </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='32768' id='d16c6df4'> + <subrange length='4096' type-id='7359adad' id='bc1b5ddc'/> + </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='320' id='36c46961'> + <subrange length='40' type-id='7359adad' id='8f80b239'/> + </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='448' id='6093ff7c'> + <subrange length='56' type-id='7359adad' id='f8137894'/> + </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='65536' id='163f6aa5'> + <subrange length='8192' type-id='7359adad' id='c88f397d'/> + </array-type-def> + <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='infinite' id='e84913bd'> + <subrange length='infinite' type-id='7359adad' id='031f2035'/> + </array-type-def> + <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> + <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> + <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> <type-decl name='int' size-in-bits='32' id='95e97e5e'/> + <type-decl name='long int' size-in-bits='64' id='bd54fe1a'/> + <type-decl name='short int' size-in-bits='16' id='a2185560'/> + <type-decl name='signed char' size-in-bits='8' id='28577a57'/> + <array-type-def dimensions='1' type-id='9c313c2d' size-in-bits='128' id='c1c22e6c'> + <subrange length='2' type-id='7359adad' id='52efc4ef'/> + </array-type-def> <array-type-def dimensions='1' type-id='9c313c2d' size-in-bits='2176' id='8c2bcad1'> <subrange length='34' type-id='7359adad' id='6a6a7e00'/> </array-type-def> @@ -1005,6 +1103,8 @@ <type-decl name='unsigned char' size-in-bits='8' id='002ac4a6'/> <type-decl name='unsigned int' size-in-bits='32' id='f0981eeb'/> <type-decl name='unsigned long int' size-in-bits='64' id='7359adad'/> + <type-decl name='unsigned short int' size-in-bits='16' id='8efea9e5'/> + <type-decl name='variadic parameter type' id='2c1145c5'/> <type-decl name='void' id='48b5725f'/> <enum-decl name='lzc_dataset_type' id='bc9887f1'> <underlying-type type-id='9cac1fee'/> @@ -1107,6 +1207,33 @@ <enumerator name='DMU_OTN_ZAP_ENC_METADATA' value='228'/> </enum-decl> <typedef-decl name='dmu_object_type_t' type-id='04b3b0b9' id='5c9d8906'/> + <class-decl name='dmu_objset_stats' size-in-bits='2304' is-struct='yes' visibility='default' id='098f0221'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='dds_num_clones' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='dds_creation_txg' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='dds_guid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='dds_type' type-id='230f1e16' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='224'> + <var-decl name='dds_is_snapshot' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='232'> + <var-decl name='dds_inconsistent' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='240'> + <var-decl name='dds_redacted' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='248'> + <var-decl name='dds_origin' type-id='d1617432' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='dmu_objset_stats_t' type-id='098f0221' id='b2c14f17'/> <enum-decl name='dmu_objset_type' id='6b1b19f9'> <underlying-type type-id='9cac1fee'/> <enumerator name='DMU_OST_NONE' value='0'/> @@ -1123,7 +1250,8 @@ <enumerator name='POOL_INITIALIZE_START' value='0'/> <enumerator name='POOL_INITIALIZE_CANCEL' value='1'/> <enumerator name='POOL_INITIALIZE_SUSPEND' value='2'/> - <enumerator name='POOL_INITIALIZE_FUNCS' value='3'/> + <enumerator name='POOL_INITIALIZE_UNINIT' value='3'/> + <enumerator name='POOL_INITIALIZE_FUNCS' value='4'/> </enum-decl> <typedef-decl name='pool_initialize_func_t' type-id='5c246ad4' id='7063e1ab'/> <enum-decl name='pool_trim_func' id='54ed608a'> @@ -1134,6 +1262,112 @@ <enumerator name='POOL_TRIM_FUNCS' value='3'/> </enum-decl> <typedef-decl name='pool_trim_func_t' type-id='54ed608a' id='b1146b8d'/> + <enum-decl name='zfs_ioc' id='12033f13'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='ZFS_IOC_FIRST' value='23040'/> + <enumerator name='ZFS_IOC' value='23040'/> + <enumerator name='ZFS_IOC_POOL_CREATE' value='23040'/> + <enumerator name='ZFS_IOC_POOL_DESTROY' value='23041'/> + <enumerator name='ZFS_IOC_POOL_IMPORT' value='23042'/> + <enumerator name='ZFS_IOC_POOL_EXPORT' value='23043'/> + <enumerator name='ZFS_IOC_POOL_CONFIGS' value='23044'/> + <enumerator name='ZFS_IOC_POOL_STATS' value='23045'/> + <enumerator name='ZFS_IOC_POOL_TRYIMPORT' value='23046'/> + <enumerator name='ZFS_IOC_POOL_SCAN' value='23047'/> + <enumerator name='ZFS_IOC_POOL_FREEZE' value='23048'/> + <enumerator name='ZFS_IOC_POOL_UPGRADE' value='23049'/> + <enumerator name='ZFS_IOC_POOL_GET_HISTORY' value='23050'/> + <enumerator name='ZFS_IOC_VDEV_ADD' value='23051'/> + <enumerator name='ZFS_IOC_VDEV_REMOVE' value='23052'/> + <enumerator name='ZFS_IOC_VDEV_SET_STATE' value='23053'/> + <enumerator name='ZFS_IOC_VDEV_ATTACH' value='23054'/> + <enumerator name='ZFS_IOC_VDEV_DETACH' value='23055'/> + <enumerator name='ZFS_IOC_VDEV_SETPATH' value='23056'/> + <enumerator name='ZFS_IOC_VDEV_SETFRU' value='23057'/> + <enumerator name='ZFS_IOC_OBJSET_STATS' value='23058'/> + <enumerator name='ZFS_IOC_OBJSET_ZPLPROPS' value='23059'/> + <enumerator name='ZFS_IOC_DATASET_LIST_NEXT' value='23060'/> + <enumerator name='ZFS_IOC_SNAPSHOT_LIST_NEXT' value='23061'/> + <enumerator name='ZFS_IOC_SET_PROP' value='23062'/> + <enumerator name='ZFS_IOC_CREATE' value='23063'/> + <enumerator name='ZFS_IOC_DESTROY' value='23064'/> + <enumerator name='ZFS_IOC_ROLLBACK' value='23065'/> + <enumerator name='ZFS_IOC_RENAME' value='23066'/> + <enumerator name='ZFS_IOC_RECV' value='23067'/> + <enumerator name='ZFS_IOC_SEND' value='23068'/> + <enumerator name='ZFS_IOC_INJECT_FAULT' value='23069'/> + <enumerator name='ZFS_IOC_CLEAR_FAULT' value='23070'/> + <enumerator name='ZFS_IOC_INJECT_LIST_NEXT' value='23071'/> + <enumerator name='ZFS_IOC_ERROR_LOG' value='23072'/> + <enumerator name='ZFS_IOC_CLEAR' value='23073'/> + <enumerator name='ZFS_IOC_PROMOTE' value='23074'/> + <enumerator name='ZFS_IOC_SNAPSHOT' value='23075'/> + <enumerator name='ZFS_IOC_DSOBJ_TO_DSNAME' value='23076'/> + <enumerator name='ZFS_IOC_OBJ_TO_PATH' value='23077'/> + <enumerator name='ZFS_IOC_POOL_SET_PROPS' value='23078'/> + <enumerator name='ZFS_IOC_POOL_GET_PROPS' value='23079'/> + <enumerator name='ZFS_IOC_SET_FSACL' value='23080'/> + <enumerator name='ZFS_IOC_GET_FSACL' value='23081'/> + <enumerator name='ZFS_IOC_SHARE' value='23082'/> + <enumerator name='ZFS_IOC_INHERIT_PROP' value='23083'/> + <enumerator name='ZFS_IOC_SMB_ACL' value='23084'/> + <enumerator name='ZFS_IOC_USERSPACE_ONE' value='23085'/> + <enumerator name='ZFS_IOC_USERSPACE_MANY' value='23086'/> + <enumerator name='ZFS_IOC_USERSPACE_UPGRADE' value='23087'/> + <enumerator name='ZFS_IOC_HOLD' value='23088'/> + <enumerator name='ZFS_IOC_RELEASE' value='23089'/> + <enumerator name='ZFS_IOC_GET_HOLDS' value='23090'/> + <enumerator name='ZFS_IOC_OBJSET_RECVD_PROPS' value='23091'/> + <enumerator name='ZFS_IOC_VDEV_SPLIT' value='23092'/> + <enumerator name='ZFS_IOC_NEXT_OBJ' value='23093'/> + <enumerator name='ZFS_IOC_DIFF' value='23094'/> + <enumerator name='ZFS_IOC_TMP_SNAPSHOT' value='23095'/> + <enumerator name='ZFS_IOC_OBJ_TO_STATS' value='23096'/> + <enumerator name='ZFS_IOC_SPACE_WRITTEN' value='23097'/> + <enumerator name='ZFS_IOC_SPACE_SNAPS' value='23098'/> + <enumerator name='ZFS_IOC_DESTROY_SNAPS' value='23099'/> + <enumerator name='ZFS_IOC_POOL_REGUID' value='23100'/> + <enumerator name='ZFS_IOC_POOL_REOPEN' value='23101'/> + <enumerator name='ZFS_IOC_SEND_PROGRESS' value='23102'/> + <enumerator name='ZFS_IOC_LOG_HISTORY' value='23103'/> + <enumerator name='ZFS_IOC_SEND_NEW' value='23104'/> + <enumerator name='ZFS_IOC_SEND_SPACE' value='23105'/> + <enumerator name='ZFS_IOC_CLONE' value='23106'/> + <enumerator name='ZFS_IOC_BOOKMARK' value='23107'/> + <enumerator name='ZFS_IOC_GET_BOOKMARKS' value='23108'/> + <enumerator name='ZFS_IOC_DESTROY_BOOKMARKS' value='23109'/> + <enumerator name='ZFS_IOC_RECV_NEW' value='23110'/> + <enumerator name='ZFS_IOC_POOL_SYNC' value='23111'/> + <enumerator name='ZFS_IOC_CHANNEL_PROGRAM' value='23112'/> + <enumerator name='ZFS_IOC_LOAD_KEY' value='23113'/> + <enumerator name='ZFS_IOC_UNLOAD_KEY' value='23114'/> + <enumerator name='ZFS_IOC_CHANGE_KEY' value='23115'/> + <enumerator name='ZFS_IOC_REMAP' value='23116'/> + <enumerator name='ZFS_IOC_POOL_CHECKPOINT' value='23117'/> + <enumerator name='ZFS_IOC_POOL_DISCARD_CHECKPOINT' value='23118'/> + <enumerator name='ZFS_IOC_POOL_INITIALIZE' value='23119'/> + <enumerator name='ZFS_IOC_POOL_TRIM' value='23120'/> + <enumerator name='ZFS_IOC_REDACT' value='23121'/> + <enumerator name='ZFS_IOC_GET_BOOKMARK_PROPS' value='23122'/> + <enumerator name='ZFS_IOC_WAIT' value='23123'/> + <enumerator name='ZFS_IOC_WAIT_FS' value='23124'/> + <enumerator name='ZFS_IOC_VDEV_GET_PROPS' value='23125'/> + <enumerator name='ZFS_IOC_VDEV_SET_PROPS' value='23126'/> + <enumerator name='ZFS_IOC_POOL_SCRUB' value='23127'/> + <enumerator name='ZFS_IOC_PLATFORM' value='23168'/> + <enumerator name='ZFS_IOC_EVENTS_NEXT' value='23169'/> + <enumerator name='ZFS_IOC_EVENTS_CLEAR' value='23170'/> + <enumerator name='ZFS_IOC_EVENTS_SEEK' value='23171'/> + <enumerator name='ZFS_IOC_NEXTBOOT' value='23172'/> + <enumerator name='ZFS_IOC_JAIL' value='23173'/> + <enumerator name='ZFS_IOC_USERNS_ATTACH' value='23173'/> + <enumerator name='ZFS_IOC_UNJAIL' value='23174'/> + <enumerator name='ZFS_IOC_USERNS_DETACH' value='23174'/> + <enumerator name='ZFS_IOC_SET_BOOTENV' value='23175'/> + <enumerator name='ZFS_IOC_GET_BOOTENV' value='23176'/> + <enumerator name='ZFS_IOC_LAST' value='23177'/> + </enum-decl> + <typedef-decl name='zfs_ioc_t' type-id='12033f13' id='5b35941c'/> <enum-decl name='zpool_wait_activity_t' naming-typedef-id='73446457' id='849338e3'> <underlying-type type-id='9cac1fee'/> <enumerator name='ZPOOL_WAIT_CKPT_DISCARD' value='0'/> @@ -1144,7 +1378,8 @@ <enumerator name='ZPOOL_WAIT_RESILVER' value='5'/> <enumerator name='ZPOOL_WAIT_SCRUB' value='6'/> <enumerator name='ZPOOL_WAIT_TRIM' value='7'/> - <enumerator name='ZPOOL_WAIT_NUM_ACTIVITIES' value='8'/> + <enumerator name='ZPOOL_WAIT_RAIDZ_EXPAND' value='8'/> + <enumerator name='ZPOOL_WAIT_NUM_ACTIVITIES' value='9'/> </enum-decl> <typedef-decl name='zpool_wait_activity_t' type-id='849338e3' id='73446457'/> <enum-decl name='zfs_wait_activity_t' naming-typedef-id='3024501a' id='527d5dc6'> @@ -1153,6 +1388,60 @@ <enumerator name='ZFS_WAIT_NUM_ACTIVITIES' value='1'/> </enum-decl> <typedef-decl name='zfs_wait_activity_t' type-id='527d5dc6' id='3024501a'/> + <enum-decl name='data_type_t' naming-typedef-id='8d0687d2' id='aeeae136'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='DATA_TYPE_DONTCARE' value='-1'/> + <enumerator name='DATA_TYPE_UNKNOWN' value='0'/> + <enumerator name='DATA_TYPE_BOOLEAN' value='1'/> + <enumerator name='DATA_TYPE_BYTE' value='2'/> + <enumerator name='DATA_TYPE_INT16' value='3'/> + <enumerator name='DATA_TYPE_UINT16' value='4'/> + <enumerator name='DATA_TYPE_INT32' value='5'/> + <enumerator name='DATA_TYPE_UINT32' value='6'/> + <enumerator name='DATA_TYPE_INT64' value='7'/> + <enumerator name='DATA_TYPE_UINT64' value='8'/> + <enumerator name='DATA_TYPE_STRING' value='9'/> + <enumerator name='DATA_TYPE_BYTE_ARRAY' value='10'/> + <enumerator name='DATA_TYPE_INT16_ARRAY' value='11'/> + <enumerator name='DATA_TYPE_UINT16_ARRAY' value='12'/> + <enumerator name='DATA_TYPE_INT32_ARRAY' value='13'/> + <enumerator name='DATA_TYPE_UINT32_ARRAY' value='14'/> + <enumerator name='DATA_TYPE_INT64_ARRAY' value='15'/> + <enumerator name='DATA_TYPE_UINT64_ARRAY' value='16'/> + <enumerator name='DATA_TYPE_STRING_ARRAY' value='17'/> + <enumerator name='DATA_TYPE_HRTIME' value='18'/> + <enumerator name='DATA_TYPE_NVLIST' value='19'/> + <enumerator name='DATA_TYPE_NVLIST_ARRAY' value='20'/> + <enumerator name='DATA_TYPE_BOOLEAN_VALUE' value='21'/> + <enumerator name='DATA_TYPE_INT8' value='22'/> + <enumerator name='DATA_TYPE_UINT8' value='23'/> + <enumerator name='DATA_TYPE_BOOLEAN_ARRAY' value='24'/> + <enumerator name='DATA_TYPE_INT8_ARRAY' value='25'/> + <enumerator name='DATA_TYPE_UINT8_ARRAY' value='26'/> + <enumerator name='DATA_TYPE_DOUBLE' value='27'/> + </enum-decl> + <typedef-decl name='data_type_t' type-id='aeeae136' id='8d0687d2'/> + <class-decl name='nvpair' size-in-bits='128' is-struct='yes' visibility='default' id='1c34e459'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='nvp_size' type-id='3ff5601b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='nvp_name_sz' type-id='23bd8cb5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='48'> + <var-decl name='nvp_reserve' type-id='23bd8cb5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='nvp_value_elem' type-id='3ff5601b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='nvp_type' type-id='8d0687d2' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='nvp_name' type-id='e84913bd' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='nvpair_t' type-id='1c34e459' id='57928edf'/> <class-decl name='nvlist' size-in-bits='192' is-struct='yes' visibility='default' id='ac266fd9'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='nvl_version' type-id='3ff5601b' visibility='default'/> @@ -1545,41 +1834,720 @@ </data-member> </class-decl> <typedef-decl name='dmu_replay_record_t' type-id='781a52d7' id='8b8fc893'/> + <class-decl name='zinject_record' size-in-bits='2816' is-struct='yes' visibility='default' id='3216f820'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='zi_objset' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='zi_object' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='zi_start' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='zi_end' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='zi_guid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='zi_level' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='352'> + <var-decl name='zi_error' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='zi_type' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='zi_freq' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='480'> + <var-decl name='zi_failfast' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='zi_func' type-id='d1617432' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2560'> + <var-decl name='zi_iotype' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2592'> + <var-decl name='zi_duration' type-id='3ff5601b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2624'> + <var-decl name='zi_timer' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2688'> + <var-decl name='zi_nlanes' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2752'> + <var-decl name='zi_cmd' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='2784'> + <var-decl name='zi_dvas' type-id='8f92235e' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='zinject_record_t' type-id='3216f820' id='a4301ca6'/> + <class-decl name='zfs_share' size-in-bits='256' is-struct='yes' visibility='default' id='feb6f2da'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='z_exportdata' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='z_sharedata' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='z_sharetype' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='z_sharemax' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='zfs_share_t' type-id='feb6f2da' id='ee5cec36'/> + <class-decl name='zfs_cmd' size-in-bits='109952' is-struct='yes' visibility='default' id='3522cd69'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='zc_name' type-id='d16c6df4' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32768'> + <var-decl name='zc_nvlist_src' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32832'> + <var-decl name='zc_nvlist_src_size' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32896'> + <var-decl name='zc_nvlist_dst' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32960'> + <var-decl name='zc_nvlist_dst_size' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='33024'> + <var-decl name='zc_nvlist_dst_filled' type-id='c19b74c3' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='33056'> + <var-decl name='zc_pad2' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='33088'> + <var-decl name='zc_history' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='33152'> + <var-decl name='zc_value' type-id='163f6aa5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='98688'> + <var-decl name='zc_string' type-id='d1617432' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='100736'> + <var-decl name='zc_guid' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='100800'> + <var-decl name='zc_nvlist_conf' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='100864'> + <var-decl name='zc_nvlist_conf_size' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='100928'> + <var-decl name='zc_cookie' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='100992'> + <var-decl name='zc_objset_type' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101056'> + <var-decl name='zc_perm_action' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101120'> + <var-decl name='zc_history_len' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101184'> + <var-decl name='zc_history_offset' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101248'> + <var-decl name='zc_obj' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101312'> + <var-decl name='zc_iflags' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101376'> + <var-decl name='zc_share' type-id='ee5cec36' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='101632'> + <var-decl name='zc_objset_stats' type-id='b2c14f17' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='103936'> + <var-decl name='zc_begin_record' type-id='09fcdc01' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='106368'> + <var-decl name='zc_inject_record' type-id='a4301ca6' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109184'> + <var-decl name='zc_defer_destroy' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109216'> + <var-decl name='zc_flags' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109248'> + <var-decl name='zc_action_handle' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109312'> + <var-decl name='zc_cleanup_fd' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109344'> + <var-decl name='zc_simple' type-id='b96825af' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109352'> + <var-decl name='zc_pad' type-id='d3490169' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109376'> + <var-decl name='zc_sendobj' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109440'> + <var-decl name='zc_fromobj' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109504'> + <var-decl name='zc_createtxg' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109568'> + <var-decl name='zc_stat' type-id='0371a9c7' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='109888'> + <var-decl name='zc_zoneid' type-id='9c313c2d' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='zfs_stat' size-in-bits='320' is-struct='yes' visibility='default' id='6417f0b9'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='zs_gen' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='zs_mode' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='zs_links' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='zs_ctime' type-id='c1c22e6c' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='zfs_stat_t' type-id='6417f0b9' id='0371a9c7'/> <enum-decl name='boolean_t' naming-typedef-id='c19b74c3' id='f58c8277'> <underlying-type type-id='9cac1fee'/> <enumerator name='B_FALSE' value='0'/> <enumerator name='B_TRUE' value='1'/> </enum-decl> <typedef-decl name='boolean_t' type-id='f58c8277' id='c19b74c3'/> + <typedef-decl name='uchar_t' type-id='002ac4a6' id='d8bf0010'/> <typedef-decl name='uint_t' type-id='f0981eeb' id='3502e3ff'/> + <typedef-decl name='pthread_t' type-id='7359adad' id='4051f5e7'/> + <union-decl name='pthread_attr_t' size-in-bits='448' visibility='default' id='b63afacd'> + <data-member access='public'> + <var-decl name='__size' type-id='6093ff7c' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='__align' type-id='bd54fe1a' visibility='default'/> + </data-member> + </union-decl> + <typedef-decl name='pthread_attr_t' type-id='b63afacd' id='7d8569fd'/> + <union-decl name='pthread_mutex_t' size-in-bits='320' naming-typedef-id='7a6844eb' visibility='default' id='70681f9b'> + <data-member access='public'> + <var-decl name='__data' type-id='4c734837' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='__size' type-id='36c46961' visibility='default'/> + </data-member> + <data-member access='public'> + <var-decl name='__align' type-id='bd54fe1a' visibility='default'/> + </data-member> + </union-decl> + <typedef-decl name='pthread_mutex_t' type-id='70681f9b' id='7a6844eb'/> + <typedef-decl name='int16_t' type-id='03896e23' id='23bd8cb5'/> <typedef-decl name='int32_t' type-id='33f57a65' id='3ff5601b'/> <typedef-decl name='uint8_t' type-id='c51d6389' id='b96825af'/> <typedef-decl name='uint32_t' type-id='62f1140c' id='8f92235e'/> <typedef-decl name='uint64_t' type-id='8910171f' id='9c313c2d'/> + <class-decl name='__pthread_mutex_s' size-in-bits='320' is-struct='yes' visibility='default' id='4c734837'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='__lock' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='__count' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='__owner' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='96'> + <var-decl name='__nusers' type-id='f0981eeb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='__kind' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='160'> + <var-decl name='__spins' type-id='a2185560' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='176'> + <var-decl name='__elision' type-id='a2185560' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='__list' type-id='518fb49c' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='stat' size-in-bits='1152' is-struct='yes' visibility='default' id='aafc373f'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='st_dev' type-id='35ed8932' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='st_ino' type-id='e43e523d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='st_nlink' type-id='80f0b9df' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='st_mode' type-id='e1c52942' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='224'> + <var-decl name='st_uid' type-id='cc5fcceb' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='st_gid' type-id='d94ec6d9' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='288'> + <var-decl name='__pad0' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='st_rdev' type-id='35ed8932' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='st_size' type-id='79989e9c' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='st_blksize' type-id='d3f10a7f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='st_blocks' type-id='dbc43803' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='st_atim' type-id='a9c79a1f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='704'> + <var-decl name='st_mtim' type-id='a9c79a1f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='832'> + <var-decl name='st_ctim' type-id='a9c79a1f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='960'> + <var-decl name='__glibc_reserved' type-id='083f8d58' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='__pthread_internal_list' size-in-bits='128' is-struct='yes' visibility='default' id='0e01899c'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='__prev' type-id='4d98cd5a' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='__next' type-id='4d98cd5a' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='__pthread_list_t' type-id='0e01899c' id='518fb49c'/> <typedef-decl name='__uint8_t' type-id='002ac4a6' id='c51d6389'/> + <typedef-decl name='__int16_t' type-id='a2185560' id='03896e23'/> <typedef-decl name='__int32_t' type-id='95e97e5e' id='33f57a65'/> <typedef-decl name='__uint32_t' type-id='f0981eeb' id='62f1140c'/> <typedef-decl name='__uint64_t' type-id='7359adad' id='8910171f'/> + <typedef-decl name='__dev_t' type-id='7359adad' id='35ed8932'/> + <typedef-decl name='__uid_t' type-id='f0981eeb' id='cc5fcceb'/> + <typedef-decl name='__gid_t' type-id='f0981eeb' id='d94ec6d9'/> + <typedef-decl name='__ino_t' type-id='7359adad' id='e43e523d'/> + <typedef-decl name='__mode_t' type-id='f0981eeb' id='e1c52942'/> + <typedef-decl name='__nlink_t' type-id='7359adad' id='80f0b9df'/> + <typedef-decl name='__off_t' type-id='bd54fe1a' id='79989e9c'/> + <typedef-decl name='__off64_t' type-id='bd54fe1a' id='724e4de6'/> + <typedef-decl name='__time_t' type-id='bd54fe1a' id='65eda9c0'/> + <typedef-decl name='__blksize_t' type-id='bd54fe1a' id='d3f10a7f'/> + <typedef-decl name='__blkcnt_t' type-id='bd54fe1a' id='dbc43803'/> + <typedef-decl name='__ssize_t' type-id='bd54fe1a' id='41060289'/> + <typedef-decl name='__syscall_slong_t' type-id='bd54fe1a' id='03085adc'/> + <typedef-decl name='FILE' type-id='ec1ed955' id='aa12d1ba'/> + <typedef-decl name='_IO_lock_t' type-id='48b5725f' id='bb4788fa'/> + <class-decl name='_IO_FILE' size-in-bits='1728' is-struct='yes' visibility='default' id='ec1ed955'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='_flags' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='_IO_read_ptr' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='_IO_read_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='192'> + <var-decl name='_IO_read_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='256'> + <var-decl name='_IO_write_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='320'> + <var-decl name='_IO_write_ptr' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='384'> + <var-decl name='_IO_write_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='448'> + <var-decl name='_IO_buf_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='512'> + <var-decl name='_IO_buf_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='576'> + <var-decl name='_IO_save_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='640'> + <var-decl name='_IO_backup_base' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='704'> + <var-decl name='_IO_save_end' type-id='26a90f95' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='768'> + <var-decl name='_markers' type-id='e4c6fa61' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='832'> + <var-decl name='_chain' type-id='dca988a5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='896'> + <var-decl name='_fileno' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='928'> + <var-decl name='_flags2' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='960'> + <var-decl name='_old_offset' type-id='79989e9c' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1024'> + <var-decl name='_cur_column' type-id='8efea9e5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1040'> + <var-decl name='_vtable_offset' type-id='28577a57' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1048'> + <var-decl name='_shortbuf' type-id='89feb1ec' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1088'> + <var-decl name='_lock' type-id='cecf4ea7' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1152'> + <var-decl name='_offset' type-id='724e4de6' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1216'> + <var-decl name='_codecvt' type-id='570f8c59' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1280'> + <var-decl name='_wide_data' type-id='c65a1f29' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1344'> + <var-decl name='_freeres_list' type-id='dca988a5' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1408'> + <var-decl name='_freeres_buf' type-id='eaa32e2f' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1472'> + <var-decl name='__pad5' type-id='b59d7dce' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1536'> + <var-decl name='_mode' type-id='95e97e5e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='1568'> + <var-decl name='_unused2' type-id='664ac0b7' visibility='default'/> + </data-member> + </class-decl> + <class-decl name='timespec' size-in-bits='128' is-struct='yes' visibility='default' id='a9c79a1f'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='tv_sec' type-id='65eda9c0' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='tv_nsec' type-id='03085adc' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='ssize_t' type-id='41060289' id='79a0948f'/> + <typedef-decl name='size_t' type-id='7359adad' id='b59d7dce'/> + <pointer-type-def type-id='aa12d1ba' size-in-bits='64' id='822cd80b'/> + <qualified-type-def type-id='822cd80b' restrict='yes' id='e75a27e9'/> + <pointer-type-def type-id='ec1ed955' size-in-bits='64' id='dca988a5'/> + <pointer-type-def type-id='a4036571' size-in-bits='64' id='570f8c59'/> + <pointer-type-def type-id='bb4788fa' size-in-bits='64' id='cecf4ea7'/> + <pointer-type-def type-id='010ae0b9' size-in-bits='64' id='e4c6fa61'/> + <pointer-type-def type-id='79bd3751' size-in-bits='64' id='c65a1f29'/> + <pointer-type-def type-id='724e4de6' size-in-bits='64' id='ecf845f9'/> + <pointer-type-def type-id='0e01899c' size-in-bits='64' id='4d98cd5a'/> <pointer-type-def type-id='c19b74c3' size-in-bits='64' id='37e3bd22'/> <pointer-type-def type-id='a84c031d' size-in-bits='64' id='26a90f95'/> <qualified-type-def type-id='a84c031d' const='yes' id='9b45d938'/> <pointer-type-def type-id='9b45d938' size-in-bits='64' id='80f4b756'/> + <qualified-type-def type-id='80f4b756' restrict='yes' id='9d26089a'/> <qualified-type-def type-id='8b8fc893' const='yes' id='9623bc03'/> <pointer-type-def type-id='9623bc03' size-in-bits='64' id='8341348b'/> <qualified-type-def type-id='8e8d4be3' const='yes' id='693c3853'/> <pointer-type-def type-id='693c3853' size-in-bits='64' id='22cce67b'/> + <qualified-type-def type-id='57928edf' const='yes' id='642ee20f'/> + <pointer-type-def type-id='642ee20f' size-in-bits='64' id='dace003f'/> + <qualified-type-def type-id='7d8569fd' const='yes' id='e06dee2d'/> + <pointer-type-def type-id='e06dee2d' size-in-bits='64' id='540db505'/> + <qualified-type-def type-id='540db505' restrict='yes' id='e1815e87'/> + <qualified-type-def type-id='d8bf0010' const='yes' id='a9125480'/> + <pointer-type-def type-id='a9125480' size-in-bits='64' id='d1db479e'/> + <qualified-type-def type-id='b96825af' const='yes' id='2b61797f'/> + <pointer-type-def type-id='2b61797f' size-in-bits='64' id='9f7200cf'/> <pointer-type-def type-id='c70fa2e8' size-in-bits='64' id='2e711a2a'/> + <pointer-type-def type-id='95e97e5e' size-in-bits='64' id='7292109c'/> <pointer-type-def type-id='8e8d4be3' size-in-bits='64' id='5ce45b60'/> <pointer-type-def type-id='5ce45b60' size-in-bits='64' id='857bb57e'/> + <pointer-type-def type-id='57928edf' size-in-bits='64' id='3fa542f0'/> + <pointer-type-def type-id='7a6844eb' size-in-bits='64' id='18c91f9e'/> + <pointer-type-def type-id='4051f5e7' size-in-bits='64' id='e01b5462'/> + <qualified-type-def type-id='e01b5462' restrict='yes' id='cc338b26'/> + <pointer-type-def type-id='b59d7dce' size-in-bits='64' id='78c01427'/> + <pointer-type-def type-id='aafc373f' size-in-bits='64' id='4330df87'/> <pointer-type-def type-id='9c313c2d' size-in-bits='64' id='5d6479ae'/> <pointer-type-def type-id='b96825af' size-in-bits='64' id='ae3e8ca6'/> <pointer-type-def type-id='48b5725f' size-in-bits='64' id='eaa32e2f'/> + <pointer-type-def type-id='cd5d79f4' size-in-bits='64' id='5ad9edb6'/> + <qualified-type-def type-id='eaa32e2f' restrict='yes' id='1b7446cd'/> + <pointer-type-def type-id='eaa32e2f' size-in-bits='64' id='63e171df'/> + <pointer-type-def type-id='3522cd69' size-in-bits='64' id='b65f7fd1'/> + <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> + <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> + <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> + <function-decl name='lzc_ioctl_fd' mangled-name='lzc_ioctl_fd' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzc_ioctl_fd'> + <parameter type-id='95e97e5e'/> + <parameter type-id='7359adad'/> + <parameter type-id='b65f7fd1'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='nvlist_unpack' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='857bb57e'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <parameter type-id='5d6479ae'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_next_nvpair' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='dace003f'/> + <return type-id='3fa542f0'/> + </function-decl> + <function-decl name='nvpair_name' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='dace003f'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='fnvlist_alloc' visibility='default' binding='global' size-in-bits='64'> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='fnvlist_free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_pack' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='78c01427'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='fnvlist_pack_free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_unpack' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='26a90f95'/> + <parameter type-id='b59d7dce'/> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='fnvlist_dup' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='fnvlist_add_boolean' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_boolean_value' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='c19b74c3'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_int32' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='3ff5601b'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9c313c2d'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_byte_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='d1db479e'/> + <parameter type-id='3502e3ff'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint8_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9f7200cf'/> + <parameter type-id='3502e3ff'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_lookup_boolean_value' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='fnvlist_lookup_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <return type-id='9c313c2d'/> + </function-decl> + <function-decl name='fnvlist_lookup_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='libspl_assertf' mangled-name='libspl_assertf' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libspl_assertf'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='80f4b756'/> + <parameter is-variadic='yes'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='strlcpy' mangled-name='strlcpy' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='strlcpy'> + <parameter type-id='26a90f95'/> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='__errno_location' visibility='default' binding='global' size-in-bits='64'> + <return type-id='7292109c'/> + </function-decl> + <function-decl name='pthread_create' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='cc338b26'/> + <parameter type-id='e1815e87'/> + <parameter type-id='5ad9edb6'/> + <parameter type-id='1b7446cd'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_join' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='4051f5e7'/> + <parameter type-id='63e171df'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_mutex_lock' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='18c91f9e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pthread_mutex_unlock' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='18c91f9e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='fclose' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='malloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b59d7dce'/> + <return type-id='eaa32e2f'/> + </function-decl> + <function-decl name='free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='getenv' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strchr' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strrchr' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='95e97e5e'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strcspn' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='close' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='pipe2' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='7292109c'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='splice' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='ecf845f9'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='ecf845f9'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='f0981eeb'/> + <return type-id='41060289'/> + </function-decl> + <function-decl name='__open_too_many_args' visibility='default' binding='global' size-in-bits='64'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__open_missing_mode' visibility='default' binding='global' size-in-bits='64'> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='__read_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='eaa32e2f'/> + <parameter type-id='b59d7dce'/> + <parameter type-id='b59d7dce'/> + <return type-id='79a0948f'/> + </function-decl> <function-decl name='libzfs_core_init' mangled-name='libzfs_core_init' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libzfs_core_init'> <return type-id='95e97e5e'/> </function-decl> <function-decl name='libzfs_core_fini' mangled-name='libzfs_core_fini' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='libzfs_core_fini'> <return type-id='48b5725f'/> </function-decl> + <function-decl name='lzc_scrub' mangled-name='lzc_scrub' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzc_scrub'> + <parameter type-id='5b35941c' name='ioc'/> + <parameter type-id='80f4b756' name='name'/> + <parameter type-id='5ce45b60' name='source'/> + <parameter type-id='857bb57e' name='resultp'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='lzc_create' mangled-name='lzc_create' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzc_create'> <parameter type-id='80f4b756' name='fsname'/> <parameter type-id='bc9887f1' name='type'/> @@ -1776,6 +2744,26 @@ <parameter type-id='857bb57e' name='errors'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='lzc_receive_with_heal' mangled-name='lzc_receive_with_heal' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzc_receive_with_heal'> + <parameter type-id='80f4b756' name='snapname'/> + <parameter type-id='5ce45b60' name='props'/> + <parameter type-id='5ce45b60' name='cmdprops'/> + <parameter type-id='ae3e8ca6' name='wkeydata'/> + <parameter type-id='3502e3ff' name='wkeylen'/> + <parameter type-id='80f4b756' name='origin'/> + <parameter type-id='c19b74c3' name='force'/> + <parameter type-id='c19b74c3' name='heal'/> + <parameter type-id='c19b74c3' name='resumable'/> + <parameter type-id='c19b74c3' name='raw'/> + <parameter type-id='95e97e5e' name='input_fd'/> + <parameter type-id='8341348b' name='begin_record'/> + <parameter type-id='95e97e5e' name='cleanup_fd'/> + <parameter type-id='5d6479ae' name='read_bytes'/> + <parameter type-id='5d6479ae' name='errflags'/> + <parameter type-id='5d6479ae' name='action_handle'/> + <parameter type-id='857bb57e' name='errors'/> + <return type-id='95e97e5e'/> + </function-decl> <function-decl name='lzc_rollback' mangled-name='lzc_rollback' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzc_rollback'> <parameter type-id='80f4b756' name='fsname'/> <parameter type-id='26a90f95' name='snapnamebuf'/> @@ -1926,241 +2914,16 @@ <parameter type-id='eaa32e2f'/> <return type-id='95e97e5e'/> </function-type> + <function-type size-in-bits='64' id='cd5d79f4'> + <parameter type-id='eaa32e2f'/> + <return type-id='eaa32e2f'/> + </function-type> </abi-instr> - <abi-instr address-size='64' path='os/linux/libzfs_core_ioctl.c' language='LANG_C99'> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='32768' id='d16c6df4'> - <subrange length='4096' type-id='7359adad' id='bc1b5ddc'/> - </array-type-def> - <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='65536' id='163f6aa5'> - <subrange length='8192' type-id='7359adad' id='c88f397d'/> - </array-type-def> - <array-type-def dimensions='1' type-id='9c313c2d' size-in-bits='128' id='c1c22e6c'> - <subrange length='2' type-id='7359adad' id='52efc4ef'/> - </array-type-def> - <class-decl name='dmu_objset_stats' size-in-bits='2304' is-struct='yes' visibility='default' id='098f0221'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='dds_num_clones' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='dds_creation_txg' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='dds_guid' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='dds_type' type-id='230f1e16' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='dds_is_snapshot' type-id='b96825af' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='232'> - <var-decl name='dds_inconsistent' type-id='b96825af' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='240'> - <var-decl name='dds_redacted' type-id='b96825af' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='248'> - <var-decl name='dds_origin' type-id='d1617432' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='dmu_objset_stats_t' type-id='098f0221' id='b2c14f17'/> - <class-decl name='zinject_record' size-in-bits='2816' is-struct='yes' visibility='default' id='3216f820'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='zi_objset' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='zi_object' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='zi_start' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='zi_end' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='zi_guid' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='zi_level' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='zi_error' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='zi_type' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='zi_freq' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='zi_failfast' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='zi_func' type-id='d1617432' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2560'> - <var-decl name='zi_iotype' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2592'> - <var-decl name='zi_duration' type-id='3ff5601b' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2624'> - <var-decl name='zi_timer' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2688'> - <var-decl name='zi_nlanes' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2752'> - <var-decl name='zi_cmd' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='2784'> - <var-decl name='zi_dvas' type-id='8f92235e' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='zinject_record_t' type-id='3216f820' id='a4301ca6'/> - <class-decl name='zfs_share' size-in-bits='256' is-struct='yes' visibility='default' id='feb6f2da'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='z_exportdata' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='z_sharedata' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='z_sharetype' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='z_sharemax' type-id='9c313c2d' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='zfs_share_t' type-id='feb6f2da' id='ee5cec36'/> - <class-decl name='zfs_cmd' size-in-bits='109952' is-struct='yes' visibility='default' id='3522cd69'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='zc_name' type-id='d16c6df4' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='32768'> - <var-decl name='zc_nvlist_src' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='32832'> - <var-decl name='zc_nvlist_src_size' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='32896'> - <var-decl name='zc_nvlist_dst' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='32960'> - <var-decl name='zc_nvlist_dst_size' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='33024'> - <var-decl name='zc_nvlist_dst_filled' type-id='c19b74c3' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='33056'> - <var-decl name='zc_pad2' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='33088'> - <var-decl name='zc_history' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='33152'> - <var-decl name='zc_value' type-id='163f6aa5' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='98688'> - <var-decl name='zc_string' type-id='d1617432' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='100736'> - <var-decl name='zc_guid' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='100800'> - <var-decl name='zc_nvlist_conf' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='100864'> - <var-decl name='zc_nvlist_conf_size' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='100928'> - <var-decl name='zc_cookie' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='100992'> - <var-decl name='zc_objset_type' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101056'> - <var-decl name='zc_perm_action' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101120'> - <var-decl name='zc_history_len' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101184'> - <var-decl name='zc_history_offset' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101248'> - <var-decl name='zc_obj' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101312'> - <var-decl name='zc_iflags' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101376'> - <var-decl name='zc_share' type-id='ee5cec36' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='101632'> - <var-decl name='zc_objset_stats' type-id='b2c14f17' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='103936'> - <var-decl name='zc_begin_record' type-id='09fcdc01' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='106368'> - <var-decl name='zc_inject_record' type-id='a4301ca6' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109184'> - <var-decl name='zc_defer_destroy' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109216'> - <var-decl name='zc_flags' type-id='8f92235e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109248'> - <var-decl name='zc_action_handle' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109312'> - <var-decl name='zc_cleanup_fd' type-id='95e97e5e' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109344'> - <var-decl name='zc_simple' type-id='b96825af' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109352'> - <var-decl name='zc_pad' type-id='d3490169' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109376'> - <var-decl name='zc_sendobj' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109440'> - <var-decl name='zc_fromobj' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109504'> - <var-decl name='zc_createtxg' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109568'> - <var-decl name='zc_stat' type-id='0371a9c7' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='109888'> - <var-decl name='zc_zoneid' type-id='9c313c2d' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='zfs_cmd_t' type-id='3522cd69' id='a5559cdd'/> - <class-decl name='zfs_stat' size-in-bits='320' is-struct='yes' visibility='default' id='6417f0b9'> - <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='zs_gen' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='zs_mode' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='zs_links' type-id='9c313c2d' visibility='default'/> - </data-member> - <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='zs_ctime' type-id='c1c22e6c' visibility='default'/> - </data-member> - </class-decl> - <typedef-decl name='zfs_stat_t' type-id='6417f0b9' id='0371a9c7'/> - <pointer-type-def type-id='a5559cdd' size-in-bits='64' id='e4ec4540'/> - <function-decl name='lzc_ioctl_fd' mangled-name='lzc_ioctl_fd' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzc_ioctl_fd'> - <parameter type-id='95e97e5e' name='fd'/> - <parameter type-id='7359adad' name='request'/> - <parameter type-id='e4ec4540' name='zc'/> + <abi-instr address-size='64' path='lib/libzfs_core/os/linux/libzfs_core_ioctl.c' language='LANG_C99'> + <function-decl name='ioctl' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='95e97e5e'/> + <parameter type-id='7359adad'/> + <parameter is-variadic='yes'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> diff --git a/lib/libzfs_core/libzfs_core.c b/lib/libzfs_core/libzfs_core.c index 681fd8c7ba5e..01d803e21db0 100644 --- a/lib/libzfs_core/libzfs_core.c +++ b/lib/libzfs_core/libzfs_core.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -22,10 +22,10 @@ /* * Copyright (c) 2012, 2020 by Delphix. All rights reserved. * Copyright (c) 2013 Steven Hartland. All rights reserved. - * Copyright (c) 2017 Datto Inc. * Copyright 2017 RackTop Systems. * Copyright (c) 2017 Open-E, Inc. All Rights Reserved. * Copyright (c) 2019, 2020 by Christian Schwarz. All rights reserved. + * Copyright (c) 2019 Datto Inc. */ /* @@ -235,7 +235,7 @@ lzc_ioctl(zfs_ioc_t ioc, const char *name, break; } } - if (zc.zc_nvlist_dst_filled) { + if (zc.zc_nvlist_dst_filled && resultp != NULL) { *resultp = fnvlist_unpack((void *)(uintptr_t)zc.zc_nvlist_dst, zc.zc_nvlist_dst_size); } @@ -248,6 +248,13 @@ out: } int +lzc_scrub(zfs_ioc_t ioc, const char *name, + nvlist_t *source, nvlist_t **resultp) +{ + return (lzc_ioctl(ioc, name, source, resultp)); +} + +int lzc_create(const char *fsname, enum lzc_dataset_type type, nvlist_t *props, uint8_t *wkeydata, uint_t wkeylen) { @@ -643,10 +650,12 @@ send_worker(void *arg) unsigned int bufsiz = max_pipe_buffer(ctx->from); ssize_t rd; - while ((rd = splice(ctx->from, NULL, ctx->to, NULL, bufsiz, - SPLICE_F_MOVE | SPLICE_F_MORE)) > 0) - ; - + for (;;) { + rd = splice(ctx->from, NULL, ctx->to, NULL, bufsiz, + SPLICE_F_MOVE | SPLICE_F_MORE); + if ((rd == -1 && errno != EINTR) || rd == 0) + break; + } int err = (rd == -1) ? errno : 0; close(ctx->from); return ((void *)(uintptr_t)err); @@ -986,7 +995,7 @@ recv_read(int fd, void *buf, int ilen) static int recv_impl(const char *snapname, nvlist_t *recvdprops, nvlist_t *localprops, uint8_t *wkeydata, uint_t wkeylen, const char *origin, boolean_t force, - boolean_t resumable, boolean_t raw, int input_fd, + boolean_t heal, boolean_t resumable, boolean_t raw, int input_fd, const dmu_replay_record_t *begin_record, uint64_t *read_bytes, uint64_t *errflags, nvlist_t **errors) { @@ -1041,7 +1050,7 @@ recv_impl(const char *snapname, nvlist_t *recvdprops, nvlist_t *localprops, /* * All receives with a payload should use the new interface. */ - if (resumable || raw || wkeydata != NULL || payload) { + if (resumable || heal || raw || wkeydata != NULL || payload) { nvlist_t *outnvl = NULL; nvlist_t *innvl = fnvlist_alloc(); @@ -1081,6 +1090,8 @@ recv_impl(const char *snapname, nvlist_t *recvdprops, nvlist_t *localprops, if (resumable) fnvlist_add_boolean(innvl, "resumable"); + if (heal) + fnvlist_add_boolean(innvl, "heal"); error = lzc_ioctl(ZFS_IOC_RECV_NEW, fsname, innvl, &outnvl); @@ -1103,7 +1114,8 @@ recv_impl(const char *snapname, nvlist_t *recvdprops, nvlist_t *localprops, fnvlist_free(outnvl); } else { zfs_cmd_t zc = {"\0"}; - char *packed = NULL; + char *rp_packed = NULL; + char *lp_packed = NULL; size_t size; ASSERT3S(g_refcount, >, 0); @@ -1112,14 +1124,14 @@ recv_impl(const char *snapname, nvlist_t *recvdprops, nvlist_t *localprops, (void) strlcpy(zc.zc_value, snapname, sizeof (zc.zc_value)); if (recvdprops != NULL) { - packed = fnvlist_pack(recvdprops, &size); - zc.zc_nvlist_src = (uint64_t)(uintptr_t)packed; + rp_packed = fnvlist_pack(recvdprops, &size); + zc.zc_nvlist_src = (uint64_t)(uintptr_t)rp_packed; zc.zc_nvlist_src_size = size; } if (localprops != NULL) { - packed = fnvlist_pack(localprops, &size); - zc.zc_nvlist_conf = (uint64_t)(uintptr_t)packed; + lp_packed = fnvlist_pack(localprops, &size); + zc.zc_nvlist_conf = (uint64_t)(uintptr_t)lp_packed; zc.zc_nvlist_conf_size = size; } @@ -1154,8 +1166,10 @@ recv_impl(const char *snapname, nvlist_t *recvdprops, nvlist_t *localprops, zc.zc_nvlist_dst_size, errors, KM_SLEEP)); } - if (packed != NULL) - fnvlist_pack_free(packed, size); + if (rp_packed != NULL) + fnvlist_pack_free(rp_packed, size); + if (lp_packed != NULL) + fnvlist_pack_free(lp_packed, size); free((void *)(uintptr_t)zc.zc_nvlist_dst); } @@ -1180,7 +1194,7 @@ lzc_receive(const char *snapname, nvlist_t *props, const char *origin, boolean_t force, boolean_t raw, int fd) { return (recv_impl(snapname, props, NULL, NULL, 0, origin, force, - B_FALSE, raw, fd, NULL, NULL, NULL, NULL)); + B_FALSE, B_FALSE, raw, fd, NULL, NULL, NULL, NULL)); } /* @@ -1194,7 +1208,7 @@ lzc_receive_resumable(const char *snapname, nvlist_t *props, const char *origin, boolean_t force, boolean_t raw, int fd) { return (recv_impl(snapname, props, NULL, NULL, 0, origin, force, - B_TRUE, raw, fd, NULL, NULL, NULL, NULL)); + B_FALSE, B_TRUE, raw, fd, NULL, NULL, NULL, NULL)); } /* @@ -1217,7 +1231,7 @@ lzc_receive_with_header(const char *snapname, nvlist_t *props, return (EINVAL); return (recv_impl(snapname, props, NULL, NULL, 0, origin, force, - resumable, raw, fd, begin_record, NULL, NULL, NULL)); + B_FALSE, resumable, raw, fd, begin_record, NULL, NULL, NULL)); } /* @@ -1247,7 +1261,7 @@ lzc_receive_one(const char *snapname, nvlist_t *props, { (void) action_handle, (void) cleanup_fd; return (recv_impl(snapname, props, NULL, NULL, 0, origin, force, - resumable, raw, input_fd, begin_record, + B_FALSE, resumable, raw, input_fd, begin_record, read_bytes, errflags, errors)); } @@ -1269,7 +1283,27 @@ lzc_receive_with_cmdprops(const char *snapname, nvlist_t *props, { (void) action_handle, (void) cleanup_fd; return (recv_impl(snapname, props, cmdprops, wkeydata, wkeylen, origin, - force, resumable, raw, input_fd, begin_record, + force, B_FALSE, resumable, raw, input_fd, begin_record, + read_bytes, errflags, errors)); +} + +/* + * Like lzc_receive_with_cmdprops, but allows the caller to pass an additional + * 'heal' argument. + * + * The heal arguments tells us to heal the provided snapshot using the provided + * send stream + */ +int lzc_receive_with_heal(const char *snapname, nvlist_t *props, + nvlist_t *cmdprops, uint8_t *wkeydata, uint_t wkeylen, const char *origin, + boolean_t force, boolean_t heal, boolean_t resumable, boolean_t raw, + int input_fd, const dmu_replay_record_t *begin_record, int cleanup_fd, + uint64_t *read_bytes, uint64_t *errflags, uint64_t *action_handle, + nvlist_t **errors) +{ + (void) action_handle, (void) cleanup_fd; + return (recv_impl(snapname, props, cmdprops, wkeydata, wkeylen, origin, + force, heal, resumable, raw, input_fd, begin_record, read_bytes, errflags, errors)); } diff --git a/lib/libzfs_core/os/freebsd/libzfs_core_ioctl.c b/lib/libzfs_core/os/freebsd/libzfs_core_ioctl.c index b8394886d034..76778b36521c 100644 --- a/lib/libzfs_core/os/freebsd/libzfs_core_ioctl.c +++ b/lib/libzfs_core/os/freebsd/libzfs_core_ioctl.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -38,7 +38,7 @@ get_zfs_ioctl_version(void) int ver = ZFS_IOCVER_NONE; ver_size = sizeof (ver); - sysctlbyname("vfs.zfs.version.ioctl", &ver, &ver_size, NULL, 0); + (void) sysctlbyname("vfs.zfs.version.ioctl", &ver, &ver_size, NULL, 0); return (ver); } @@ -46,8 +46,11 @@ get_zfs_ioctl_version(void) static int zcmd_ioctl_compat(int fd, int request, zfs_cmd_t *zc, const int cflag) { - int newrequest, ret; + int ret; +#ifdef ZFS_LEGACY_SUPPORT + int newrequest; void *zc_c = NULL; +#endif unsigned long ncmd; zfs_iocparm_t zp; @@ -58,6 +61,7 @@ zcmd_ioctl_compat(int fd, int request, zfs_cmd_t *zc, const int cflag) zp.zfs_cmd_size = sizeof (zfs_cmd_t); zp.zfs_ioctl_version = ZFS_IOCVER_OZFS; break; +#ifdef ZFS_LEGACY_SUPPORT case ZFS_CMD_COMPAT_LEGACY: newrequest = zfs_ioctl_ozfs_to_legacy(request); ncmd = _IOWR('Z', newrequest, zfs_iocparm_t); @@ -67,6 +71,7 @@ zcmd_ioctl_compat(int fd, int request, zfs_cmd_t *zc, const int cflag) zp.zfs_cmd_size = sizeof (zfs_cmd_legacy_t); zp.zfs_ioctl_version = ZFS_IOCVER_LEGACY; break; +#endif default: abort(); return (EINVAL); @@ -74,14 +79,18 @@ zcmd_ioctl_compat(int fd, int request, zfs_cmd_t *zc, const int cflag) ret = ioctl(fd, ncmd, &zp); if (ret) { +#ifdef ZFS_LEGACY_SUPPORT if (zc_c) free(zc_c); +#endif return (ret); } +#ifdef ZFS_LEGACY_SUPPORT if (zc_c) { zfs_cmd_legacy_to_ozfs(zc_c, zc); free(zc_c); } +#endif return (ret); } @@ -100,9 +109,11 @@ lzc_ioctl_fd(int fd, unsigned long request, zfs_cmd_t *zc) zfs_ioctl_version = get_zfs_ioctl_version(); switch (zfs_ioctl_version) { +#ifdef ZFS_LEGACY_SUPPORT case ZFS_IOCVER_LEGACY: cflag = ZFS_CMD_COMPAT_LEGACY; break; +#endif case ZFS_IOCVER_OZFS: cflag = ZFS_CMD_COMPAT_NONE; break; diff --git a/lib/libzfs_core/os/linux/libzfs_core_ioctl.c b/lib/libzfs_core/os/linux/libzfs_core_ioctl.c index 9b44a4e3be0d..116cddfc45d3 100644 --- a/lib/libzfs_core/os/linux/libzfs_core_ioctl.c +++ b/lib/libzfs_core/os/linux/libzfs_core_ioctl.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libzfsbootenv/libzfsbootenv.abi b/lib/libzfsbootenv/libzfsbootenv.abi index 86ec25cf8470..5903d5dcbe21 100644 --- a/lib/libzfsbootenv/libzfsbootenv.abi +++ b/lib/libzfsbootenv/libzfsbootenv.abi @@ -14,69 +14,8 @@ <elf-symbol name='lzbe_remove_pair' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='lzbe_set_boot_device' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-function-symbols> - <abi-instr address-size='64' path='lzbe_device.c' language='LANG_C99'> + <abi-instr address-size='64' path='lib/libzfsbootenv/lzbe_device.c' language='LANG_C99'> <type-decl name='char' size-in-bits='8' id='a84c031d'/> - <type-decl name='int' size-in-bits='32' id='95e97e5e'/> - <type-decl name='unnamed-enum-underlying-type-32' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='9cac1fee'/> - <type-decl name='void' id='48b5725f'/> - <enum-decl name='lzbe_flags' id='2b77720b'> - <underlying-type type-id='9cac1fee'/> - <enumerator name='lzbe_add' value='0'/> - <enumerator name='lzbe_replace' value='1'/> - </enum-decl> - <typedef-decl name='lzbe_flags_t' type-id='2b77720b' id='a1936f04'/> - <pointer-type-def type-id='a84c031d' size-in-bits='64' id='26a90f95'/> - <pointer-type-def type-id='26a90f95' size-in-bits='64' id='9b23c9ad'/> - <qualified-type-def type-id='a84c031d' const='yes' id='9b45d938'/> - <pointer-type-def type-id='9b45d938' size-in-bits='64' id='80f4b756'/> - <function-decl name='lzbe_set_boot_device' mangled-name='lzbe_set_boot_device' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_set_boot_device'> - <parameter type-id='80f4b756' name='pool'/> - <parameter type-id='a1936f04' name='flag'/> - <parameter type-id='80f4b756' name='device'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='lzbe_get_boot_device' mangled-name='lzbe_get_boot_device' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_get_boot_device'> - <parameter type-id='80f4b756' name='pool'/> - <parameter type-id='9b23c9ad' name='device'/> - <return type-id='95e97e5e'/> - </function-decl> - </abi-instr> - <abi-instr address-size='64' path='lzbe_pair.c' language='LANG_C99'> - <type-decl name='unsigned long int' size-in-bits='64' id='7359adad'/> - <typedef-decl name='size_t' type-id='7359adad' id='b59d7dce'/> - <pointer-type-def type-id='48b5725f' size-in-bits='64' id='eaa32e2f'/> - <pointer-type-def type-id='eaa32e2f' size-in-bits='64' id='63e171df'/> - <function-decl name='lzbe_nvlist_get' mangled-name='lzbe_nvlist_get' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_nvlist_get'> - <parameter type-id='80f4b756' name='pool'/> - <parameter type-id='80f4b756' name='key'/> - <parameter type-id='63e171df' name='ptr'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='lzbe_nvlist_set' mangled-name='lzbe_nvlist_set' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_nvlist_set'> - <parameter type-id='80f4b756' name='pool'/> - <parameter type-id='80f4b756' name='key'/> - <parameter type-id='eaa32e2f' name='ptr'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='lzbe_nvlist_free' mangled-name='lzbe_nvlist_free' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_nvlist_free'> - <parameter type-id='eaa32e2f' name='ptr'/> - <return type-id='48b5725f'/> - </function-decl> - <function-decl name='lzbe_add_pair' mangled-name='lzbe_add_pair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_add_pair'> - <parameter type-id='eaa32e2f' name='ptr'/> - <parameter type-id='80f4b756' name='key'/> - <parameter type-id='80f4b756' name='type'/> - <parameter type-id='eaa32e2f' name='value'/> - <parameter type-id='b59d7dce' name='size'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='lzbe_remove_pair' mangled-name='lzbe_remove_pair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_remove_pair'> - <parameter type-id='eaa32e2f' name='ptr'/> - <parameter type-id='80f4b756' name='key'/> - <return type-id='95e97e5e'/> - </function-decl> - </abi-instr> - <abi-instr address-size='64' path='lzbe_util.c' language='LANG_C99'> <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='8' id='89feb1ec'> <subrange length='1' type-id='7359adad' id='52f813b4'/> </array-type-def> @@ -86,9 +25,55 @@ <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> + <class-decl name='libzfs_handle' is-struct='yes' visibility='default' is-declaration-only='yes' id='c8a9d9d8'/> + <class-decl name='zpool_handle' is-struct='yes' visibility='default' is-declaration-only='yes' id='67002a8a'/> + <type-decl name='int' size-in-bits='32' id='95e97e5e'/> <type-decl name='long int' size-in-bits='64' id='bd54fe1a'/> <type-decl name='signed char' size-in-bits='8' id='28577a57'/> + <type-decl name='unnamed-enum-underlying-type-32' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='9cac1fee'/> + <type-decl name='unsigned int' size-in-bits='32' id='f0981eeb'/> + <type-decl name='unsigned long int' size-in-bits='64' id='7359adad'/> <type-decl name='unsigned short int' size-in-bits='16' id='8efea9e5'/> + <type-decl name='variadic parameter type' id='2c1145c5'/> + <type-decl name='void' id='48b5725f'/> + <typedef-decl name='zpool_handle_t' type-id='67002a8a' id='b1efc708'/> + <typedef-decl name='libzfs_handle_t' type-id='c8a9d9d8' id='95942d0c'/> + <enum-decl name='lzbe_flags' id='2b77720b'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='lzbe_add' value='0'/> + <enumerator name='lzbe_replace' value='1'/> + </enum-decl> + <typedef-decl name='lzbe_flags_t' type-id='2b77720b' id='a1936f04'/> + <class-decl name='nvlist' size-in-bits='192' is-struct='yes' visibility='default' id='ac266fd9'> + <data-member access='public' layout-offset-in-bits='0'> + <var-decl name='nvl_version' type-id='3ff5601b' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='32'> + <var-decl name='nvl_nvflag' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='64'> + <var-decl name='nvl_priv' type-id='9c313c2d' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='128'> + <var-decl name='nvl_flag' type-id='8f92235e' visibility='default'/> + </data-member> + <data-member access='public' layout-offset-in-bits='160'> + <var-decl name='nvl_pad' type-id='3ff5601b' visibility='default'/> + </data-member> + </class-decl> + <typedef-decl name='nvlist_t' type-id='ac266fd9' id='8e8d4be3'/> + <enum-decl name='boolean_t' naming-typedef-id='c19b74c3' id='f58c8277'> + <underlying-type type-id='9cac1fee'/> + <enumerator name='B_FALSE' value='0'/> + <enumerator name='B_TRUE' value='1'/> + </enum-decl> + <typedef-decl name='boolean_t' type-id='f58c8277' id='c19b74c3'/> + <typedef-decl name='int32_t' type-id='33f57a65' id='3ff5601b'/> + <typedef-decl name='uint32_t' type-id='62f1140c' id='8f92235e'/> + <typedef-decl name='uint64_t' type-id='8910171f' id='9c313c2d'/> + <typedef-decl name='__int32_t' type-id='95e97e5e' id='33f57a65'/> + <typedef-decl name='__uint32_t' type-id='f0981eeb' id='62f1140c'/> + <typedef-decl name='__uint64_t' type-id='7359adad' id='8910171f'/> <typedef-decl name='__off_t' type-id='bd54fe1a' id='79989e9c'/> <typedef-decl name='__off64_t' type-id='bd54fe1a' id='724e4de6'/> <typedef-decl name='FILE' type-id='ec1ed955' id='aa12d1ba'/> @@ -182,15 +167,413 @@ <var-decl name='_unused2' type-id='664ac0b7' visibility='default'/> </data-member> </class-decl> + <typedef-decl name='size_t' type-id='7359adad' id='b59d7dce'/> <pointer-type-def type-id='aa12d1ba' size-in-bits='64' id='822cd80b'/> + <qualified-type-def type-id='822cd80b' restrict='yes' id='e75a27e9'/> <pointer-type-def type-id='ec1ed955' size-in-bits='64' id='dca988a5'/> <pointer-type-def type-id='a4036571' size-in-bits='64' id='570f8c59'/> <pointer-type-def type-id='bb4788fa' size-in-bits='64' id='cecf4ea7'/> <pointer-type-def type-id='010ae0b9' size-in-bits='64' id='e4c6fa61'/> <pointer-type-def type-id='79bd3751' size-in-bits='64' id='c65a1f29'/> + <pointer-type-def type-id='a84c031d' size-in-bits='64' id='26a90f95'/> + <pointer-type-def type-id='26a90f95' size-in-bits='64' id='9b23c9ad'/> + <qualified-type-def type-id='9b23c9ad' restrict='yes' id='8c85230f'/> + <qualified-type-def type-id='a84c031d' const='yes' id='9b45d938'/> + <pointer-type-def type-id='9b45d938' size-in-bits='64' id='80f4b756'/> + <qualified-type-def type-id='80f4b756' restrict='yes' id='9d26089a'/> + <pointer-type-def type-id='80f4b756' size-in-bits='64' id='7d3cd834'/> + <qualified-type-def type-id='8e8d4be3' const='yes' id='693c3853'/> + <pointer-type-def type-id='693c3853' size-in-bits='64' id='22cce67b'/> + <pointer-type-def type-id='95942d0c' size-in-bits='64' id='b0382bb3'/> + <pointer-type-def type-id='8e8d4be3' size-in-bits='64' id='5ce45b60'/> + <pointer-type-def type-id='5ce45b60' size-in-bits='64' id='857bb57e'/> + <pointer-type-def type-id='9c313c2d' size-in-bits='64' id='5d6479ae'/> + <pointer-type-def type-id='48b5725f' size-in-bits='64' id='eaa32e2f'/> + <pointer-type-def type-id='b1efc708' size-in-bits='64' id='4c81de99'/> <class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/> <class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/> <class-decl name='_IO_wide_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='79bd3751'/> + <class-decl name='libzfs_handle' is-struct='yes' visibility='default' is-declaration-only='yes' id='c8a9d9d8'/> + <class-decl name='zpool_handle' is-struct='yes' visibility='default' is-declaration-only='yes' id='67002a8a'/> + <function-decl name='libzfs_init' visibility='default' binding='global' size-in-bits='64'> + <return type-id='b0382bb3'/> + </function-decl> + <function-decl name='libzfs_fini' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='libzfs_error_description' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <return type-id='80f4b756'/> + </function-decl> + <function-decl name='zpool_open' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='b0382bb3'/> + <parameter type-id='80f4b756'/> + <return type-id='4c81de99'/> + </function-decl> + <function-decl name='zpool_close' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='4c81de99'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='zpool_set_bootenv' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='4c81de99'/> + <parameter type-id='22cce67b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='zpool_get_bootenv' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='4c81de99'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='nvlist_lookup_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <parameter type-id='5d6479ae'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <parameter type-id='7d3cd834'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_exists' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='80f4b756'/> + <return type-id='c19b74c3'/> + </function-decl> + <function-decl name='fnvlist_alloc' visibility='default' binding='global' size-in-bits='64'> + <return type-id='5ce45b60'/> + </function-decl> + <function-decl name='fnvlist_free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9c313c2d'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_add_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='fnvlist_remove' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='free' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='eaa32e2f'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='strncmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <parameter type-id='b59d7dce'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strdup' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='26a90f95'/> + </function-decl> + <function-decl name='strlen' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <return type-id='b59d7dce'/> + </function-decl> + <function-decl name='__fprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='e75a27e9'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='__asprintf_chk' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='8c85230f'/> + <parameter type-id='95e97e5e'/> + <parameter type-id='9d26089a'/> + <parameter is-variadic='yes'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzbe_set_boot_device' mangled-name='lzbe_set_boot_device' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_set_boot_device'> + <parameter type-id='80f4b756' name='pool'/> + <parameter type-id='a1936f04' name='flag'/> + <parameter type-id='80f4b756' name='device'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzbe_get_boot_device' mangled-name='lzbe_get_boot_device' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_get_boot_device'> + <parameter type-id='80f4b756' name='pool'/> + <parameter type-id='9b23c9ad' name='device'/> + <return type-id='95e97e5e'/> + </function-decl> + </abi-instr> + <abi-instr address-size='64' path='lib/libzfsbootenv/lzbe_pair.c' language='LANG_C99'> + <type-decl name='short int' size-in-bits='16' id='a2185560'/> + <type-decl name='unsigned char' size-in-bits='8' id='002ac4a6'/> + <typedef-decl name='uchar_t' type-id='002ac4a6' id='d8bf0010'/> + <typedef-decl name='uint_t' type-id='f0981eeb' id='3502e3ff'/> + <typedef-decl name='int8_t' type-id='2171a512' id='ee31ee44'/> + <typedef-decl name='int16_t' type-id='03896e23' id='23bd8cb5'/> + <typedef-decl name='int64_t' type-id='0c9942d2' id='9da381c4'/> + <typedef-decl name='uint8_t' type-id='c51d6389' id='b96825af'/> + <typedef-decl name='uint16_t' type-id='253c2d2a' id='149c6638'/> + <typedef-decl name='__int8_t' type-id='28577a57' id='2171a512'/> + <typedef-decl name='__uint8_t' type-id='002ac4a6' id='c51d6389'/> + <typedef-decl name='__int16_t' type-id='a2185560' id='03896e23'/> + <typedef-decl name='__uint16_t' type-id='8efea9e5' id='253c2d2a'/> + <typedef-decl name='__int64_t' type-id='bd54fe1a' id='0c9942d2'/> + <qualified-type-def type-id='c19b74c3' const='yes' id='12373e33'/> + <pointer-type-def type-id='12373e33' size-in-bits='64' id='c5f6c15b'/> + <qualified-type-def type-id='80f4b756' const='yes' id='b99c00c9'/> + <pointer-type-def type-id='b99c00c9' size-in-bits='64' id='13956559'/> + <qualified-type-def type-id='23bd8cb5' const='yes' id='75f7b0c5'/> + <pointer-type-def type-id='75f7b0c5' size-in-bits='64' id='a3eb883d'/> + <qualified-type-def type-id='3ff5601b' const='yes' id='922df12b'/> + <pointer-type-def type-id='922df12b' size-in-bits='64' id='1f526493'/> + <qualified-type-def type-id='9da381c4' const='yes' id='f07b7694'/> + <pointer-type-def type-id='f07b7694' size-in-bits='64' id='505bed1a'/> + <qualified-type-def type-id='ee31ee44' const='yes' id='721c32d4'/> + <pointer-type-def type-id='721c32d4' size-in-bits='64' id='a06445da'/> + <qualified-type-def type-id='22cce67b' const='yes' id='d2816df0'/> + <pointer-type-def type-id='d2816df0' size-in-bits='64' id='3bbfee2e'/> + <qualified-type-def type-id='d8bf0010' const='yes' id='a9125480'/> + <pointer-type-def type-id='a9125480' size-in-bits='64' id='d1db479e'/> + <qualified-type-def type-id='149c6638' const='yes' id='b01a5ac8'/> + <pointer-type-def type-id='b01a5ac8' size-in-bits='64' id='1b7d11c6'/> + <qualified-type-def type-id='8f92235e' const='yes' id='b9930aae'/> + <pointer-type-def type-id='b9930aae' size-in-bits='64' id='a6798dcc'/> + <qualified-type-def type-id='9c313c2d' const='yes' id='c3b7ba7d'/> + <pointer-type-def type-id='c3b7ba7d' size-in-bits='64' id='713a56f5'/> + <qualified-type-def type-id='b96825af' const='yes' id='2b61797f'/> + <pointer-type-def type-id='2b61797f' size-in-bits='64' id='9f7200cf'/> + <pointer-type-def type-id='eaa32e2f' size-in-bits='64' id='63e171df'/> + <function-decl name='nvlist_alloc' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='857bb57e'/> + <parameter type-id='3502e3ff'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_dup' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='22cce67b'/> + <parameter type-id='857bb57e'/> + <parameter type-id='95e97e5e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_boolean_value' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='c19b74c3'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_byte' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='d8bf0010'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int8' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='ee31ee44'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint8' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='b96825af'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int16' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='23bd8cb5'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint16' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='149c6638'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int32' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='3ff5601b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint32' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='8f92235e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9da381c4'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint64' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9c313c2d'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_string' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='22cce67b'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_boolean_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='c5f6c15b'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_byte_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='d1db479e'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int8_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='a06445da'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint8_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='9f7200cf'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int16_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='a3eb883d'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint16_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='1b7d11c6'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int32_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='1f526493'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint32_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='a6798dcc'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_int64_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='505bed1a'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_uint64_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='713a56f5'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_string_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='13956559'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_add_nvlist_array' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='3bbfee2e'/> + <parameter type-id='3502e3ff'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_remove_all' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='nvlist_lookup_nvlist' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='5ce45b60'/> + <parameter type-id='80f4b756'/> + <parameter type-id='857bb57e'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='strcmp' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='80f4b756'/> + <parameter type-id='80f4b756'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzbe_nvlist_get' mangled-name='lzbe_nvlist_get' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_nvlist_get'> + <parameter type-id='80f4b756' name='pool'/> + <parameter type-id='80f4b756' name='key'/> + <parameter type-id='63e171df' name='ptr'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzbe_nvlist_set' mangled-name='lzbe_nvlist_set' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_nvlist_set'> + <parameter type-id='80f4b756' name='pool'/> + <parameter type-id='80f4b756' name='key'/> + <parameter type-id='eaa32e2f' name='ptr'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzbe_nvlist_free' mangled-name='lzbe_nvlist_free' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_nvlist_free'> + <parameter type-id='eaa32e2f' name='ptr'/> + <return type-id='48b5725f'/> + </function-decl> + <function-decl name='lzbe_add_pair' mangled-name='lzbe_add_pair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_add_pair'> + <parameter type-id='eaa32e2f' name='ptr'/> + <parameter type-id='80f4b756' name='key'/> + <parameter type-id='80f4b756' name='type'/> + <parameter type-id='eaa32e2f' name='value'/> + <parameter type-id='b59d7dce' name='size'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='lzbe_remove_pair' mangled-name='lzbe_remove_pair' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_remove_pair'> + <parameter type-id='eaa32e2f' name='ptr'/> + <parameter type-id='80f4b756' name='key'/> + <return type-id='95e97e5e'/> + </function-decl> + </abi-instr> + <abi-instr address-size='64' path='lib/libzfsbootenv/lzbe_util.c' language='LANG_C99'> + <function-decl name='nvlist_print' visibility='default' binding='global' size-in-bits='64'> + <parameter type-id='822cd80b'/> + <parameter type-id='5ce45b60'/> + <return type-id='48b5725f'/> + </function-decl> <function-decl name='lzbe_bootenv_print' mangled-name='lzbe_bootenv_print' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='lzbe_bootenv_print'> <parameter type-id='80f4b756' name='pool'/> <parameter type-id='80f4b756' name='nvlist'/> diff --git a/lib/libzfsbootenv/lzbe_device.c b/lib/libzfsbootenv/lzbe_device.c index 39e33324b315..894471a9bf35 100644 --- a/lib/libzfsbootenv/lzbe_device.c +++ b/lib/libzfsbootenv/lzbe_device.c @@ -74,6 +74,7 @@ lzbe_set_boot_device(const char *pool, lzbe_flags_t flag, const char *device) /* version is mandatory */ fnvlist_add_uint64(nv, BOOTENV_VERSION, VB_NVLIST); + rv = 0; /* * If device name is empty, remove boot device configuration. */ @@ -95,8 +96,8 @@ lzbe_set_boot_device(const char *pool, lzbe_flags_t flag, const char *device) rv = ENOMEM; } } - - rv = zpool_set_bootenv(zphdl, nv); + if (rv == 0) + rv = zpool_set_bootenv(zphdl, nv); if (rv != 0) fprintf(stderr, "%s\n", libzfs_error_description(hdl)); @@ -115,7 +116,7 @@ lzbe_get_boot_device(const char *pool, char **device) libzfs_handle_t *hdl; zpool_handle_t *zphdl; nvlist_t *nv; - char *val; + const char *val; int rv = -1; if (pool == NULL || *pool == '\0' || device == NULL) @@ -139,14 +140,13 @@ lzbe_get_boot_device(const char *pool, char **device) * we only do need dataset name. */ if (strncmp(val, "zfs:", 4) == 0) { - val += 4; - val = strdup(val); - if (val != NULL) { - size_t len = strlen(val); - - if (val[len - 1] == ':') - val[len - 1] = '\0'; - *device = val; + char *tmp = strdup(val + 4); + if (tmp != NULL) { + size_t len = strlen(tmp); + + if (tmp[len - 1] == ':') + tmp[len - 1] = '\0'; + *device = tmp; } else { rv = ENOMEM; } diff --git a/lib/libzpool/Makefile.am b/lib/libzpool/Makefile.am index eaa920e56106..42f3404db5a9 100644 --- a/lib/libzpool/Makefile.am +++ b/lib/libzpool/Makefile.am @@ -43,6 +43,7 @@ nodist_libzpool_la_SOURCES = \ module/os/linux/zfs/arc_os.c \ module/os/linux/zfs/trace.c \ module/os/linux/zfs/vdev_file.c \ + module/os/linux/zfs/vdev_label_os.c \ module/os/linux/zfs/zfs_debug.c \ module/os/linux/zfs/zfs_racct.c \ module/os/linux/zfs/zfs_znode.c \ @@ -74,9 +75,11 @@ nodist_libzpool_la_SOURCES = \ module/zfs/bptree.c \ module/zfs/bqueue.c \ module/zfs/btree.c \ + module/zfs/brt.c \ module/zfs/dbuf.c \ module/zfs/dbuf_stats.c \ module/zfs/ddt.c \ + module/zfs/ddt_stats.c \ module/zfs/ddt_zap.c \ module/zfs/dmu.c \ module/zfs/dmu_diff.c \ @@ -118,10 +121,9 @@ nodist_libzpool_la_SOURCES = \ module/zfs/refcount.c \ module/zfs/rrwlock.c \ module/zfs/sa.c \ - module/zfs/sha256.c \ + module/zfs/sha2_zfs.c \ module/zfs/skein_zfs.c \ module/zfs/spa.c \ - module/zfs/spa_boot.c \ module/zfs/spa_checkpoint.c \ module/zfs/spa_config.c \ module/zfs/spa_errlog.c \ @@ -135,7 +137,6 @@ nodist_libzpool_la_SOURCES = \ module/zfs/uberblock.c \ module/zfs/unique.c \ module/zfs/vdev.c \ - module/zfs/vdev_cache.c \ module/zfs/vdev_draid.c \ module/zfs/vdev_draid_rand.c \ module/zfs/vdev_indirect.c \ diff --git a/lib/libzpool/kernel.c b/lib/libzpool/kernel.c index 05c278f91940..ffad7fc02bc9 100644 --- a/lib/libzpool/kernel.c +++ b/lib/libzpool/kernel.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -31,6 +31,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <limits.h> #include <libzutil.h> #include <sys/crypto/icp.h> #include <sys/processor.h> @@ -205,6 +206,15 @@ mutex_enter(kmutex_t *mp) } int +mutex_enter_check_return(kmutex_t *mp) +{ + int error = pthread_mutex_lock(&mp->m_lock); + if (error == 0) + mp->m_owner = pthread_self(); + return (error); +} + +int mutex_tryenter(kmutex_t *mp) { int error = pthread_mutex_trylock(&mp->m_lock); @@ -769,10 +779,8 @@ random_get_pseudo_bytes(uint8_t *ptr, size_t len) int ddi_strtoull(const char *str, char **nptr, int base, u_longlong_t *result) { - (void) nptr; - char *end; - - *result = strtoull(str, &end, base); + errno = 0; + *result = strtoull(str, nptr, base); if (*result == 0) return (errno); return (0); @@ -956,6 +964,35 @@ kmem_asprintf(const char *fmt, ...) return (buf); } +/* + * kmem_scnprintf() will return the number of characters that it would have + * printed whenever it is limited by value of the size variable, rather than + * the number of characters that it did print. This can cause misbehavior on + * subsequent uses of the return value, so we define a safe version that will + * return the number of characters actually printed, minus the NULL format + * character. Subsequent use of this by the safe string functions is safe + * whether it is snprintf(), strlcat() or strlcpy(). + */ +int +kmem_scnprintf(char *restrict str, size_t size, const char *restrict fmt, ...) +{ + int n; + va_list ap; + + /* Make the 0 case a no-op so that we do not return -1 */ + if (size == 0) + return (0); + + va_start(ap, fmt); + n = vsnprintf(str, size, fmt, ap); + va_end(ap); + + if (n >= size) + n = size - 1; + + return (n); +} + zfs_file_t * zfs_onexit_fd_hold(int fd, minor_t *minorp) { @@ -972,7 +1009,7 @@ zfs_onexit_fd_rele(zfs_file_t *fp) int zfs_onexit_add_cb(minor_t minor, void (*func)(void *), void *data, - uint64_t *action_handle) + uintptr_t *action_handle) { (void) minor, (void) func, (void) data, (void) action_handle; return (0); diff --git a/lib/libzpool/taskq.c b/lib/libzpool/taskq.c index 2531b341f442..99a181ec3c93 100644 --- a/lib/libzpool/taskq.c +++ b/lib/libzpool/taskq.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -276,7 +276,7 @@ taskq_create(const char *name, int nthreads, pri_t pri, cv_init(&tq->tq_dispatch_cv, NULL, CV_DEFAULT, NULL); cv_init(&tq->tq_wait_cv, NULL, CV_DEFAULT, NULL); cv_init(&tq->tq_maxalloc_cv, NULL, CV_DEFAULT, NULL); - (void) strncpy(tq->tq_name, name, TASKQ_NAMELEN); + (void) strlcpy(tq->tq_name, name, sizeof (tq->tq_name)); tq->tq_flags = flags | TASKQ_ACTIVE; tq->tq_active = nthreads; tq->tq_nthreads = nthreads; @@ -319,7 +319,9 @@ taskq_destroy(taskq_t *tq) tq->tq_minalloc = 0; while (tq->tq_nalloc != 0) { ASSERT(tq->tq_freelist != NULL); - task_free(tq, task_alloc(tq, KM_SLEEP)); + taskq_ent_t *tqent_nexttq = tq->tq_freelist->tqent_next; + task_free(tq, tq->tq_freelist); + tq->tq_freelist = tqent_nexttq; } mutex_exit(&tq->tq_lock); @@ -335,6 +337,36 @@ taskq_destroy(taskq_t *tq) kmem_free(tq, sizeof (taskq_t)); } +/* + * Create a taskq with a specified number of pool threads. Allocate + * and return an array of nthreads kthread_t pointers, one for each + * thread in the pool. The array is not ordered and must be freed + * by the caller. + */ +taskq_t * +taskq_create_synced(const char *name, int nthreads, pri_t pri, + int minalloc, int maxalloc, uint_t flags, kthread_t ***ktpp) +{ + taskq_t *tq; + kthread_t **kthreads = kmem_zalloc(sizeof (*kthreads) * nthreads, + KM_SLEEP); + + (void) pri; (void) minalloc; (void) maxalloc; + + flags &= ~(TASKQ_DYNAMIC | TASKQ_THREADS_CPU_PCT | TASKQ_DC_BATCH); + + tq = taskq_create(name, nthreads, minclsyspri, nthreads, INT_MAX, + flags | TASKQ_PREPOPULATE); + VERIFY(tq != NULL); + VERIFY(tq->tq_nthreads == nthreads); + + for (int i = 0; i < nthreads; i++) { + kthreads[i] = tq->tq_threadlist[i]; + } + *ktpp = kthreads; + return (tq); +} + int taskq_member(taskq_t *tq, kthread_t *t) { diff --git a/lib/libzpool/util.c b/lib/libzpool/util.c index 9a6326e425ff..b9503d4e56d0 100644 --- a/lib/libzpool/util.c +++ b/lib/libzpool/util.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -65,7 +65,7 @@ show_vdev_stats(const char *desc, const char *ctype, nvlist_t *nv, int indent) if (desc != NULL) { const char *suffix = ""; - char *bias = NULL; + const char *bias = NULL; char bias_suffix[32]; (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_IS_LOG, &is_log); @@ -113,12 +113,13 @@ show_vdev_stats(const char *desc, const char *ctype, nvlist_t *nv, int indent) for (c = 0; c < children; c++) { nvlist_t *cnv = child[c]; - char *cname = NULL, *tname; + const char *cname = NULL; + char *tname; uint64_t np; int len; if (nvlist_lookup_string(cnv, ZPOOL_CONFIG_PATH, &cname) && nvlist_lookup_string(cnv, ZPOOL_CONFIG_TYPE, &cname)) - cname = (char *)"<unknown>"; + cname = "<unknown>"; len = strlen(cname) + 2; tname = umem_zalloc(len, UMEM_NOFAIL); (void) strlcpy(tname, cname, len); @@ -133,7 +134,7 @@ void show_pool_stats(spa_t *spa) { nvlist_t *config, *nvroot; - char *name; + const char *name; VERIFY(spa_get_stats(spa_name(spa), &config, NULL, 0) == 0); @@ -174,12 +175,13 @@ set_global_var_parse_kv(const char *arg, char **k_out, u_longlong_t *v_out) goto err_free; } - *k_out = k; + *k_out = strdup(k); *v_out = val; + free(d); return (0); err_free: - free(k); + free(d); return (err); } @@ -228,13 +230,14 @@ set_global_var(char const *arg) fprintf(stderr, "Failed to open libzpool.so to set global " "variable\n"); ret = EIO; - goto out_dlclose; + goto out_free; } ret = 0; out_dlclose: dlclose(zpoolhdl); +out_free: free(varname); out_ret: return (ret); @@ -259,7 +262,9 @@ pool_active(void *unused, const char *name, uint64_t guid, boolean_t *isactive) (void) unused, (void) guid; zfs_iocparm_t zp; zfs_cmd_t *zc = NULL; +#ifdef ZFS_LEGACY_SUPPORT zfs_cmd_legacy_t *zcl = NULL; +#endif unsigned long request; int ret; @@ -294,6 +299,7 @@ pool_active(void *unused, const char *name, uint64_t guid, boolean_t *isactive) umem_free(zc, sizeof (zfs_cmd_t)); break; +#ifdef ZFS_LEGACY_SUPPORT case ZFS_IOCVER_LEGACY: zcl = umem_zalloc(sizeof (zfs_cmd_legacy_t), UMEM_NOFAIL); @@ -309,6 +315,7 @@ pool_active(void *unused, const char *name, uint64_t guid, boolean_t *isactive) umem_free(zcl, sizeof (zfs_cmd_legacy_t)); break; +#endif default: fprintf(stderr, "unrecognized zfs ioctl version %d", ver); exit(1); @@ -349,7 +356,7 @@ pool_active(void *unused, const char *name, uint64_t guid, } #endif -const pool_config_ops_t libzpool_config_ops = { +pool_config_ops_t libzpool_config_ops = { .pco_refresh_config = refresh_config, .pco_pool_active = pool_active, }; diff --git a/lib/libzutil/Makefile.am b/lib/libzutil/Makefile.am index ecdf940508b2..519906235f7f 100644 --- a/lib/libzutil/Makefile.am +++ b/lib/libzutil/Makefile.am @@ -17,6 +17,7 @@ libzutil_la_SOURCES = \ if BUILD_LINUX libzutil_la_SOURCES += \ + %D%/os/linux/zutil_setproctitle.c \ %D%/os/linux/zutil_device_path_os.c \ %D%/os/linux/zutil_import_os.c endif diff --git a/lib/libzutil/os/freebsd/zutil_device_path_os.c b/lib/libzutil/os/freebsd/zutil_device_path_os.c index f93ab9ad7538..9c67d3af085a 100644 --- a/lib/libzutil/os/freebsd/zutil_device_path_os.c +++ b/lib/libzutil/os/freebsd/zutil_device_path_os.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libzutil/os/freebsd/zutil_import_os.c b/lib/libzutil/os/freebsd/zutil_import_os.c index da9a7ded936a..049710d3985f 100644 --- a/lib/libzutil/os/freebsd/zutil_import_os.c +++ b/lib/libzutil/os/freebsd/zutil_import_os.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -250,7 +250,24 @@ zfs_dev_flush(int fd) } void +update_vdev_config_dev_sysfs_path(nvlist_t *nv, const char *path, + const char *key) +{ + (void) nv; + (void) path; + (void) key; +} + +void update_vdevs_config_dev_sysfs_path(nvlist_t *config) { (void) config; } + +int +zpool_disk_wait(const char *path) +{ + + (void) path; + return (ENOTSUP); +} diff --git a/lib/libzutil/os/linux/zutil_device_path_os.c b/lib/libzutil/os/linux/zutil_device_path_os.c index cfd4bfbf1e2c..900d5e5bacd2 100644 --- a/lib/libzutil/os/linux/zutil_device_path_os.c +++ b/lib/libzutil/os/linux/zutil_device_path_os.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -273,7 +273,6 @@ zfs_get_pci_slots_sys_path(const char *dev_name) free(address2); if (asprintf(&path, "/sys/bus/pci/slots/%s", ep->d_name) == -1) { - free(tmp); continue; } break; @@ -345,6 +344,8 @@ zfs_get_enclosure_sysfs_path(const char *dev_name) if (strstr(ep->d_name, "enclosure_device") == NULL) continue; + if (tmp2 != NULL) + free(tmp2); if (asprintf(&tmp2, "%s/%s", tmp1, ep->d_name) == -1) { tmp2 = NULL; break; @@ -373,14 +374,13 @@ zfs_get_enclosure_sysfs_path(const char *dev_name) if (tmp3 == NULL) break; + if (path != NULL) + free(path); if (asprintf(&path, "/sys/class/%s", tmp3) == -1) { /* If asprintf() fails, 'path' is undefined */ path = NULL; break; } - - if (path == NULL) - break; } end: @@ -428,7 +428,6 @@ dm_get_underlying_path(const char *dm_name) char *tmp = NULL; char *path = NULL; char *dev_str; - int size; char *first_path = NULL; char *enclosure_path; @@ -450,7 +449,7 @@ dm_get_underlying_path(const char *dm_name) else dev_str = tmp; - if ((size = asprintf(&tmp, "/sys/block/%s/slaves/", dev_str)) == -1) { + if (asprintf(&tmp, "/sys/block/%s/slaves/", dev_str) == -1) { tmp = NULL; goto end; } @@ -479,8 +478,7 @@ dm_get_underlying_path(const char *dm_name) if (!enclosure_path) continue; - if ((size = asprintf( - &path, "/dev/%s", ep->d_name)) == -1) + if (asprintf(&path, "/dev/%s", ep->d_name) == -1) path = NULL; free(enclosure_path); break; @@ -499,7 +497,7 @@ end: * enclosure devices. Throw up out hands and return the first * underlying path. */ - if ((size = asprintf(&path, "/dev/%s", first_path)) == -1) + if (asprintf(&path, "/dev/%s", first_path) == -1) path = NULL; } diff --git a/lib/libzutil/os/linux/zutil_import_os.c b/lib/libzutil/os/linux/zutil_import_os.c index 85f367237996..bb91dec5acff 100644 --- a/lib/libzutil/os/linux/zutil_import_os.c +++ b/lib/libzutil/os/linux/zutil_import_os.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -168,27 +168,19 @@ zpool_open_func(void *arg) * Add additional entries for paths described by this label. */ if (rn->rn_labelpaths) { - char *path = NULL; - char *devid = NULL; - char *env = NULL; + const char *path = NULL; + const char *devid = NULL; rdsk_node_t *slice; avl_index_t where; - int timeout; int error; if (label_paths(rn->rn_hdl, rn->rn_config, &path, &devid)) return; - env = getenv("ZPOOL_IMPORT_UDEV_TIMEOUT_MS"); - if ((env == NULL) || sscanf(env, "%d", &timeout) != 1 || - timeout < 0) { - timeout = DISK_LABEL_WAIT; - } - /* * Allow devlinks to stabilize so all paths are available. */ - zpool_label_disk_wait(rn->rn_name, timeout); + zpool_disk_wait(rn->rn_name); if (path != NULL) { slice = zutil_alloc(hdl, sizeof (rdsk_node_t)); @@ -582,9 +574,8 @@ zfs_device_get_physical(struct udev_device *dev, char *bufptr, size_t buflen) * Wait up to timeout_ms for udev to set up the device node. The device is * considered ready when libudev determines it has been initialized, all of * the device links have been verified to exist, and it has been allowed to - * settle. At this point the device the device can be accessed reliably. - * Depending on the complexity of the udev rules this process could take - * several seconds. + * settle. At this point the device can be accessed reliably. Depending on + * the complexity of the udev rules this process could take several seconds. */ int zpool_label_disk_wait(const char *path, int timeout_ms) @@ -684,6 +675,20 @@ zpool_label_disk_wait(const char *path, int timeout_ms) } /* + * Simplified version of zpool_label_disk_wait() where we wait for a device + * to appear using the default timeouts. + */ +int +zpool_disk_wait(const char *path) +{ + int timeout; + timeout = zpool_getenv_int("ZPOOL_IMPORT_UDEV_TIMEOUT_MS", + DISK_LABEL_WAIT); + + return (zpool_label_disk_wait(path, timeout)); +} + +/* * Encode the persistent devices strings * used for the vdev disk label */ @@ -767,20 +772,37 @@ no_dev: * Rescan the enclosure sysfs path for turning on enclosure LEDs and store it * in the nvlist * (if applicable). Like: * vdev_enc_sysfs_path: '/sys/class/enclosure/11:0:1:0/SLOT 4' + * + * If an old path was in the nvlist, and the rescan can not find a new path, + * then keep the old path, since the disk may have been removed. + * + * path: The vdev path (value from ZPOOL_CONFIG_PATH) + * key: The nvlist_t name (like ZPOOL_CONFIG_VDEV_ENC_SYSFS_PATH) */ -static void -update_vdev_config_dev_sysfs_path(nvlist_t *nv, char *path) +void +update_vdev_config_dev_sysfs_path(nvlist_t *nv, const char *path, + const char *key) { char *upath, *spath; + const char *oldpath = NULL; + + (void) nvlist_lookup_string(nv, key, &oldpath); /* Add enclosure sysfs path (if disk is in an enclosure). */ upath = zfs_get_underlying_path(path); spath = zfs_get_enclosure_sysfs_path(upath); if (spath) { - nvlist_add_string(nv, ZPOOL_CONFIG_VDEV_ENC_SYSFS_PATH, spath); + (void) nvlist_add_string(nv, key, spath); } else { - nvlist_remove_all(nv, ZPOOL_CONFIG_VDEV_ENC_SYSFS_PATH); + /* + * We couldn't dynamically scan the disk's enclosure sysfs path. + * This could be because the disk went away. If there's an old + * enclosure sysfs path in the nvlist, then keep using it. + */ + if (!oldpath) { + (void) nvlist_remove_all(nv, key); + } } free(upath); @@ -795,12 +817,13 @@ sysfs_path_pool_vdev_iter_f(void *hdl_data, nvlist_t *nv, void *data) { (void) hdl_data, (void) data; - char *path = NULL; + const char *path = NULL; if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) != 0) return (1); /* Rescan our enclosure sysfs path for this vdev */ - update_vdev_config_dev_sysfs_path(nv, path); + update_vdev_config_dev_sysfs_path(nv, path, + ZPOOL_CONFIG_VDEV_ENC_SYSFS_PATH); return (0); } @@ -841,7 +864,7 @@ void update_vdev_config_dev_strs(nvlist_t *nv) { vdev_dev_strs_t vds; - char *env, *type, *path; + const char *env, *type, *path; uint64_t wholedisk = 0; /* @@ -889,7 +912,8 @@ update_vdev_config_dev_strs(nvlist_t *nv) (void) nvlist_add_string(nv, ZPOOL_CONFIG_PHYS_PATH, vds.vds_devphys); } - update_vdev_config_dev_sysfs_path(nv, path); + update_vdev_config_dev_sysfs_path(nv, path, + ZPOOL_CONFIG_VDEV_ENC_SYSFS_PATH); } else { /* Clear out any stale entries. */ (void) nvlist_remove_all(nv, ZPOOL_CONFIG_DEVID); diff --git a/lib/libzutil/os/linux/zutil_setproctitle.c b/lib/libzutil/os/linux/zutil_setproctitle.c new file mode 100644 index 000000000000..e63acceb4f8e --- /dev/null +++ b/lib/libzutil/os/linux/zutil_setproctitle.c @@ -0,0 +1,276 @@ +/* + * Copyright © 2013 Guillem Jover <guillem@hadrons.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <errno.h> +#include <stddef.h> +#include <stdarg.h> +#include <stdlib.h> +#include <stdio.h> +#include <err.h> +#include <unistd.h> +#include <string.h> +#include <sys/param.h> +#include <libzutil.h> + +static struct { + /* Original value. */ + const char *arg0; + + /* Title space available. */ + char *base, *end; + + /* Pointer to original nul character within base. */ + char *nul; + + boolean_t warned; + boolean_t reset; + int error; +} SPT; + +#define LIBBSD_IS_PATHNAME_SEPARATOR(c) ((c) == '/') +#define SPT_MAXTITLE 255 + +extern const char *__progname; + +static const char * +getprogname(void) +{ + return (__progname); +} + +static void +setprogname(const char *progname) +{ + size_t i; + + for (i = strlen(progname); i > 0; i--) { + if (LIBBSD_IS_PATHNAME_SEPARATOR(progname[i - 1])) { + __progname = progname + i; + return; + } + } + __progname = progname; +} + + +static inline size_t +spt_min(size_t a, size_t b) +{ + return ((a < b) ? a : b); +} + +static int +spt_copyenv(int envc, char *envp[]) +{ + char **envcopy; + char *eq; + int envsize; + int i, error = 0; + + if (environ != envp) + return (0); + + /* + * Make a copy of the old environ array of pointers, in case + * clearenv() or setenv() is implemented to free the internal + * environ array, because we will need to access the old environ + * contents to make the new copy. + */ + envsize = (envc + 1) * sizeof (char *); + envcopy = malloc(envsize); + if (envcopy == NULL) + return (errno); + memcpy(envcopy, envp, envsize); + + environ = NULL; + + for (i = 0; envcopy[i]; i++) { + eq = strchr(envcopy[i], '='); + if (eq == NULL) + continue; + + *eq = '\0'; + if (setenv(envcopy[i], eq + 1, 1) < 0) + error = errno; + *eq = '='; + + if (error) { + clearenv(); + environ = envp; + free(envcopy); + return (error); + } + } + + /* + * Dispose of the shallow copy, now that we've finished transfering + * the old environment. + */ + free(envcopy); + + return (0); +} + +static int +spt_copyargs(int argc, char *argv[]) +{ + char *tmp; + int i; + + for (i = 1; i < argc || (i >= argc && argv[i]); i++) { + if (argv[i] == NULL) + continue; + + tmp = strdup(argv[i]); + if (tmp == NULL) + return (errno); + + argv[i] = tmp; + } + + return (0); +} + +void +zfs_setproctitle_init(int argc, char *argv[], char *envp[]) +{ + char *base, *end, *nul, *tmp; + int i, envc, error; + + /* Try to make sure we got called with main() arguments. */ + if (argc < 0) + return; + + base = argv[0]; + if (base == NULL) + return; + + nul = base + strlen(base); + end = nul + 1; + + for (i = 0; i < argc || (i >= argc && argv[i]); i++) { + if (argv[i] == NULL || argv[i] != end) + continue; + + end = argv[i] + strlen(argv[i]) + 1; + } + + for (i = 0; envp[i]; i++) { + if (envp[i] != end) + continue; + + end = envp[i] + strlen(envp[i]) + 1; + } + envc = i; + + SPT.arg0 = strdup(argv[0]); + if (SPT.arg0 == NULL) { + SPT.error = errno; + return; + } + + tmp = strdup(getprogname()); + if (tmp == NULL) { + SPT.error = errno; + return; + } + setprogname(tmp); + + error = spt_copyenv(envc, envp); + if (error) { + SPT.error = error; + return; + } + + error = spt_copyargs(argc, argv); + if (error) { + SPT.error = error; + return; + } + + SPT.nul = nul; + SPT.base = base; + SPT.end = end; +} + +void +zfs_setproctitle(const char *fmt, ...) +{ + /* Use buffer in case argv[0] is passed. */ + char buf[SPT_MAXTITLE + 1]; + va_list ap; + char *nul; + int len; + if (SPT.base == NULL) { + if (!SPT.warned) { + warnx("setproctitle not initialized, please" + "call zfs_setproctitle_init()"); + SPT.warned = B_TRUE; + } + return; + } + + if (fmt) { + if (fmt[0] == '-') { + /* Skip program name prefix. */ + fmt++; + len = 0; + } else { + /* Print program name heading for grep. */ + snprintf(buf, sizeof (buf), "%s: ", getprogname()); + len = strlen(buf); + } + + va_start(ap, fmt); + len += vsnprintf(buf + len, sizeof (buf) - len, fmt, ap); + va_end(ap); + } else { + len = snprintf(buf, sizeof (buf), "%s", SPT.arg0); + } + + if (len <= 0) { + SPT.error = errno; + return; + } + + if (!SPT.reset) { + memset(SPT.base, 0, SPT.end - SPT.base); + SPT.reset = B_TRUE; + } else { + memset(SPT.base, 0, spt_min(sizeof (buf), SPT.end - SPT.base)); + } + + len = spt_min(len, spt_min(sizeof (buf), SPT.end - SPT.base) - 1); + memcpy(SPT.base, buf, len); + nul = SPT.base + len; + + if (nul < SPT.nul) { + *SPT.nul = '.'; + } else if (nul == SPT.nul && nul + 1 < SPT.end) { + *SPT.nul = ' '; + *++nul = '\0'; + } +} diff --git a/lib/libzutil/zutil_device_path.c b/lib/libzutil/zutil_device_path.c index 6a8c8869edf1..0425018e1022 100644 --- a/lib/libzutil/zutil_device_path.c +++ b/lib/libzutil/zutil_device_path.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libzutil/zutil_import.c b/lib/libzutil/zutil_import.c index 26fba2cadf74..06705ff4d9b4 100644 --- a/lib/libzutil/zutil_import.c +++ b/lib/libzutil/zutil_import.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -71,6 +71,30 @@ #include "zutil_import.h" +const char * +libpc_error_description(libpc_handle_t *hdl) +{ + if (hdl->lpc_desc[0] != '\0') + return (hdl->lpc_desc); + + switch (hdl->lpc_error) { + case LPC_BADCACHE: + return (dgettext(TEXT_DOMAIN, "invalid or missing cache file")); + case LPC_BADPATH: + return (dgettext(TEXT_DOMAIN, "must be an absolute path")); + case LPC_NOMEM: + return (dgettext(TEXT_DOMAIN, "out of memory")); + case LPC_EACCESS: + return (dgettext(TEXT_DOMAIN, "some devices require root " + "privileges")); + case LPC_UNKNOWN: + return (dgettext(TEXT_DOMAIN, "unknown error")); + default: + assert(hdl->lpc_error == 0); + return (dgettext(TEXT_DOMAIN, "no error")); + } +} + static __attribute__((format(printf, 2, 3))) void zutil_error_aux(libpc_handle_t *hdl, const char *fmt, ...) { @@ -85,28 +109,27 @@ zutil_error_aux(libpc_handle_t *hdl, const char *fmt, ...) } static void -zutil_verror(libpc_handle_t *hdl, const char *error, const char *fmt, +zutil_verror(libpc_handle_t *hdl, lpc_error_t error, const char *fmt, va_list ap) { char action[1024]; (void) vsnprintf(action, sizeof (action), fmt, ap); + hdl->lpc_error = error; if (hdl->lpc_desc_active) hdl->lpc_desc_active = B_FALSE; else hdl->lpc_desc[0] = '\0'; - if (hdl->lpc_printerr) { - if (hdl->lpc_desc[0] != '\0') - error = hdl->lpc_desc; - - (void) fprintf(stderr, "%s: %s\n", action, error); - } + if (hdl->lpc_printerr) + (void) fprintf(stderr, "%s: %s\n", action, + libpc_error_description(hdl)); } static __attribute__((format(printf, 3, 4))) int -zutil_error_fmt(libpc_handle_t *hdl, const char *error, const char *fmt, ...) +zutil_error_fmt(libpc_handle_t *hdl, lpc_error_t error, + const char *fmt, ...) { va_list ap; @@ -120,7 +143,7 @@ zutil_error_fmt(libpc_handle_t *hdl, const char *error, const char *fmt, ...) } static int -zutil_error(libpc_handle_t *hdl, const char *error, const char *msg) +zutil_error(libpc_handle_t *hdl, lpc_error_t error, const char *msg) { return (zutil_error_fmt(hdl, error, "%s", msg)); } @@ -128,7 +151,7 @@ zutil_error(libpc_handle_t *hdl, const char *error, const char *msg) static int zutil_no_memory(libpc_handle_t *hdl) { - zutil_error(hdl, EZFS_NOMEM, "internal error"); + zutil_error(hdl, LPC_NOMEM, "internal error"); exit(1); } @@ -210,7 +233,7 @@ fix_paths(libpc_handle_t *hdl, nvlist_t *nv, name_entry_t *names) uint_t c, children; uint64_t guid; name_entry_t *ne, *best; - char *path; + const char *path; if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, &child, &children) == 0) { @@ -474,15 +497,13 @@ get_configs(libpc_handle_t *hdl, pool_list_t *pl, boolean_t active_ok, uint_t i, nspares, nl2cache; boolean_t config_seen; uint64_t best_txg; - char *name, *hostname = NULL; + const char *name, *hostname = NULL; uint64_t guid; uint_t children = 0; nvlist_t **child = NULL; - uint_t holes; uint64_t *hole_array, max_id; uint_t c; boolean_t isactive; - uint64_t hostid; nvlist_t *nvl; boolean_t valid_top_config = B_FALSE; @@ -490,7 +511,8 @@ get_configs(libpc_handle_t *hdl, pool_list_t *pl, boolean_t active_ok, goto nomem; for (pe = pl->pools; pe != NULL; pe = pe->pe_next) { - uint64_t id, max_txg = 0; + uint64_t id, max_txg = 0, hostid = 0; + uint_t holes = 0; if (nvlist_alloc(&config, NV_UNIQUE_NAME, 0) != 0) goto nomem; @@ -569,8 +591,8 @@ get_configs(libpc_handle_t *hdl, pool_list_t *pl, boolean_t active_ok, * hostname (if available) */ uint64_t state, version; - char *comment = NULL; - char *compatibility = NULL; + const char *comment = NULL; + const char *compatibility = NULL; version = fnvlist_lookup_uint64(tmp, ZPOOL_CONFIG_VERSION); @@ -912,7 +934,6 @@ zpool_read_label_slow(int fd, nvlist_t **config, int *num_labels) vdev_phys_t *label; nvlist_t *expected_config = NULL; uint64_t expected_guid = 0, size; - int error; *config = NULL; @@ -920,8 +941,9 @@ zpool_read_label_slow(int fd, nvlist_t **config, int *num_labels) return (0); size = P2ALIGN_TYPED(statbuf.st_size, sizeof (vdev_label_t), uint64_t); - error = posix_memalign((void **)&label, PAGESIZE, sizeof (*label)); - if (error) + label = (vdev_phys_t *)umem_alloc_aligned(sizeof (*label), PAGESIZE, + UMEM_DEFAULT); + if (label == NULL) return (-1); for (l = 0; l < VDEV_LABELS; l++) { @@ -970,7 +992,7 @@ zpool_read_label_slow(int fd, nvlist_t **config, int *num_labels) if (num_labels != NULL) *num_labels = count; - free(label); + umem_free_aligned(label, sizeof (*label)); *config = expected_config; return (0); @@ -1001,9 +1023,9 @@ zpool_read_label(int fd, nvlist_t **config, int *num_labels) return (0); size = P2ALIGN_TYPED(statbuf.st_size, sizeof (vdev_label_t), uint64_t); - error = posix_memalign((void **)&labels, PAGESIZE, - VDEV_LABELS * sizeof (*labels)); - if (error) + labels = (vdev_phys_t *)umem_alloc_aligned( + VDEV_LABELS * sizeof (*labels), PAGESIZE, UMEM_DEFAULT); + if (labels == NULL) return (-1); memset(aiocbs, 0, sizeof (aiocbs)); @@ -1034,10 +1056,21 @@ zpool_read_label(int fd, nvlist_t **config, int *num_labels) case EINVAL: break; case EINPROGRESS: - // This shouldn't be possible to - // encounter, die if we do. + /* + * This shouldn't be possible to + * encounter, die if we do. + */ ASSERT(B_FALSE); zfs_fallthrough; + case EREMOTEIO: + /* + * May be returned by an NVMe device + * which is visible in /dev/ but due + * to a low-level format change, or + * other error, needs to be rescanned. + * Try the slow method. + */ + zfs_fallthrough; case EOPNOTSUPP: case ENOSYS: do_slow = B_TRUE; @@ -1056,7 +1089,7 @@ zpool_read_label(int fd, nvlist_t **config, int *num_labels) error = zpool_read_label_slow(fd, config, num_labels); saved_errno = errno; } - free(labels); + umem_free_aligned(labels, VDEV_LABELS * sizeof (*labels)); errno = saved_errno; return (error); } @@ -1105,7 +1138,7 @@ zpool_read_label(int fd, nvlist_t **config, int *num_labels) if (num_labels != NULL) *num_labels = count; - free(labels); + umem_free_aligned(labels, VDEV_LABELS * sizeof (*labels)); *config = expected_config; return (0); @@ -1139,12 +1172,12 @@ slice_cache_compare(const void *arg1, const void *arg2) static int label_paths_impl(libpc_handle_t *hdl, nvlist_t *nvroot, uint64_t pool_guid, - uint64_t vdev_guid, char **path, char **devid) + uint64_t vdev_guid, const char **path, const char **devid) { nvlist_t **child; uint_t c, children; uint64_t guid; - char *val; + const char *val; int error; if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN, @@ -1182,18 +1215,32 @@ label_paths_impl(libpc_handle_t *hdl, nvlist_t *nvroot, uint64_t pool_guid, * The returned pointers are only valid as long as label remains valid. */ int -label_paths(libpc_handle_t *hdl, nvlist_t *label, char **path, char **devid) +label_paths(libpc_handle_t *hdl, nvlist_t *label, const char **path, + const char **devid) { nvlist_t *nvroot; uint64_t pool_guid; uint64_t vdev_guid; + uint64_t state; *path = NULL; *devid = NULL; + if (nvlist_lookup_uint64(label, ZPOOL_CONFIG_GUID, &vdev_guid) != 0) + return (ENOENT); + + /* + * In case of spare or l2cache, we directly return path/devid from the + * label. + */ + if (!(nvlist_lookup_uint64(label, ZPOOL_CONFIG_POOL_STATE, &state)) && + (state == POOL_STATE_SPARE || state == POOL_STATE_L2CACHE)) { + (void) nvlist_lookup_string(label, ZPOOL_CONFIG_PATH, path); + (void) nvlist_lookup_string(label, ZPOOL_CONFIG_DEVID, devid); + return (0); + } if (nvlist_lookup_nvlist(label, ZPOOL_CONFIG_VDEV_TREE, &nvroot) || - nvlist_lookup_uint64(label, ZPOOL_CONFIG_POOL_GUID, &pool_guid) || - nvlist_lookup_uint64(label, ZPOOL_CONFIG_GUID, &vdev_guid)) + nvlist_lookup_uint64(label, ZPOOL_CONFIG_POOL_GUID, &pool_guid)) return (ENOENT); return (label_paths_impl(hdl, nvroot, pool_guid, vdev_guid, path, @@ -1243,18 +1290,18 @@ zpool_find_import_scan_dir(libpc_handle_t *hdl, pthread_mutex_t *lock, if (error == ENOENT) return (0); - zutil_error_aux(hdl, "%s", strerror(error)); - (void) zutil_error_fmt(hdl, EZFS_BADPATH, dgettext( - TEXT_DOMAIN, "cannot resolve path '%s'"), dir); + zutil_error_aux(hdl, "%s", zfs_strerror(error)); + (void) zutil_error_fmt(hdl, LPC_BADPATH, dgettext(TEXT_DOMAIN, + "cannot resolve path '%s'"), dir); return (error); } dirp = opendir(path); if (dirp == NULL) { error = errno; - zutil_error_aux(hdl, "%s", strerror(error)); - (void) zutil_error_fmt(hdl, EZFS_BADPATH, - dgettext(TEXT_DOMAIN, "cannot open '%s'"), path); + zutil_error_aux(hdl, "%s", zfs_strerror(error)); + (void) zutil_error_fmt(hdl, LPC_BADPATH, dgettext(TEXT_DOMAIN, + "cannot open '%s'"), path); return (error); } @@ -1314,9 +1361,9 @@ zpool_find_import_scan_path(libpc_handle_t *hdl, pthread_mutex_t *lock, goto out; } - zutil_error_aux(hdl, "%s", strerror(error)); - (void) zutil_error_fmt(hdl, EZFS_BADPATH, dgettext( - TEXT_DOMAIN, "cannot resolve path '%s'"), dir); + zutil_error_aux(hdl, "%s", zfs_strerror(error)); + (void) zutil_error_fmt(hdl, LPC_BADPATH, dgettext(TEXT_DOMAIN, + "cannot resolve path '%s'"), dir); goto out; } @@ -1352,8 +1399,8 @@ zpool_find_import_scan(libpc_handle_t *hdl, pthread_mutex_t *lock, if (error == ENOENT) continue; - zutil_error_aux(hdl, "%s", strerror(error)); - (void) zutil_error_fmt(hdl, EZFS_BADPATH, dgettext( + zutil_error_aux(hdl, "%s", zfs_strerror(error)); + (void) zutil_error_fmt(hdl, LPC_BADPATH, dgettext( TEXT_DOMAIN, "cannot resolve path '%s'"), dir[i]); goto error; } @@ -1451,7 +1498,7 @@ zpool_find_import_impl(libpc_handle_t *hdl, importargs_t *iarg, } if (iarg->poolname != NULL && !aux) { - char *pname; + const char *pname; matched = nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME, &pname) == 0 && @@ -1525,7 +1572,7 @@ static int discover_cached_paths(libpc_handle_t *hdl, nvlist_t *nv, avl_tree_t *cache, pthread_mutex_t *lock) { - char *path = NULL; + const char *path = NULL; ssize_t dl; uint_t children; nvlist_t **child; @@ -1542,12 +1589,21 @@ discover_cached_paths(libpc_handle_t *hdl, nvlist_t *nv, * our directory cache. */ if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) == 0) { - if ((dl = zfs_dirnamelen(path)) == -1) - path = (char *)"."; - else - path[dl] = '\0'; - return (zpool_find_import_scan_dir(hdl, lock, cache, - path, 0)); + int ret; + char c = '\0'; + if ((dl = zfs_dirnamelen(path)) == -1) { + path = "."; + } else { + c = path[dl]; + ((char *)path)[dl] = '\0'; + + } + ret = zpool_find_import_scan_dir(hdl, lock, cache, + path, 0); + if (c != '\0') + ((char *)path)[dl] = c; + + return (ret); } return (0); } @@ -1566,24 +1622,24 @@ zpool_find_import_cached(libpc_handle_t *hdl, importargs_t *iarg) nvlist_t *raw, *src, *dst; nvlist_t *pools; nvpair_t *elem; - char *name; + const char *name; uint64_t this_guid; boolean_t active; verify(iarg->poolname == NULL || iarg->guid == 0); if ((fd = open(iarg->cachefile, O_RDONLY | O_CLOEXEC)) < 0) { - zutil_error_aux(hdl, "%s", strerror(errno)); - (void) zutil_error(hdl, EZFS_BADCACHE, - dgettext(TEXT_DOMAIN, "failed to open cache file")); + zutil_error_aux(hdl, "%s", zfs_strerror(errno)); + (void) zutil_error(hdl, LPC_BADCACHE, dgettext(TEXT_DOMAIN, + "failed to open cache file")); return (NULL); } if (fstat64(fd, &statbuf) != 0) { - zutil_error_aux(hdl, "%s", strerror(errno)); + zutil_error_aux(hdl, "%s", zfs_strerror(errno)); (void) close(fd); - (void) zutil_error(hdl, EZFS_BADCACHE, - dgettext(TEXT_DOMAIN, "failed to get size of cache file")); + (void) zutil_error(hdl, LPC_BADCACHE, dgettext(TEXT_DOMAIN, + "failed to get size of cache file")); return (NULL); } @@ -1595,8 +1651,7 @@ zpool_find_import_cached(libpc_handle_t *hdl, importargs_t *iarg) if (read(fd, buf, statbuf.st_size) != statbuf.st_size) { (void) close(fd); free(buf); - (void) zutil_error(hdl, EZFS_BADCACHE, - dgettext(TEXT_DOMAIN, + (void) zutil_error(hdl, LPC_BADCACHE, dgettext(TEXT_DOMAIN, "failed to read cache file contents")); return (NULL); } @@ -1605,8 +1660,7 @@ zpool_find_import_cached(libpc_handle_t *hdl, importargs_t *iarg) if (nvlist_unpack(buf, statbuf.st_size, &raw, 0) != 0) { free(buf); - (void) zutil_error(hdl, EZFS_BADCACHE, - dgettext(TEXT_DOMAIN, + (void) zutil_error(hdl, LPC_BADCACHE, dgettext(TEXT_DOMAIN, "invalid or corrupt cache file contents")); return (NULL); } @@ -1694,6 +1748,8 @@ zpool_find_import_cached(libpc_handle_t *hdl, importargs_t *iarg) * caller. */ nvpair_t *pair = nvlist_next_nvpair(nv, NULL); + if (pair == NULL) + continue; fnvlist_add_nvlist(pools, nvpair_name(pair), fnvpair_value_nvlist(pair)); @@ -1775,26 +1831,20 @@ zpool_find_import(libpc_handle_t *hdl, importargs_t *iarg) nvlist_t * -zpool_search_import(void *hdl, importargs_t *import, - const pool_config_ops_t *pco) +zpool_search_import(libpc_handle_t *hdl, importargs_t *import) { - libpc_handle_t handle = { 0 }; nvlist_t *pools = NULL; - handle.lpc_lib_handle = hdl; - handle.lpc_ops = pco; - handle.lpc_printerr = B_TRUE; - verify(import->poolname == NULL || import->guid == 0); if (import->cachefile != NULL) - pools = zpool_find_import_cached(&handle, import); + pools = zpool_find_import_cached(hdl, import); else - pools = zpool_find_import(&handle, import); + pools = zpool_find_import(hdl, import); if ((pools == NULL || nvlist_empty(pools)) && - handle.lpc_open_access_error && geteuid() != 0) { - (void) zutil_error(&handle, EZFS_EACESS, dgettext(TEXT_DOMAIN, + hdl->lpc_open_access_error && geteuid() != 0) { + (void) zutil_error(hdl, LPC_EACCESS, dgettext(TEXT_DOMAIN, "no pools found")); } @@ -1802,10 +1852,10 @@ zpool_search_import(void *hdl, importargs_t *import, } static boolean_t -pool_match(nvlist_t *cfg, char *tgt) +pool_match(nvlist_t *cfg, const char *tgt) { uint64_t v, guid = strtoull(tgt, NULL, 0); - char *s; + const char *s; if (guid != 0) { if (nvlist_lookup_uint64(cfg, ZPOOL_CONFIG_POOL_GUID, &v) == 0) @@ -1818,8 +1868,8 @@ pool_match(nvlist_t *cfg, char *tgt) } int -zpool_find_config(void *hdl, const char *target, nvlist_t **configp, - importargs_t *args, const pool_config_ops_t *pco) +zpool_find_config(libpc_handle_t *hdl, const char *target, nvlist_t **configp, + importargs_t *args) { nvlist_t *pools; nvlist_t *match = NULL; @@ -1828,12 +1878,15 @@ zpool_find_config(void *hdl, const char *target, nvlist_t **configp, int count = 0; char *targetdup = strdup(target); + if (targetdup == NULL) + return (ENOMEM); + *configp = NULL; if ((sepp = strpbrk(targetdup, "/@")) != NULL) *sepp = '\0'; - pools = zpool_search_import(hdl, args, pco); + pools = zpool_search_import(hdl, args); if (pools != NULL) { nvpair_t *elem = NULL; @@ -1869,6 +1922,104 @@ zpool_find_config(void *hdl, const char *target, nvlist_t **configp, return (0); } +/* Return if a vdev is a leaf vdev. Note: draid spares are leaf vdevs. */ +static boolean_t +vdev_is_leaf(nvlist_t *nv) +{ + uint_t children = 0; + nvlist_t **child; + + (void) nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, + &child, &children); + + return (children == 0); +} + +/* Return if a vdev is a leaf vdev and a real device (disk or file) */ +static boolean_t +vdev_is_real_leaf(nvlist_t *nv) +{ + const char *type = NULL; + if (!vdev_is_leaf(nv)) + return (B_FALSE); + + (void) nvlist_lookup_string(nv, ZPOOL_CONFIG_TYPE, &type); + if ((strcmp(type, VDEV_TYPE_DISK) == 0) || + (strcmp(type, VDEV_TYPE_FILE) == 0)) { + return (B_TRUE); + } + + return (B_FALSE); +} + +/* + * This function is called by our FOR_EACH_VDEV() macros. + * + * state: State machine status (stored inside of a (nvlist_t *)) + * nv: The current vdev nvlist_t we are iterating over. + * last_nv: The previous vdev nvlist_t we returned to the user in + * the last iteration of FOR_EACH_VDEV(). We use it + * to find the next vdev nvlist_t we should return. + * real_leaves_only: Only return leaf vdevs. + * + * Returns 1 if we found the next vdev nvlist_t for this iteration. 0 if + * we're still searching for it. + */ +static int +__for_each_vdev_macro_helper_func(void *state, nvlist_t *nv, void *last_nv, + boolean_t real_leaves_only) +{ + enum {FIRST_NV = 0, NEXT_IS_MATCH = 1, STOP_LOOKING = 2}; + + /* The very first entry in the NV list is a special case */ + if (*((nvlist_t **)state) == (nvlist_t *)FIRST_NV) { + if (real_leaves_only && !vdev_is_real_leaf(nv)) + return (0); + + *((nvlist_t **)last_nv) = nv; + *((nvlist_t **)state) = (nvlist_t *)STOP_LOOKING; + return (1); + } + + /* + * We came across our last_nv, meaning the next one is the one we + * want + */ + if (nv == *((nvlist_t **)last_nv)) { + /* Next iteration of this function will return the nvlist_t */ + *((nvlist_t **)state) = (nvlist_t *)NEXT_IS_MATCH; + return (0); + } + + /* + * We marked NEXT_IS_MATCH on the previous iteration, so this is the one + * we want. + */ + if (*(nvlist_t **)state == (nvlist_t *)NEXT_IS_MATCH) { + if (real_leaves_only && !vdev_is_real_leaf(nv)) + return (0); + + *((nvlist_t **)last_nv) = nv; + *((nvlist_t **)state) = (nvlist_t *)STOP_LOOKING; + return (1); + } + + return (0); +} + +int +for_each_vdev_macro_helper_func(void *state, nvlist_t *nv, void *last_nv) +{ + return (__for_each_vdev_macro_helper_func(state, nv, last_nv, B_FALSE)); +} + +int +for_each_real_leaf_vdev_macro_helper_func(void *state, nvlist_t *nv, + void *last_nv) +{ + return (__for_each_vdev_macro_helper_func(state, nv, last_nv, B_TRUE)); +} + /* * Internal function for iterating over the vdevs. * @@ -1887,7 +2038,7 @@ for_each_vdev_cb(void *zhp, nvlist_t *nv, pool_vdev_iter_f func, uint_t c, children; int ret = 0; int i; - char *type; + const char *type; const char *list[] = { ZPOOL_CONFIG_SPARES, @@ -1898,9 +2049,8 @@ for_each_vdev_cb(void *zhp, nvlist_t *nv, pool_vdev_iter_f func, if (nvlist_lookup_string(nv, ZPOOL_CONFIG_TYPE, &type) != 0) return (ret); - /* Don't run our function on root or indirect vdevs */ - if ((strcmp(type, VDEV_TYPE_ROOT) != 0) && - (strcmp(type, VDEV_TYPE_INDIRECT) != 0)) { + /* Don't run our function on indirect vdevs */ + if (strcmp(type, VDEV_TYPE_INDIRECT) != 0) { ret |= func(zhp, nv, data); } diff --git a/lib/libzutil/zutil_import.h b/lib/libzutil/zutil_import.h index 0108eb45c5cf..da7941fa5307 100644 --- a/lib/libzutil/zutil_import.h +++ b/lib/libzutil/zutil_import.h @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -28,28 +28,13 @@ #ifndef _LIBZUTIL_ZUTIL_IMPORT_H_ #define _LIBZUTIL_ZUTIL_IMPORT_H_ -#define EZFS_BADCACHE "invalid or missing cache file" -#define EZFS_BADPATH "must be an absolute path" -#define EZFS_NOMEM "out of memory" -#define EZFS_EACESS "some devices require root privileges" - #define IMPORT_ORDER_PREFERRED_1 1 #define IMPORT_ORDER_PREFERRED_2 2 #define IMPORT_ORDER_SCAN_OFFSET 10 #define IMPORT_ORDER_DEFAULT 100 -typedef struct libpc_handle { - boolean_t lpc_printerr; - boolean_t lpc_open_access_error; - boolean_t lpc_desc_active; - char lpc_desc[1024]; - const pool_config_ops_t *lpc_ops; - void *lpc_lib_handle; -} libpc_handle_t; - - -int label_paths(libpc_handle_t *hdl, nvlist_t *label, char **path, - char **devid); +int label_paths(libpc_handle_t *hdl, nvlist_t *label, const char **path, + const char **devid); int zpool_find_import_blkid(libpc_handle_t *hdl, pthread_mutex_t *lock, avl_tree_t **slice_cache); diff --git a/lib/libzutil/zutil_nicenum.c b/lib/libzutil/zutil_nicenum.c index 4dcac1f855ff..e05bcb40a8ce 100644 --- a/lib/libzutil/zutil_nicenum.c +++ b/lib/libzutil/zutil_nicenum.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * diff --git a/lib/libzutil/zutil_pool.c b/lib/libzutil/zutil_pool.c index 21dc1f9d9458..86460de3fc61 100644 --- a/lib/libzutil/zutil_pool.c +++ b/lib/libzutil/zutil_pool.c @@ -6,7 +6,7 @@ * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. + * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * @@ -28,6 +28,7 @@ #include <string.h> #include <sys/nvpair.h> #include <sys/fs/zfs.h> +#include <math.h> #include <libzutil.h> @@ -144,3 +145,33 @@ zpool_history_unpack(char *buf, uint64_t bytes_read, uint64_t *leftover, *leftover = bytes_read; return (0); } + +/* + * Floating point sleep(). Allows you to pass in a floating point value for + * seconds. + */ +void +fsleep(float sec) +{ + struct timespec req; + req.tv_sec = floor(sec); + req.tv_nsec = (sec - (float)req.tv_sec) * NANOSEC; + nanosleep(&req, NULL); +} + +/* + * Get environment variable 'env' and return it as an integer. + * If 'env' is not set, then return 'default_val' instead. + */ +int +zpool_getenv_int(const char *env, int default_val) +{ + char *str; + int val; + str = getenv(env); + if ((str == NULL) || sscanf(str, "%d", &val) != 1 || + val < 0) { + val = default_val; + } + return (val); +} |