mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-05-23 15:04:59 +03:00
nvlist: Add nvlist_snprintf() and zfs_dbgmsg_nvlist()
Add nvlist_snprintf() to print a nvlist to a buffer. This is basically the snprintf() version of dump_nvlist(). Along with that, add a zfs_dbgmsg_nvlist() to print out an nvlist to dbgmsg. This will aid in debugging. Reviewed-by: Alexander Motin <mav@FreeBSD.org> Signed-off-by: Tony Hutter <hutter2@llnl.gov> Closes #17215
This commit is contained in:
parent
ba03054c83
commit
8d1489735b
@ -267,6 +267,8 @@ _SYS_NVPAIR_H int nvlist_lookup_double(const nvlist_t *, const char *,
|
|||||||
double *);
|
double *);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
_SYS_NVPAIR_H int nvlist_snprintf(char *, size_t, nvlist_t *, int);
|
||||||
|
|
||||||
_SYS_NVPAIR_H int nvlist_lookup_nvpair(nvlist_t *, const char *, nvpair_t **);
|
_SYS_NVPAIR_H int nvlist_lookup_nvpair(nvlist_t *, const char *, nvpair_t **);
|
||||||
_SYS_NVPAIR_H int nvlist_lookup_nvpair_embedded_index(nvlist_t *, const char *,
|
_SYS_NVPAIR_H int nvlist_lookup_nvpair_embedded_index(nvlist_t *, const char *,
|
||||||
nvpair_t **, int *, const char **);
|
nvpair_t **, int *, const char **);
|
||||||
|
@ -39,6 +39,8 @@ extern "C" {
|
|||||||
#define FALSE 0
|
#define FALSE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <sys/nvpair.h>
|
||||||
|
|
||||||
extern int zfs_flags;
|
extern int zfs_flags;
|
||||||
extern int zfs_recover;
|
extern int zfs_recover;
|
||||||
extern int zfs_free_leak_on_eio;
|
extern int zfs_free_leak_on_eio;
|
||||||
@ -104,6 +106,24 @@ extern void zfs_panic_recover(const char *fmt, ...);
|
|||||||
extern void zfs_dbgmsg_init(void);
|
extern void zfs_dbgmsg_init(void);
|
||||||
extern void zfs_dbgmsg_fini(void);
|
extern void zfs_dbgmsg_fini(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When printing an nvlist, print one beginning line with the file/func/line
|
||||||
|
* number and the text "nvlist <var name>:" followed by all the nvlist lines
|
||||||
|
* without the file/fun/line number. This makes the nvlist lines easy to read.
|
||||||
|
*/
|
||||||
|
#define zfs_dbgmsg_nvlist(nv) \
|
||||||
|
if (zfs_dbgmsg_enable) { \
|
||||||
|
zfs_dbgmsg("nvlist "#nv":"); \
|
||||||
|
__zfs_dbgmsg_nvlist(nv); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define zfs_dbgmsg(...) \
|
||||||
|
if (zfs_dbgmsg_enable) \
|
||||||
|
__dprintf(B_FALSE, __FILE__, __func__, __LINE__, __VA_ARGS__)
|
||||||
|
|
||||||
|
|
||||||
|
extern void __zfs_dbgmsg_nvlist(nvlist_t *nv);
|
||||||
|
|
||||||
#ifndef _KERNEL
|
#ifndef _KERNEL
|
||||||
extern int dprintf_find_string(const char *string);
|
extern int dprintf_find_string(const char *string);
|
||||||
extern void zfs_dbgmsg_print(int fd, const char *tag);
|
extern void zfs_dbgmsg_print(int fd, const char *tag);
|
||||||
|
@ -196,6 +196,7 @@
|
|||||||
<elf-symbol name='nvlist_remove_all' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
<elf-symbol name='nvlist_remove_all' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||||
<elf-symbol name='nvlist_remove_nvpair' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
<elf-symbol name='nvlist_remove_nvpair' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||||
<elf-symbol name='nvlist_size' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
<elf-symbol name='nvlist_size' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||||
|
<elf-symbol name='nvlist_snprintf' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||||
<elf-symbol name='nvlist_unpack' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
<elf-symbol name='nvlist_unpack' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||||
<elf-symbol name='nvlist_xalloc' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
<elf-symbol name='nvlist_xalloc' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||||
<elf-symbol name='nvlist_xdup' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
<elf-symbol name='nvlist_xdup' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||||
@ -967,6 +968,13 @@
|
|||||||
<class-decl name='_IO_marker' is-struct='yes' visibility='default' is-declaration-only='yes' id='010ae0b9'/>
|
<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='_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'/>
|
<class-decl name='re_dfa_t' is-struct='yes' visibility='default' is-declaration-only='yes' id='b48d2441'/>
|
||||||
|
<function-decl name='nvlist_snprintf' mangled-name='nvlist_snprintf' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nvlist_snprintf'>
|
||||||
|
<parameter type-id='26a90f95'/>
|
||||||
|
<parameter type-id='b59d7dce'/>
|
||||||
|
<parameter type-id='5ce45b60'/>
|
||||||
|
<parameter type-id='95e97e5e'/>
|
||||||
|
<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'>
|
<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='5ce45b60'/>
|
||||||
<parameter type-id='dace003f'/>
|
<parameter type-id='dace003f'/>
|
||||||
@ -1126,12 +1134,6 @@
|
|||||||
<parameter type-id='7408d286'/>
|
<parameter type-id='7408d286'/>
|
||||||
<return type-id='95e97e5e'/>
|
<return type-id='95e97e5e'/>
|
||||||
</function-decl>
|
</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'>
|
<function-decl name='regexec' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='a431a9da'/>
|
<parameter type-id='a431a9da'/>
|
||||||
<parameter type-id='9d26089a'/>
|
<parameter type-id='9d26089a'/>
|
||||||
@ -1140,6 +1142,11 @@
|
|||||||
<parameter type-id='95e97e5e'/>
|
<parameter type-id='95e97e5e'/>
|
||||||
<return type-id='95e97e5e'/>
|
<return type-id='95e97e5e'/>
|
||||||
</function-decl>
|
</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='malloc' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='malloc' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='b59d7dce'/>
|
<parameter type-id='b59d7dce'/>
|
||||||
<return type-id='eaa32e2f'/>
|
<return type-id='eaa32e2f'/>
|
||||||
@ -1180,12 +1187,6 @@
|
|||||||
<parameter is-variadic='yes'/>
|
<parameter is-variadic='yes'/>
|
||||||
<return type-id='95e97e5e'/>
|
<return type-id='95e97e5e'/>
|
||||||
</function-decl>
|
</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'>
|
<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='b0c1ff8d' name='pctl'/>
|
||||||
<parameter type-id='822cd80b' name='fp'/>
|
<parameter type-id='822cd80b' name='fp'/>
|
||||||
@ -1398,11 +1399,6 @@
|
|||||||
<parameter type-id='b0c1ff8d' name='pctl'/>
|
<parameter type-id='b0c1ff8d' name='pctl'/>
|
||||||
<return type-id='48b5725f'/>
|
<return type-id='48b5725f'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
<function-decl name='dump_nvlist' mangled-name='dump_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dump_nvlist'>
|
|
||||||
<parameter type-id='5ce45b60' name='list'/>
|
|
||||||
<parameter type-id='95e97e5e' name='indent'/>
|
|
||||||
<return type-id='48b5725f'/>
|
|
||||||
</function-decl>
|
|
||||||
<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'>
|
<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='3fa542f0' name='nvp'/>
|
||||||
<parameter type-id='95e97e5e' name='ai'/>
|
<parameter type-id='95e97e5e' name='ai'/>
|
||||||
@ -1418,6 +1414,11 @@
|
|||||||
<parameter type-id='7d3cd834' name='ep'/>
|
<parameter type-id='7d3cd834' name='ep'/>
|
||||||
<return type-id='95e97e5e'/>
|
<return type-id='95e97e5e'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
|
<function-decl name='dump_nvlist' mangled-name='dump_nvlist' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dump_nvlist'>
|
||||||
|
<parameter type-id='5ce45b60' name='list'/>
|
||||||
|
<parameter type-id='95e97e5e' name='indent'/>
|
||||||
|
<return type-id='48b5725f'/>
|
||||||
|
</function-decl>
|
||||||
<function-type size-in-bits='64' id='9f88f76e'>
|
<function-type size-in-bits='64' id='9f88f76e'>
|
||||||
<parameter type-id='196db161'/>
|
<parameter type-id='196db161'/>
|
||||||
<parameter type-id='eaa32e2f'/>
|
<parameter type-id='eaa32e2f'/>
|
||||||
@ -2194,6 +2195,7 @@
|
|||||||
</data-member>
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
<typedef-decl name='stack_t' type-id='380f9954' id='ac5e685f'/>
|
<typedef-decl name='stack_t' type-id='380f9954' id='ac5e685f'/>
|
||||||
|
<typedef-decl name='unw_regnum_t' type-id='95e97e5e' id='c53620f0'/>
|
||||||
<class-decl name='unw_cursor' size-in-bits='8128' is-struct='yes' visibility='default' id='384a1f22'>
|
<class-decl name='unw_cursor' size-in-bits='8128' is-struct='yes' visibility='default' id='384a1f22'>
|
||||||
<data-member access='public' layout-offset-in-bits='0'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='opaque' type-id='dc70ec0b' visibility='default'/>
|
<var-decl name='opaque' type-id='dc70ec0b' visibility='default'/>
|
||||||
@ -2306,6 +2308,10 @@
|
|||||||
<parameter type-id='b59d7dce'/>
|
<parameter type-id='b59d7dce'/>
|
||||||
<return type-id='79a0948f'/>
|
<return type-id='79a0948f'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
|
<function-decl name='_Ux86_64_regname' visibility='default' binding='global' size-in-bits='64'>
|
||||||
|
<parameter type-id='c53620f0'/>
|
||||||
|
<return type-id='80f4b756'/>
|
||||||
|
</function-decl>
|
||||||
<function-decl name='_ULx86_64_init_local' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='_ULx86_64_init_local' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='3946e4d1'/>
|
<parameter type-id='3946e4d1'/>
|
||||||
<parameter type-id='2e408b96'/>
|
<parameter type-id='2e408b96'/>
|
||||||
|
@ -783,160 +783,6 @@ nvlist_prt(nvlist_t *nvl, nvlist_prtctl_t pctl)
|
|||||||
nvlist_print_with_indent(nvl, pctl);
|
nvlist_print_with_indent(nvl, pctl);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define NVP(elem, type, vtype, ptype, format) { \
|
|
||||||
vtype value; \
|
|
||||||
\
|
|
||||||
(void) nvpair_value_##type(elem, &value); \
|
|
||||||
(void) printf("%*s%s: " format "\n", indent, "", \
|
|
||||||
nvpair_name(elem), (ptype)value); \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define NVPA(elem, type, vtype, ptype, format) { \
|
|
||||||
uint_t i, count; \
|
|
||||||
vtype *value; \
|
|
||||||
\
|
|
||||||
(void) nvpair_value_##type(elem, &value, &count); \
|
|
||||||
for (i = 0; i < count; i++) { \
|
|
||||||
(void) printf("%*s%s[%d]: " format "\n", indent, "", \
|
|
||||||
nvpair_name(elem), i, (ptype)value[i]); \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Similar to nvlist_print() but handles arrays slightly differently.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
dump_nvlist(nvlist_t *list, int indent)
|
|
||||||
{
|
|
||||||
nvpair_t *elem = NULL;
|
|
||||||
boolean_t bool_value;
|
|
||||||
nvlist_t *nvlist_value;
|
|
||||||
nvlist_t **nvlist_array_value;
|
|
||||||
uint_t i, count;
|
|
||||||
|
|
||||||
if (list == NULL) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((elem = nvlist_next_nvpair(list, elem)) != NULL) {
|
|
||||||
switch (nvpair_type(elem)) {
|
|
||||||
case DATA_TYPE_BOOLEAN:
|
|
||||||
(void) printf("%*s%s\n", indent, "", nvpair_name(elem));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_BOOLEAN_VALUE:
|
|
||||||
(void) nvpair_value_boolean_value(elem, &bool_value);
|
|
||||||
(void) printf("%*s%s: %s\n", indent, "",
|
|
||||||
nvpair_name(elem), bool_value ? "true" : "false");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_BYTE:
|
|
||||||
NVP(elem, byte, uchar_t, int, "%u");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_INT8:
|
|
||||||
NVP(elem, int8, int8_t, int, "%d");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_UINT8:
|
|
||||||
NVP(elem, uint8, uint8_t, int, "%u");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_INT16:
|
|
||||||
NVP(elem, int16, int16_t, int, "%d");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_UINT16:
|
|
||||||
NVP(elem, uint16, uint16_t, int, "%u");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_INT32:
|
|
||||||
NVP(elem, int32, int32_t, long, "%ld");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_UINT32:
|
|
||||||
NVP(elem, uint32, uint32_t, ulong_t, "%lu");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_INT64:
|
|
||||||
NVP(elem, int64, int64_t, longlong_t, "%lld");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_UINT64:
|
|
||||||
NVP(elem, uint64, uint64_t, u_longlong_t, "%llu");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_STRING:
|
|
||||||
NVP(elem, string, const char *, const char *, "'%s'");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_BYTE_ARRAY:
|
|
||||||
NVPA(elem, byte_array, uchar_t, int, "%u");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_INT8_ARRAY:
|
|
||||||
NVPA(elem, int8_array, int8_t, int, "%d");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_UINT8_ARRAY:
|
|
||||||
NVPA(elem, uint8_array, uint8_t, int, "%u");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_INT16_ARRAY:
|
|
||||||
NVPA(elem, int16_array, int16_t, int, "%d");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_UINT16_ARRAY:
|
|
||||||
NVPA(elem, uint16_array, uint16_t, int, "%u");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_INT32_ARRAY:
|
|
||||||
NVPA(elem, int32_array, int32_t, long, "%ld");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_UINT32_ARRAY:
|
|
||||||
NVPA(elem, uint32_array, uint32_t, ulong_t, "%lu");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_INT64_ARRAY:
|
|
||||||
NVPA(elem, int64_array, int64_t, longlong_t, "%lld");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_UINT64_ARRAY:
|
|
||||||
NVPA(elem, uint64_array, uint64_t, u_longlong_t,
|
|
||||||
"%llu");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_STRING_ARRAY:
|
|
||||||
NVPA(elem, string_array, const char *, const char *,
|
|
||||||
"'%s'");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_NVLIST:
|
|
||||||
(void) nvpair_value_nvlist(elem, &nvlist_value);
|
|
||||||
(void) printf("%*s%s:\n", indent, "",
|
|
||||||
nvpair_name(elem));
|
|
||||||
dump_nvlist(nvlist_value, indent + 4);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_TYPE_NVLIST_ARRAY:
|
|
||||||
(void) nvpair_value_nvlist_array(elem,
|
|
||||||
&nvlist_array_value, &count);
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
(void) printf("%*s%s[%u]:\n", indent, "",
|
|
||||||
nvpair_name(elem), i);
|
|
||||||
dump_nvlist(nvlist_array_value[i], indent + 4);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
(void) printf(dgettext(TEXT_DOMAIN, "bad config type "
|
|
||||||
"%d for %s\n"), nvpair_type(elem),
|
|
||||||
nvpair_name(elem));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ======================================================================
|
* ======================================================================
|
||||||
* | |
|
* | |
|
||||||
@ -1291,3 +1137,30 @@ nvpair_value_match(nvpair_t *nvp, int ai, const char *value, const char **ep)
|
|||||||
{
|
{
|
||||||
return (nvpair_value_match_regex(nvp, ai, value, NULL, ep));
|
return (nvpair_value_match_regex(nvp, ai, value, NULL, ep));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Similar to nvlist_print() but handles arrays slightly differently.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
dump_nvlist(nvlist_t *list, int indent)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
char *buf;
|
||||||
|
|
||||||
|
len = nvlist_snprintf(NULL, 0, list, indent);
|
||||||
|
len++; /* Add null terminator */
|
||||||
|
|
||||||
|
buf = malloc(len);
|
||||||
|
if (buf == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
(void) nvlist_snprintf(buf, len, list, indent);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fputs does not have limitations on the size of the buffer being
|
||||||
|
* printed (unlike printf).
|
||||||
|
*/
|
||||||
|
fputs(buf, stdout);
|
||||||
|
|
||||||
|
free(buf);
|
||||||
|
}
|
||||||
|
@ -652,6 +652,7 @@
|
|||||||
</data-member>
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
<typedef-decl name='stack_t' type-id='380f9954' id='ac5e685f'/>
|
<typedef-decl name='stack_t' type-id='380f9954' id='ac5e685f'/>
|
||||||
|
<typedef-decl name='unw_regnum_t' type-id='95e97e5e' id='c53620f0'/>
|
||||||
<class-decl name='unw_cursor' size-in-bits='8128' is-struct='yes' visibility='default' id='384a1f22'>
|
<class-decl name='unw_cursor' size-in-bits='8128' is-struct='yes' visibility='default' id='384a1f22'>
|
||||||
<data-member access='public' layout-offset-in-bits='0'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='opaque' type-id='dc70ec0b' visibility='default'/>
|
<var-decl name='opaque' type-id='dc70ec0b' visibility='default'/>
|
||||||
@ -763,6 +764,10 @@
|
|||||||
<parameter type-id='b59d7dce'/>
|
<parameter type-id='b59d7dce'/>
|
||||||
<return type-id='79a0948f'/>
|
<return type-id='79a0948f'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
|
<function-decl name='_Ux86_64_regname' visibility='default' binding='global' size-in-bits='64'>
|
||||||
|
<parameter type-id='c53620f0'/>
|
||||||
|
<return type-id='80f4b756'/>
|
||||||
|
</function-decl>
|
||||||
<function-decl name='_ULx86_64_init_local' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='_ULx86_64_init_local' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='3946e4d1'/>
|
<parameter type-id='3946e4d1'/>
|
||||||
<parameter type-id='2e408b96'/>
|
<parameter type-id='2e408b96'/>
|
||||||
@ -1011,16 +1016,9 @@
|
|||||||
</function-decl>
|
</function-decl>
|
||||||
</abi-instr>
|
</abi-instr>
|
||||||
<abi-instr address-size='64' path='lib/libspl/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='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='03085adc' size-in-bits='192' id='083f8d58'>
|
<array-type-def dimensions='1' type-id='03085adc' size-in-bits='192' id='083f8d58'>
|
||||||
<subrange length='3' type-id='7359adad' id='56f209d2'/>
|
<subrange length='3' type-id='7359adad' id='56f209d2'/>
|
||||||
</array-type-def>
|
</array-type-def>
|
||||||
<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>
|
|
||||||
<class-decl name='mnttab' size-in-bits='256' is-struct='yes' visibility='default' id='1b055409'>
|
<class-decl name='mnttab' size-in-bits='256' is-struct='yes' visibility='default' id='1b055409'>
|
||||||
<data-member access='public' layout-offset-in-bits='0'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='mnt_special' type-id='26a90f95' visibility='default'/>
|
<var-decl name='mnt_special' type-id='26a90f95' visibility='default'/>
|
||||||
@ -1130,25 +1128,6 @@
|
|||||||
<typedef-decl name='__blksize_t' type-id='bd54fe1a' id='d3f10a7f'/>
|
<typedef-decl name='__blksize_t' type-id='bd54fe1a' id='d3f10a7f'/>
|
||||||
<typedef-decl name='__blkcnt64_t' type-id='bd54fe1a' id='4e711bf1'/>
|
<typedef-decl name='__blkcnt64_t' type-id='bd54fe1a' id='4e711bf1'/>
|
||||||
<typedef-decl name='__syscall_slong_t' type-id='bd54fe1a' id='03085adc'/>
|
<typedef-decl name='__syscall_slong_t' type-id='bd54fe1a' id='03085adc'/>
|
||||||
<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'/>
|
|
||||||
<typedef-decl name='locale_t' type-id='b7ac9b5f' id='973a4f8d'/>
|
|
||||||
<class-decl name='timespec' size-in-bits='128' is-struct='yes' visibility='default' id='a9c79a1f'>
|
<class-decl name='timespec' size-in-bits='128' is-struct='yes' visibility='default' id='a9c79a1f'>
|
||||||
<data-member access='public' layout-offset-in-bits='0'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='tv_sec' type-id='65eda9c0' visibility='default'/>
|
<var-decl name='tv_sec' type-id='65eda9c0' visibility='default'/>
|
||||||
@ -1157,23 +1136,12 @@
|
|||||||
<var-decl name='tv_nsec' type-id='03085adc' visibility='default'/>
|
<var-decl name='tv_nsec' type-id='03085adc' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
<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='95e97e5e' const='yes' id='2448a865'/>
|
|
||||||
<pointer-type-def type-id='2448a865' size-in-bits='64' id='6d60f45d'/>
|
|
||||||
<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='0c544dc0' size-in-bits='64' id='394fc496'/>
|
<pointer-type-def type-id='0c544dc0' size-in-bits='64' id='394fc496'/>
|
||||||
<pointer-type-def type-id='56fe4a37' size-in-bits='64' id='b6b61d2f'/>
|
<pointer-type-def type-id='56fe4a37' size-in-bits='64' id='b6b61d2f'/>
|
||||||
<qualified-type-def type-id='b6b61d2f' restrict='yes' id='3cad23cd'/>
|
<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='1b055409' size-in-bits='64' id='9d424d31'/>
|
||||||
<pointer-type-def type-id='0bbec9cd' size-in-bits='64' id='62f7a03d'/>
|
<pointer-type-def type-id='0bbec9cd' size-in-bits='64' id='62f7a03d'/>
|
||||||
<qualified-type-def type-id='62f7a03d' restrict='yes' id='f1cadedf'/>
|
<qualified-type-def type-id='62f7a03d' restrict='yes' id='f1cadedf'/>
|
||||||
<class-decl name='__locale_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='23de8b96'/>
|
|
||||||
<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='getmntent_r' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='getmntent_r' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='e75a27e9'/>
|
<parameter type-id='e75a27e9'/>
|
||||||
<parameter type-id='3cad23cd'/>
|
<parameter type-id='3cad23cd'/>
|
||||||
@ -1185,9 +1153,8 @@
|
|||||||
<parameter type-id='822cd80b'/>
|
<parameter type-id='822cd80b'/>
|
||||||
<return type-id='95e97e5e'/>
|
<return type-id='95e97e5e'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
<function-decl name='strerror_l' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='strerror' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='95e97e5e'/>
|
<parameter type-id='95e97e5e'/>
|
||||||
<parameter type-id='973a4f8d'/>
|
|
||||||
<return type-id='26a90f95'/>
|
<return type-id='26a90f95'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
<function-decl name='__fprintf_chk' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='__fprintf_chk' visibility='default' binding='global' size-in-bits='64'>
|
||||||
|
@ -631,7 +631,7 @@
|
|||||||
<elf-symbol name='sa_protocol_names' 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='2464' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
<elf-symbol name='spa_feature_table' size='2464' 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='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_deleg_perm_tab' size='528' 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'/>
|
<elf-symbol name='zfs_history_event_names' size='328' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||||
<elf-symbol name='zfs_max_dataset_nesting' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
<elf-symbol name='zfs_max_dataset_nesting' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||||
<elf-symbol name='zfs_userquota_prop_prefixes' size='96' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
<elf-symbol name='zfs_userquota_prop_prefixes' size='96' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||||
@ -1170,6 +1170,7 @@
|
|||||||
</data-member>
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
<typedef-decl name='stack_t' type-id='380f9954' id='ac5e685f'/>
|
<typedef-decl name='stack_t' type-id='380f9954' id='ac5e685f'/>
|
||||||
|
<typedef-decl name='unw_regnum_t' type-id='95e97e5e' id='c53620f0'/>
|
||||||
<class-decl name='unw_cursor' size-in-bits='8128' is-struct='yes' visibility='default' id='384a1f22'>
|
<class-decl name='unw_cursor' size-in-bits='8128' is-struct='yes' visibility='default' id='384a1f22'>
|
||||||
<data-member access='public' layout-offset-in-bits='0'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='opaque' type-id='dc70ec0b' visibility='default'/>
|
<var-decl name='opaque' type-id='dc70ec0b' visibility='default'/>
|
||||||
@ -1275,6 +1276,10 @@
|
|||||||
<pointer-type-def type-id='1203d35c' size-in-bits='64' id='3946e4d1'/>
|
<pointer-type-def type-id='1203d35c' size-in-bits='64' id='3946e4d1'/>
|
||||||
<pointer-type-def type-id='190d09ef' size-in-bits='64' id='3e0601f0'/>
|
<pointer-type-def type-id='190d09ef' size-in-bits='64' id='3e0601f0'/>
|
||||||
<pointer-type-def type-id='73d941c6' size-in-bits='64' id='42f5faab'/>
|
<pointer-type-def type-id='73d941c6' size-in-bits='64' id='42f5faab'/>
|
||||||
|
<function-decl name='_Ux86_64_regname' visibility='default' binding='global' size-in-bits='64'>
|
||||||
|
<parameter type-id='c53620f0'/>
|
||||||
|
<return type-id='80f4b756'/>
|
||||||
|
</function-decl>
|
||||||
<function-decl name='_ULx86_64_init_local' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='_ULx86_64_init_local' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='3946e4d1'/>
|
<parameter type-id='3946e4d1'/>
|
||||||
<parameter type-id='2e408b96'/>
|
<parameter type-id='2e408b96'/>
|
||||||
@ -2482,6 +2487,13 @@
|
|||||||
<parameter type-id='eaa32e2f'/>
|
<parameter type-id='eaa32e2f'/>
|
||||||
<return type-id='95e97e5e'/>
|
<return type-id='95e97e5e'/>
|
||||||
</function-decl>
|
</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_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_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='9200a744'/>
|
||||||
<parameter type-id='d8e49ab9'/>
|
<parameter type-id='d8e49ab9'/>
|
||||||
@ -2698,7 +2710,7 @@
|
|||||||
<var-decl name='drr_toname' type-id='d1617432' visibility='default'/>
|
<var-decl name='drr_toname' type-id='d1617432' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
<class-decl name='zinject_record' size-in-bits='2816' is-struct='yes' visibility='default' id='3216f820'>
|
<class-decl name='zinject_record' size-in-bits='2944' is-struct='yes' visibility='default' id='3216f820'>
|
||||||
<data-member access='public' layout-offset-in-bits='0'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='zi_objset' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zi_objset' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
@ -2750,6 +2762,12 @@
|
|||||||
<data-member access='public' layout-offset-in-bits='2784'>
|
<data-member access='public' layout-offset-in-bits='2784'>
|
||||||
<var-decl name='zi_dvas' type-id='8f92235e' visibility='default'/>
|
<var-decl name='zi_dvas' type-id='8f92235e' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
|
<data-member access='public' layout-offset-in-bits='2816'>
|
||||||
|
<var-decl name='zi_match_count' type-id='9c313c2d' visibility='default'/>
|
||||||
|
</data-member>
|
||||||
|
<data-member access='public' layout-offset-in-bits='2880'>
|
||||||
|
<var-decl name='zi_inject_count' type-id='9c313c2d' visibility='default'/>
|
||||||
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
<typedef-decl name='zinject_record_t' type-id='3216f820' id='a4301ca6'/>
|
<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'>
|
<class-decl name='zfs_share' size-in-bits='256' is-struct='yes' visibility='default' id='feb6f2da'>
|
||||||
@ -2767,7 +2785,7 @@
|
|||||||
</data-member>
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
<typedef-decl name='zfs_share_t' type-id='feb6f2da' id='ee5cec36'/>
|
<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='zfs_cmd' size-in-bits='110080' is-struct='yes' visibility='default' id='3522cd69'>
|
||||||
<data-member access='public' layout-offset-in-bits='0'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='zc_name' type-id='d16c6df4' visibility='default'/>
|
<var-decl name='zc_name' type-id='d16c6df4' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
@ -2840,37 +2858,37 @@
|
|||||||
<data-member access='public' layout-offset-in-bits='106368'>
|
<data-member access='public' layout-offset-in-bits='106368'>
|
||||||
<var-decl name='zc_inject_record' type-id='a4301ca6' visibility='default'/>
|
<var-decl name='zc_inject_record' type-id='a4301ca6' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109184'>
|
<data-member access='public' layout-offset-in-bits='109312'>
|
||||||
<var-decl name='zc_defer_destroy' type-id='8f92235e' visibility='default'/>
|
<var-decl name='zc_defer_destroy' type-id='8f92235e' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109216'>
|
<data-member access='public' layout-offset-in-bits='109344'>
|
||||||
<var-decl name='zc_flags' type-id='8f92235e' visibility='default'/>
|
<var-decl name='zc_flags' type-id='8f92235e' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109248'>
|
<data-member access='public' layout-offset-in-bits='109376'>
|
||||||
<var-decl name='zc_action_handle' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zc_action_handle' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109312'>
|
<data-member access='public' layout-offset-in-bits='109440'>
|
||||||
<var-decl name='zc_cleanup_fd' type-id='95e97e5e' visibility='default'/>
|
<var-decl name='zc_cleanup_fd' type-id='95e97e5e' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109344'>
|
<data-member access='public' layout-offset-in-bits='109472'>
|
||||||
<var-decl name='zc_simple' type-id='b96825af' visibility='default'/>
|
<var-decl name='zc_simple' type-id='b96825af' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109352'>
|
<data-member access='public' layout-offset-in-bits='109480'>
|
||||||
<var-decl name='zc_pad' type-id='d3490169' visibility='default'/>
|
<var-decl name='zc_pad' type-id='d3490169' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109376'>
|
<data-member access='public' layout-offset-in-bits='109504'>
|
||||||
<var-decl name='zc_sendobj' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zc_sendobj' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109440'>
|
<data-member access='public' layout-offset-in-bits='109568'>
|
||||||
<var-decl name='zc_fromobj' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zc_fromobj' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109504'>
|
<data-member access='public' layout-offset-in-bits='109632'>
|
||||||
<var-decl name='zc_createtxg' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zc_createtxg' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109568'>
|
<data-member access='public' layout-offset-in-bits='109696'>
|
||||||
<var-decl name='zc_stat' type-id='0371a9c7' visibility='default'/>
|
<var-decl name='zc_stat' type-id='0371a9c7' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109888'>
|
<data-member access='public' layout-offset-in-bits='110016'>
|
||||||
<var-decl name='zc_zoneid' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zc_zoneid' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
@ -3069,9 +3087,6 @@
|
|||||||
</function-type>
|
</function-type>
|
||||||
</abi-instr>
|
</abi-instr>
|
||||||
<abi-instr address-size='64' path='lib/libzfs/libzfs_crypto.c' language='LANG_C99'>
|
<abi-instr address-size='64' path='lib/libzfs/libzfs_crypto.c' language='LANG_C99'>
|
||||||
<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'>
|
<array-type-def dimensions='1' type-id='fb7c6451' size-in-bits='256' id='64177143'>
|
||||||
<subrange length='32' type-id='7359adad' id='ae5bde82'/>
|
<subrange length='32' type-id='7359adad' id='ae5bde82'/>
|
||||||
</array-type-def>
|
</array-type-def>
|
||||||
@ -3084,10 +3099,6 @@
|
|||||||
<class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/>
|
<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_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='_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'>
|
<array-type-def dimensions='1' type-id='95e97e5e' size-in-bits='896' id='47394ee0'>
|
||||||
<subrange length='28' type-id='7359adad' id='3db583d7'/>
|
<subrange length='28' type-id='7359adad' id='3db583d7'/>
|
||||||
</array-type-def>
|
</array-type-def>
|
||||||
@ -3212,24 +3223,6 @@
|
|||||||
<typedef-decl name='__clock_t' type-id='bd54fe1a' id='4d66c6d7'/>
|
<typedef-decl name='__clock_t' type-id='bd54fe1a' id='4d66c6d7'/>
|
||||||
<typedef-decl name='__ssize_t' type-id='bd54fe1a' id='41060289'/>
|
<typedef-decl name='__ssize_t' type-id='bd54fe1a' id='41060289'/>
|
||||||
<typedef-decl name='FILE' type-id='ec1ed955' id='aa12d1ba'/>
|
<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'>
|
<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'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='__val' type-id='d2baa450' visibility='default'/>
|
<var-decl name='__val' type-id='d2baa450' visibility='default'/>
|
||||||
@ -3245,7 +3238,6 @@
|
|||||||
</data-member>
|
</data-member>
|
||||||
</union-decl>
|
</union-decl>
|
||||||
<typedef-decl name='__sigval_t' type-id='a094b870' id='eabacd01'/>
|
<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'>
|
<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'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='si_signo' type-id='95e97e5e' visibility='default'/>
|
<var-decl name='si_signo' type-id='95e97e5e' visibility='default'/>
|
||||||
@ -3481,13 +3473,9 @@
|
|||||||
<pointer-type-def type-id='bb4788fa' size-in-bits='64' id='cecf4ea7'/>
|
<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='010ae0b9' size-in-bits='64' id='e4c6fa61'/>
|
||||||
<pointer-type-def type-id='79bd3751' size-in-bits='64' id='c65a1f29'/>
|
<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='9b23c9ad' restrict='yes' id='8c85230f'/>
|
||||||
<qualified-type-def type-id='80f4b756' restrict='yes' id='9d26089a'/>
|
<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='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'/>
|
<qualified-type-def type-id='aca3bac8' const='yes' id='2498fd78'/>
|
||||||
<pointer-type-def type-id='2498fd78' size-in-bits='64' id='eed6c816'/>
|
<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='eed6c816' restrict='yes' id='a431a9da'/>
|
||||||
@ -3501,6 +3489,7 @@
|
|||||||
<qualified-type-def type-id='8efea9e5' const='yes' id='3beb2af4'/>
|
<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='3beb2af4' size-in-bits='64' id='31347b7a'/>
|
||||||
<pointer-type-def type-id='31347b7a' size-in-bits='64' id='c59e1ef0'/>
|
<pointer-type-def type-id='31347b7a' size-in-bits='64' id='c59e1ef0'/>
|
||||||
|
<pointer-type-def type-id='7a6844eb' size-in-bits='64' id='18c91f9e'/>
|
||||||
<pointer-type-def type-id='1b941664' size-in-bits='64' id='7e2979d5'/>
|
<pointer-type-def type-id='1b941664' size-in-bits='64' id='7e2979d5'/>
|
||||||
<qualified-type-def type-id='7e2979d5' restrict='yes' id='fc212857'/>
|
<qualified-type-def type-id='7e2979d5' restrict='yes' id='fc212857'/>
|
||||||
<pointer-type-def type-id='fe391c48' size-in-bits='64' id='568dd84e'/>
|
<pointer-type-def type-id='fe391c48' size-in-bits='64' id='568dd84e'/>
|
||||||
@ -3520,7 +3509,6 @@
|
|||||||
<class-decl name='_IO_codecvt' is-struct='yes' visibility='default' is-declaration-only='yes' id='a4036571'/>
|
<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_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='_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'>
|
<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='4c81de99'/>
|
||||||
<parameter type-id='5d0c23fb'/>
|
<parameter type-id='5d0c23fb'/>
|
||||||
@ -3546,13 +3534,6 @@
|
|||||||
<parameter type-id='58603c44'/>
|
<parameter type-id='58603c44'/>
|
||||||
<return type-id='80f4b756'/>
|
<return type-id='80f4b756'/>
|
||||||
</function-decl>
|
</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'>
|
<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='9200a744'/>
|
||||||
<parameter type-id='26a90f95'/>
|
<parameter type-id='26a90f95'/>
|
||||||
@ -3625,10 +3606,6 @@
|
|||||||
<function-decl name='dlerror' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='dlerror' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<return type-id='26a90f95'/>
|
<return type-id='26a90f95'/>
|
||||||
</function-decl>
|
</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'>
|
<function-decl name='PKCS5_PBKDF2_HMAC_SHA1' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='80f4b756'/>
|
<parameter type-id='80f4b756'/>
|
||||||
<parameter type-id='95e97e5e'/>
|
<parameter type-id='95e97e5e'/>
|
||||||
@ -3639,6 +3616,14 @@
|
|||||||
<parameter type-id='cf536864'/>
|
<parameter type-id='cf536864'/>
|
||||||
<return type-id='95e97e5e'/>
|
<return type-id='95e97e5e'/>
|
||||||
</function-decl>
|
</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='regexec' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='regexec' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='a431a9da'/>
|
<parameter type-id='a431a9da'/>
|
||||||
<parameter type-id='9d26089a'/>
|
<parameter type-id='9d26089a'/>
|
||||||
@ -3712,9 +3697,8 @@
|
|||||||
<parameter type-id='80f4b756'/>
|
<parameter type-id='80f4b756'/>
|
||||||
<return type-id='26a90f95'/>
|
<return type-id='26a90f95'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
<function-decl name='strerror_l' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='strerror' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='95e97e5e'/>
|
<parameter type-id='95e97e5e'/>
|
||||||
<parameter type-id='973a4f8d'/>
|
|
||||||
<return type-id='26a90f95'/>
|
<return type-id='26a90f95'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
<function-decl name='tcgetattr' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='tcgetattr' visibility='default' binding='global' size-in-bits='64'>
|
||||||
@ -4084,7 +4068,6 @@
|
|||||||
<pointer-type-def type-id='a195f4a3' size-in-bits='64' id='e80ff3ab'/>
|
<pointer-type-def type-id='a195f4a3' size-in-bits='64' id='e80ff3ab'/>
|
||||||
<qualified-type-def type-id='e80ff3ab' restrict='yes' id='8f2c7109'/>
|
<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='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'/>
|
<pointer-type-def type-id='dddf6ca2' size-in-bits='64' id='d915a820'/>
|
||||||
<qualified-type-def type-id='d915a820' restrict='yes' id='f099ad08'/>
|
<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='5d6479ae' size-in-bits='64' id='892b4acc'/>
|
||||||
@ -4537,14 +4520,6 @@
|
|||||||
<parameter type-id='18c91f9e'/>
|
<parameter type-id='18c91f9e'/>
|
||||||
<return type-id='95e97e5e'/>
|
<return type-id='95e97e5e'/>
|
||||||
</function-decl>
|
</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'>
|
<function-decl name='getpwnam_r' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='9d26089a'/>
|
<parameter type-id='9d26089a'/>
|
||||||
<parameter type-id='33518961'/>
|
<parameter type-id='33518961'/>
|
||||||
@ -8375,6 +8350,11 @@
|
|||||||
<parameter type-id='95e97e5e'/>
|
<parameter type-id='95e97e5e'/>
|
||||||
<return type-id='48b5725f'/>
|
<return type-id='48b5725f'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
|
<function-decl name='setpgid' visibility='default' binding='global' size-in-bits='64'>
|
||||||
|
<parameter type-id='3629bad8'/>
|
||||||
|
<parameter type-id='3629bad8'/>
|
||||||
|
<return type-id='95e97e5e'/>
|
||||||
|
</function-decl>
|
||||||
<function-decl name='fork' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='fork' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<return type-id='3629bad8'/>
|
<return type-id='3629bad8'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
@ -9539,8 +9519,8 @@
|
|||||||
</function-decl>
|
</function-decl>
|
||||||
</abi-instr>
|
</abi-instr>
|
||||||
<abi-instr address-size='64' path='module/zcommon/zfs_deleg.c' language='LANG_C99'>
|
<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'>
|
<array-type-def dimensions='1' type-id='fa1870fd' size-in-bits='4224' id='55e705e7'>
|
||||||
<subrange length='32' type-id='7359adad' id='ae5bde82'/>
|
<subrange length='33' type-id='7359adad' id='6a5934df'/>
|
||||||
</array-type-def>
|
</array-type-def>
|
||||||
<array-type-def dimensions='1' type-id='fa1870fd' size-in-bits='infinite' id='7c00e69d'>
|
<array-type-def dimensions='1' type-id='fa1870fd' size-in-bits='infinite' id='7c00e69d'>
|
||||||
<subrange length='infinite' id='031f2035'/>
|
<subrange length='infinite' id='031f2035'/>
|
||||||
|
@ -651,6 +651,7 @@
|
|||||||
</data-member>
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
<typedef-decl name='stack_t' type-id='380f9954' id='ac5e685f'/>
|
<typedef-decl name='stack_t' type-id='380f9954' id='ac5e685f'/>
|
||||||
|
<typedef-decl name='unw_regnum_t' type-id='95e97e5e' id='c53620f0'/>
|
||||||
<class-decl name='unw_cursor' size-in-bits='8128' is-struct='yes' visibility='default' id='384a1f22'>
|
<class-decl name='unw_cursor' size-in-bits='8128' is-struct='yes' visibility='default' id='384a1f22'>
|
||||||
<data-member access='public' layout-offset-in-bits='0'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='opaque' type-id='dc70ec0b' visibility='default'/>
|
<var-decl name='opaque' type-id='dc70ec0b' visibility='default'/>
|
||||||
@ -762,6 +763,10 @@
|
|||||||
<parameter type-id='b59d7dce'/>
|
<parameter type-id='b59d7dce'/>
|
||||||
<return type-id='79a0948f'/>
|
<return type-id='79a0948f'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
|
<function-decl name='_Ux86_64_regname' visibility='default' binding='global' size-in-bits='64'>
|
||||||
|
<parameter type-id='c53620f0'/>
|
||||||
|
<return type-id='80f4b756'/>
|
||||||
|
</function-decl>
|
||||||
<function-decl name='_ULx86_64_init_local' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='_ULx86_64_init_local' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='3946e4d1'/>
|
<parameter type-id='3946e4d1'/>
|
||||||
<parameter type-id='2e408b96'/>
|
<parameter type-id='2e408b96'/>
|
||||||
@ -982,13 +987,6 @@
|
|||||||
</function-decl>
|
</function-decl>
|
||||||
</abi-instr>
|
</abi-instr>
|
||||||
<abi-instr address-size='64' path='lib/libspl/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='38b51b3c' size-in-bits='832' id='02b72c00'>
|
|
||||||
<subrange length='13' type-id='7359adad' id='487fded1'/>
|
|
||||||
</array-type-def>
|
|
||||||
<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>
|
|
||||||
<class-decl name='mnttab' size-in-bits='256' is-struct='yes' visibility='default' id='1b055409'>
|
<class-decl name='mnttab' size-in-bits='256' is-struct='yes' visibility='default' id='1b055409'>
|
||||||
<data-member access='public' layout-offset-in-bits='0'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='mnt_special' type-id='26a90f95' visibility='default'/>
|
<var-decl name='mnt_special' type-id='26a90f95' visibility='default'/>
|
||||||
@ -1092,42 +1090,12 @@
|
|||||||
</class-decl>
|
</class-decl>
|
||||||
<typedef-decl name='__ino64_t' type-id='7359adad' id='71288a47'/>
|
<typedef-decl name='__ino64_t' type-id='7359adad' id='71288a47'/>
|
||||||
<typedef-decl name='__blkcnt64_t' type-id='bd54fe1a' id='4e711bf1'/>
|
<typedef-decl name='__blkcnt64_t' type-id='bd54fe1a' id='4e711bf1'/>
|
||||||
<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'/>
|
|
||||||
<typedef-decl name='locale_t' type-id='b7ac9b5f' id='973a4f8d'/>
|
|
||||||
<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='95e97e5e' const='yes' id='2448a865'/>
|
|
||||||
<pointer-type-def type-id='2448a865' size-in-bits='64' id='6d60f45d'/>
|
|
||||||
<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='0c544dc0' size-in-bits='64' id='394fc496'/>
|
<pointer-type-def type-id='0c544dc0' size-in-bits='64' id='394fc496'/>
|
||||||
<pointer-type-def type-id='56fe4a37' size-in-bits='64' id='b6b61d2f'/>
|
<pointer-type-def type-id='56fe4a37' size-in-bits='64' id='b6b61d2f'/>
|
||||||
<qualified-type-def type-id='b6b61d2f' restrict='yes' id='3cad23cd'/>
|
<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='1b055409' size-in-bits='64' id='9d424d31'/>
|
||||||
<pointer-type-def type-id='0bbec9cd' size-in-bits='64' id='62f7a03d'/>
|
<pointer-type-def type-id='0bbec9cd' size-in-bits='64' id='62f7a03d'/>
|
||||||
<qualified-type-def type-id='62f7a03d' restrict='yes' id='f1cadedf'/>
|
<qualified-type-def type-id='62f7a03d' restrict='yes' id='f1cadedf'/>
|
||||||
<class-decl name='__locale_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='23de8b96'/>
|
|
||||||
<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='getmntent_r' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='getmntent_r' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='e75a27e9'/>
|
<parameter type-id='e75a27e9'/>
|
||||||
<parameter type-id='3cad23cd'/>
|
<parameter type-id='3cad23cd'/>
|
||||||
@ -1144,9 +1112,8 @@
|
|||||||
<parameter type-id='80f4b756'/>
|
<parameter type-id='80f4b756'/>
|
||||||
<return type-id='95e97e5e'/>
|
<return type-id='95e97e5e'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
<function-decl name='strerror_l' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='strerror' visibility='default' binding='global' size-in-bits='64'>
|
||||||
<parameter type-id='95e97e5e'/>
|
<parameter type-id='95e97e5e'/>
|
||||||
<parameter type-id='973a4f8d'/>
|
|
||||||
<return type-id='26a90f95'/>
|
<return type-id='26a90f95'/>
|
||||||
</function-decl>
|
</function-decl>
|
||||||
<function-decl name='__fprintf_chk' visibility='default' binding='global' size-in-bits='64'>
|
<function-decl name='__fprintf_chk' visibility='default' binding='global' size-in-bits='64'>
|
||||||
@ -2111,7 +2078,7 @@
|
|||||||
</data-member>
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
<typedef-decl name='dmu_replay_record_t' type-id='781a52d7' id='8b8fc893'/>
|
<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'>
|
<class-decl name='zinject_record' size-in-bits='2944' is-struct='yes' visibility='default' id='3216f820'>
|
||||||
<data-member access='public' layout-offset-in-bits='0'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='zi_objset' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zi_objset' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
@ -2163,6 +2130,12 @@
|
|||||||
<data-member access='public' layout-offset-in-bits='2784'>
|
<data-member access='public' layout-offset-in-bits='2784'>
|
||||||
<var-decl name='zi_dvas' type-id='8f92235e' visibility='default'/>
|
<var-decl name='zi_dvas' type-id='8f92235e' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
|
<data-member access='public' layout-offset-in-bits='2816'>
|
||||||
|
<var-decl name='zi_match_count' type-id='9c313c2d' visibility='default'/>
|
||||||
|
</data-member>
|
||||||
|
<data-member access='public' layout-offset-in-bits='2880'>
|
||||||
|
<var-decl name='zi_inject_count' type-id='9c313c2d' visibility='default'/>
|
||||||
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
<typedef-decl name='zinject_record_t' type-id='3216f820' id='a4301ca6'/>
|
<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'>
|
<class-decl name='zfs_share' size-in-bits='256' is-struct='yes' visibility='default' id='feb6f2da'>
|
||||||
@ -2180,7 +2153,7 @@
|
|||||||
</data-member>
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
<typedef-decl name='zfs_share_t' type-id='feb6f2da' id='ee5cec36'/>
|
<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='zfs_cmd' size-in-bits='110080' is-struct='yes' visibility='default' id='3522cd69'>
|
||||||
<data-member access='public' layout-offset-in-bits='0'>
|
<data-member access='public' layout-offset-in-bits='0'>
|
||||||
<var-decl name='zc_name' type-id='d16c6df4' visibility='default'/>
|
<var-decl name='zc_name' type-id='d16c6df4' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
@ -2253,37 +2226,37 @@
|
|||||||
<data-member access='public' layout-offset-in-bits='106368'>
|
<data-member access='public' layout-offset-in-bits='106368'>
|
||||||
<var-decl name='zc_inject_record' type-id='a4301ca6' visibility='default'/>
|
<var-decl name='zc_inject_record' type-id='a4301ca6' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109184'>
|
<data-member access='public' layout-offset-in-bits='109312'>
|
||||||
<var-decl name='zc_defer_destroy' type-id='8f92235e' visibility='default'/>
|
<var-decl name='zc_defer_destroy' type-id='8f92235e' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109216'>
|
<data-member access='public' layout-offset-in-bits='109344'>
|
||||||
<var-decl name='zc_flags' type-id='8f92235e' visibility='default'/>
|
<var-decl name='zc_flags' type-id='8f92235e' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109248'>
|
<data-member access='public' layout-offset-in-bits='109376'>
|
||||||
<var-decl name='zc_action_handle' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zc_action_handle' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109312'>
|
<data-member access='public' layout-offset-in-bits='109440'>
|
||||||
<var-decl name='zc_cleanup_fd' type-id='95e97e5e' visibility='default'/>
|
<var-decl name='zc_cleanup_fd' type-id='95e97e5e' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109344'>
|
<data-member access='public' layout-offset-in-bits='109472'>
|
||||||
<var-decl name='zc_simple' type-id='b96825af' visibility='default'/>
|
<var-decl name='zc_simple' type-id='b96825af' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109352'>
|
<data-member access='public' layout-offset-in-bits='109480'>
|
||||||
<var-decl name='zc_pad' type-id='d3490169' visibility='default'/>
|
<var-decl name='zc_pad' type-id='d3490169' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109376'>
|
<data-member access='public' layout-offset-in-bits='109504'>
|
||||||
<var-decl name='zc_sendobj' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zc_sendobj' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109440'>
|
<data-member access='public' layout-offset-in-bits='109568'>
|
||||||
<var-decl name='zc_fromobj' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zc_fromobj' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109504'>
|
<data-member access='public' layout-offset-in-bits='109632'>
|
||||||
<var-decl name='zc_createtxg' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zc_createtxg' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109568'>
|
<data-member access='public' layout-offset-in-bits='109696'>
|
||||||
<var-decl name='zc_stat' type-id='0371a9c7' visibility='default'/>
|
<var-decl name='zc_stat' type-id='0371a9c7' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
<data-member access='public' layout-offset-in-bits='109888'>
|
<data-member access='public' layout-offset-in-bits='110016'>
|
||||||
<var-decl name='zc_zoneid' type-id='9c313c2d' visibility='default'/>
|
<var-decl name='zc_zoneid' type-id='9c313c2d' visibility='default'/>
|
||||||
</data-member>
|
</data-member>
|
||||||
</class-decl>
|
</class-decl>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<abi-corpus version='2.0' architecture='elf-amd-x86_64' soname='libzfsbootenv.so.1'>
|
<abi-corpus version='2.0' architecture='elf-amd-x86_64' soname='libzfsbootenv.so.1'>
|
||||||
<elf-needed>
|
<elf-needed>
|
||||||
<dependency name='libzfs.so.4'/>
|
<dependency name='libzfs.so.6'/>
|
||||||
<dependency name='libnvpair.so.3'/>
|
<dependency name='libnvpair.so.3'/>
|
||||||
<dependency name='libc.so.6'/>
|
<dependency name='libc.so.6'/>
|
||||||
</elf-needed>
|
</elf-needed>
|
||||||
|
@ -178,6 +178,7 @@ nodist_libzpool_la_SOURCES = \
|
|||||||
module/zfs/zfeature.c \
|
module/zfs/zfeature.c \
|
||||||
module/zfs/zfs_byteswap.c \
|
module/zfs/zfs_byteswap.c \
|
||||||
module/zfs/zfs_chksum.c \
|
module/zfs/zfs_chksum.c \
|
||||||
|
module/zfs/zfs_debug_common.c \
|
||||||
module/zfs/zfs_fm.c \
|
module/zfs/zfs_fm.c \
|
||||||
module/zfs/zfs_fuid.c \
|
module/zfs/zfs_fuid.c \
|
||||||
module/zfs/zfs_ratelimit.c \
|
module/zfs/zfs_ratelimit.c \
|
||||||
|
@ -413,6 +413,7 @@ ZFS_OBJS := \
|
|||||||
zfeature.o \
|
zfeature.o \
|
||||||
zfs_byteswap.o \
|
zfs_byteswap.o \
|
||||||
zfs_chksum.o \
|
zfs_chksum.o \
|
||||||
|
zfs_debug_common.o \
|
||||||
zfs_fm.o \
|
zfs_fm.o \
|
||||||
zfs_fuid.o \
|
zfs_fuid.o \
|
||||||
zfs_impl.o \
|
zfs_impl.o \
|
||||||
|
@ -3681,6 +3681,240 @@ nvs_xdr(nvstream_t *nvs, nvlist_t *nvl, char *buf, size_t *buflen)
|
|||||||
return (err);
|
return (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define NVP(buf, size, len, buf_end, elem, type, vtype, ptype, format) { \
|
||||||
|
vtype value; \
|
||||||
|
int rc; \
|
||||||
|
\
|
||||||
|
(void) nvpair_value_##type(elem, &value); \
|
||||||
|
rc = snprintf(buf, size, "%*s%s: " format "\n", indent, "", \
|
||||||
|
nvpair_name(elem), (ptype)value); \
|
||||||
|
if (rc < 0) \
|
||||||
|
return (rc); \
|
||||||
|
size = MAX((int)size - rc, 0); \
|
||||||
|
buf = size == 0 ? NULL : buf_end - size; \
|
||||||
|
len += rc; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define NVPA(buf, size, len, buf_end, elem, type, vtype, ptype, format) \
|
||||||
|
{ \
|
||||||
|
uint_t i, count; \
|
||||||
|
vtype *value; \
|
||||||
|
int rc; \
|
||||||
|
\
|
||||||
|
(void) nvpair_value_##type(elem, &value, &count); \
|
||||||
|
for (i = 0; i < count; i++) { \
|
||||||
|
rc = snprintf(buf, size, "%*s%s[%d]: " format "\n", indent, \
|
||||||
|
"", nvpair_name(elem), i, (ptype)value[i]); \
|
||||||
|
if (rc < 0) \
|
||||||
|
return (rc); \
|
||||||
|
size = MAX((int)size - rc, 0); \
|
||||||
|
buf = size == 0 ? NULL : buf_end - size; \
|
||||||
|
len += rc; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* snprintf() version of dump_nvlist()
|
||||||
|
*
|
||||||
|
* Works just like snprintf(), but with an nvlist and indent count as args.
|
||||||
|
*
|
||||||
|
* Output is similar to nvlist_print() but handles arrays slightly differently.
|
||||||
|
*
|
||||||
|
* Return value matches C99 snprintf() return value conventions.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
nvlist_snprintf(char *buf, size_t size, nvlist_t *list, int indent)
|
||||||
|
{
|
||||||
|
nvpair_t *elem = NULL;
|
||||||
|
boolean_t bool_value;
|
||||||
|
nvlist_t *nvlist_value;
|
||||||
|
nvlist_t **nvlist_array_value;
|
||||||
|
uint_t i, count;
|
||||||
|
int len = 0;
|
||||||
|
int rc;
|
||||||
|
char *buf_end = &buf[size];
|
||||||
|
|
||||||
|
if (list == NULL)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
while ((elem = nvlist_next_nvpair(list, elem)) != NULL) {
|
||||||
|
switch (nvpair_type(elem)) {
|
||||||
|
case DATA_TYPE_BOOLEAN:
|
||||||
|
rc = snprintf(buf, size, "%*s%s\n", indent, "",
|
||||||
|
nvpair_name(elem));
|
||||||
|
if (rc < 0)
|
||||||
|
return (rc);
|
||||||
|
size = MAX((int)size - rc, 0);
|
||||||
|
buf = size == 0 ? NULL : buf_end - size;
|
||||||
|
len += rc;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_BOOLEAN_VALUE:
|
||||||
|
(void) nvpair_value_boolean_value(elem, &bool_value);
|
||||||
|
rc = snprintf(buf, size, "%*s%s: %s\n", indent, "",
|
||||||
|
nvpair_name(elem), bool_value ? "true" : "false");
|
||||||
|
if (rc < 0)
|
||||||
|
return (rc);
|
||||||
|
size = MAX((int)size - rc, 0);
|
||||||
|
buf = size == 0 ? NULL : buf_end - size;
|
||||||
|
len += rc;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_BYTE:
|
||||||
|
NVP(buf, size, len, buf_end, elem, byte, uchar_t, int,
|
||||||
|
"%u");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_INT8:
|
||||||
|
NVP(buf, size, len, buf_end, elem, int8, int8_t, int,
|
||||||
|
"%d");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_UINT8:
|
||||||
|
NVP(buf, size, len, buf_end, elem, uint8, uint8_t, int,
|
||||||
|
"%u");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_INT16:
|
||||||
|
NVP(buf, size, len, buf_end, elem, int16, int16_t, int,
|
||||||
|
"%d");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_UINT16:
|
||||||
|
NVP(buf, size, len, buf_end, elem, uint16, uint16_t,
|
||||||
|
int, "%u");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_INT32:
|
||||||
|
NVP(buf, size, len, buf_end, elem, int32, int32_t,
|
||||||
|
long, "%ld");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_UINT32:
|
||||||
|
NVP(buf, size, len, buf_end, elem, uint32, uint32_t,
|
||||||
|
ulong_t, "%lu");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_INT64:
|
||||||
|
NVP(buf, size, len, buf_end, elem, int64, int64_t,
|
||||||
|
longlong_t, "%lld");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_UINT64:
|
||||||
|
NVP(buf, size, len, buf_end, elem, uint64, uint64_t,
|
||||||
|
u_longlong_t, "%llu");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_STRING:
|
||||||
|
NVP(buf, size, len, buf_end, elem, string, const char *,
|
||||||
|
const char *, "'%s'");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_BYTE_ARRAY:
|
||||||
|
NVPA(buf, size, len, buf_end, elem, byte_array, uchar_t,
|
||||||
|
int, "%u");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_INT8_ARRAY:
|
||||||
|
NVPA(buf, size, len, buf_end, elem, int8_array, int8_t,
|
||||||
|
int, "%d");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_UINT8_ARRAY:
|
||||||
|
NVPA(buf, size, len, buf_end, elem, uint8_array,
|
||||||
|
uint8_t, int, "%u");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_INT16_ARRAY:
|
||||||
|
NVPA(buf, size, len, buf_end, elem, int16_array,
|
||||||
|
int16_t, int, "%d");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_UINT16_ARRAY:
|
||||||
|
NVPA(buf, size, len, buf_end, elem, uint16_array,
|
||||||
|
uint16_t, int, "%u");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_INT32_ARRAY:
|
||||||
|
NVPA(buf, size, len, buf_end, elem, int32_array,
|
||||||
|
int32_t, long, "%ld");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_UINT32_ARRAY:
|
||||||
|
NVPA(buf, size, len, buf_end, elem, uint32_array,
|
||||||
|
uint32_t, ulong_t, "%lu");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_INT64_ARRAY:
|
||||||
|
NVPA(buf, size, len, buf_end, elem, int64_array,
|
||||||
|
int64_t, longlong_t, "%lld");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_UINT64_ARRAY:
|
||||||
|
NVPA(buf, size, len, buf_end, elem, uint64_array,
|
||||||
|
uint64_t, u_longlong_t, "%llu");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_STRING_ARRAY:
|
||||||
|
NVPA(buf, size, len, buf_end, elem, string_array,
|
||||||
|
const char *, const char *, "'%s'");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_NVLIST:
|
||||||
|
(void) nvpair_value_nvlist(elem, &nvlist_value);
|
||||||
|
|
||||||
|
rc = snprintf(buf, size, "%*s%s:\n", indent, "",
|
||||||
|
nvpair_name(elem));
|
||||||
|
if (rc < 0)
|
||||||
|
return (rc);
|
||||||
|
size = MAX((int)size - rc, 0);
|
||||||
|
buf = size == 0 ? NULL : buf_end - size;
|
||||||
|
len += rc;
|
||||||
|
|
||||||
|
rc = nvlist_snprintf(buf, size, nvlist_value,
|
||||||
|
indent + 4);
|
||||||
|
if (rc < 0)
|
||||||
|
return (rc);
|
||||||
|
size = MAX((int)size - rc, 0);
|
||||||
|
buf = size == 0 ? NULL : buf_end - size;
|
||||||
|
len += rc;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_TYPE_NVLIST_ARRAY:
|
||||||
|
(void) nvpair_value_nvlist_array(elem,
|
||||||
|
&nvlist_array_value, &count);
|
||||||
|
for (i = 0; i < count; i++) {
|
||||||
|
rc = snprintf(buf, size, "%*s%s[%u]:\n",
|
||||||
|
indent, "", nvpair_name(elem), i);
|
||||||
|
if (rc < 0)
|
||||||
|
return (rc);
|
||||||
|
size = MAX((int)size - rc, 0);
|
||||||
|
buf = size == 0 ? NULL : buf_end - size;
|
||||||
|
len += rc;
|
||||||
|
|
||||||
|
rc = nvlist_snprintf(buf, size,
|
||||||
|
nvlist_array_value[i], indent + 4);
|
||||||
|
if (rc < 0)
|
||||||
|
return (rc);
|
||||||
|
size = MAX((int)size - rc, 0);
|
||||||
|
buf = size == 0 ? NULL : buf_end - size;
|
||||||
|
len += rc;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
rc = snprintf(buf, size, "bad config type %d for %s\n",
|
||||||
|
nvpair_type(elem), nvpair_name(elem));
|
||||||
|
if (rc < 0)
|
||||||
|
return (rc);
|
||||||
|
size = MAX((int)size - rc, 0);
|
||||||
|
buf = size == 0 ? NULL : buf_end - size;
|
||||||
|
len += rc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (len);
|
||||||
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(nv_alloc_init);
|
EXPORT_SYMBOL(nv_alloc_init);
|
||||||
EXPORT_SYMBOL(nv_alloc_reset);
|
EXPORT_SYMBOL(nv_alloc_reset);
|
||||||
EXPORT_SYMBOL(nv_alloc_fini);
|
EXPORT_SYMBOL(nv_alloc_fini);
|
||||||
@ -3766,6 +4000,8 @@ EXPORT_SYMBOL(nvlist_lookup_pairs);
|
|||||||
EXPORT_SYMBOL(nvlist_lookup_nvpair);
|
EXPORT_SYMBOL(nvlist_lookup_nvpair);
|
||||||
EXPORT_SYMBOL(nvlist_exists);
|
EXPORT_SYMBOL(nvlist_exists);
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(nvlist_snprintf);
|
||||||
|
|
||||||
/* processing nvpair */
|
/* processing nvpair */
|
||||||
EXPORT_SYMBOL(nvpair_name);
|
EXPORT_SYMBOL(nvpair_name);
|
||||||
EXPORT_SYMBOL(nvpair_type);
|
EXPORT_SYMBOL(nvpair_type);
|
||||||
|
97
module/zfs/zfs_debug_common.c
Normal file
97
module/zfs/zfs_debug_common.c
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
// SPDX-License-Identifier: CDDL-1.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 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 (c) 2025 by Lawrence Livermore National Security, LLC.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* This file contains zfs_dbgmsg() specific functions that are not OS or
|
||||||
|
* userspace specific.
|
||||||
|
*/
|
||||||
|
#if !defined(_KERNEL)
|
||||||
|
#include <string.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/zfs_context.h>
|
||||||
|
#include <sys/zfs_debug.h>
|
||||||
|
#include <sys/nvpair.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Given a multi-line string, print out one of the lines and return a pointer
|
||||||
|
* to the next line. Lines are demarcated by '\n'. Note: this modifies the
|
||||||
|
* input string (buf[]).
|
||||||
|
*
|
||||||
|
* This function is meant to be used in a loop like:
|
||||||
|
* while (buf != NULL)
|
||||||
|
* buf = kernel_print_one_line(buf);
|
||||||
|
*
|
||||||
|
* This function is useful for printing large, multi-line text buffers.
|
||||||
|
*
|
||||||
|
* Returns the pointer to the beginning of the next line in buf[], or NULL
|
||||||
|
* if it's the last line, or nothing more to print.
|
||||||
|
*/
|
||||||
|
static char *
|
||||||
|
zfs_dbgmsg_one_line(char *buf)
|
||||||
|
{
|
||||||
|
char *nl;
|
||||||
|
if (!buf)
|
||||||
|
return (NULL);
|
||||||
|
|
||||||
|
nl = strchr(buf, '\n');
|
||||||
|
if (nl == NULL) {
|
||||||
|
__zfs_dbgmsg(buf);
|
||||||
|
return (NULL); /* done */
|
||||||
|
}
|
||||||
|
*nl = '\0';
|
||||||
|
__zfs_dbgmsg(buf);
|
||||||
|
|
||||||
|
return (nl + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Dump an nvlist tree to dbgmsg.
|
||||||
|
*
|
||||||
|
* This is the zfs_dbgmsg version of userspace's dump_nvlist() from libnvpair.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
__zfs_dbgmsg_nvlist(nvlist_t *nv)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
char *buf;
|
||||||
|
|
||||||
|
len = nvlist_snprintf(NULL, 0, nv, 4);
|
||||||
|
len++; /* Add null terminator */
|
||||||
|
|
||||||
|
buf = vmem_alloc(len, KM_SLEEP);
|
||||||
|
if (buf == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
(void) nvlist_snprintf(buf, len, nv, 4);
|
||||||
|
|
||||||
|
while (buf != NULL)
|
||||||
|
buf = zfs_dbgmsg_one_line(buf);
|
||||||
|
|
||||||
|
vmem_free(buf, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _KERNEL
|
||||||
|
EXPORT_SYMBOL(__zfs_dbgmsg_nvlist);
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user