Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions cmd/zdb/zdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -2133,7 +2133,7 @@ dump_ddt_object(ddt_t *ddt, ddt_type_t type, ddt_class_t class)

(void) printf("%s: object=%llu\n", name,
(u_longlong_t)ddt->ddt_object[type][class]);
zpool_dump_ddt(NULL, &ddt->ddt_histogram[type][class]);
zpool_dump_ddt(NULL, &ddt->ddt_histogram[type][class], B_TRUE);

if (dump_opt['D'] < 4)
return;
Expand Down Expand Up @@ -2210,7 +2210,7 @@ dump_all_ddts(spa_t *spa)
if (dump_opt['D'] > 1) {
(void) printf("DDT histogram (aggregated over all DDTs):\n");
ddt_get_dedup_histogram(spa, &ddh_total);
zpool_dump_ddt(&dds_total, &ddh_total);
zpool_dump_ddt(&dds_total, &ddh_total, B_TRUE);
}

dump_dedup_ratio(&dds_total);
Expand Down Expand Up @@ -7763,7 +7763,7 @@ dump_simulated_ddt(spa_t *spa)

(void) printf("Simulated DDT histogram:\n");

zpool_dump_ddt(&dds_total, &ddh_total);
zpool_dump_ddt(&dds_total, &ddh_total, B_TRUE);

dump_dedup_ratio(&dds_total);
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/zpool/zpool_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -10472,7 +10472,7 @@ print_dedup_stats(zpool_handle_t *zhp, nvlist_t *config, boolean_t literal)
(uint64_t **)&dds, &c) == 0);
verify(nvlist_lookup_uint64_array(config, ZPOOL_CONFIG_DDT_HISTOGRAM,
(uint64_t **)&ddh, &c) == 0);
zpool_dump_ddt(dds, ddh);
zpool_dump_ddt(dds, ddh, literal);
}

#define ST_SIZE 4096
Expand Down
3 changes: 2 additions & 1 deletion include/libzutil.h
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,8 @@ _LIBZUTIL_H void zfs_niceraw(uint64_t, char *, size_t);
#define nicenum(num, buf, size) zfs_nicenum(num, buf, size)
#define NN_NUMBUF_SZ (6)

_LIBZUTIL_H void zpool_dump_ddt(const ddt_stat_t *, const ddt_histogram_t *);
_LIBZUTIL_H void zpool_dump_ddt(const ddt_stat_t *, const ddt_histogram_t *,
boolean_t parsable);
_LIBZUTIL_H int zpool_history_unpack(char *, uint64_t, uint64_t *, nvlist_t ***,
uint_t *);
_LIBZUTIL_H void fsleep(float sec);
Expand Down
1 change: 1 addition & 0 deletions lib/libzfs/libzfs.abi
Original file line number Diff line number Diff line change
Expand Up @@ -10207,6 +10207,7 @@
<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'/>
<parameter type-id='c19b74c3' name='parsable'/>
<return type-id='48b5725f'/>
</function-decl>
<function-decl name='fsleep' mangled-name='fsleep' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fsleep'>
Expand Down
44 changes: 32 additions & 12 deletions lib/libzutil/zutil_pool.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,27 @@

#include <libzutil.h>


static inline void
fmt_num(boolean_t parsable, uint64_t val, char *buf, size_t buflen)
{
if (parsable)
(void) snprintf(buf, buflen, "%llu", (u_longlong_t)val);
else
zfs_nicenum(val, buf, buflen);
}

static inline void
fmt_bytes(boolean_t parsable, uint64_t val, char *buf, size_t buflen)
{
if (parsable)
(void) snprintf(buf, buflen, "%llu", (u_longlong_t)val);
else
zfs_nicebytes(val, buf, buflen);
}

static void
dump_ddt_stat(const ddt_stat_t *dds, int h)
dump_ddt_stat(const ddt_stat_t *dds, int h, boolean_t parsable)
{
char refcnt[6];
char blocks[6], lsize[6], psize[6], dsize[6];
Expand All @@ -48,14 +67,14 @@ dump_ddt_stat(const ddt_stat_t *dds, int h)
else
zfs_nicenum(1ULL << h, refcnt, sizeof (refcnt));

zfs_nicenum(dds->dds_blocks, blocks, sizeof (blocks));
zfs_nicebytes(dds->dds_lsize, lsize, sizeof (lsize));
zfs_nicebytes(dds->dds_psize, psize, sizeof (psize));
zfs_nicebytes(dds->dds_dsize, dsize, sizeof (dsize));
zfs_nicenum(dds->dds_ref_blocks, ref_blocks, sizeof (ref_blocks));
zfs_nicebytes(dds->dds_ref_lsize, ref_lsize, sizeof (ref_lsize));
zfs_nicebytes(dds->dds_ref_psize, ref_psize, sizeof (ref_psize));
zfs_nicebytes(dds->dds_ref_dsize, ref_dsize, sizeof (ref_dsize));
fmt_num(parsable, dds->dds_blocks, blocks, sizeof (blocks));
fmt_bytes(parsable, dds->dds_lsize, lsize, sizeof (lsize));
fmt_bytes(parsable, dds->dds_psize, psize, sizeof (psize));
fmt_bytes(parsable, dds->dds_dsize, dsize, sizeof (dsize));
fmt_num(parsable, dds->dds_ref_blocks, ref_blocks, sizeof (ref_blocks));
fmt_bytes(parsable, dds->dds_ref_lsize, ref_lsize, sizeof (ref_lsize));
fmt_bytes(parsable, dds->dds_ref_psize, ref_psize, sizeof (ref_psize));
fmt_bytes(parsable, dds->dds_ref_dsize, ref_dsize, sizeof (ref_dsize));

(void) printf("%6s %6s %5s %5s %5s %6s %5s %5s %5s\n",
refcnt,
Expand All @@ -67,7 +86,8 @@ dump_ddt_stat(const ddt_stat_t *dds, int h)
* Print the DDT histogram and the column totals.
*/
void
zpool_dump_ddt(const ddt_stat_t *dds_total, const ddt_histogram_t *ddh)
zpool_dump_ddt(const ddt_stat_t *dds_total, const ddt_histogram_t *ddh,
boolean_t parsable)
{
int h;

Expand All @@ -91,9 +111,9 @@ zpool_dump_ddt(const ddt_stat_t *dds_total, const ddt_histogram_t *ddh)
"------", "-----", "-----", "-----");

for (h = 0; h < 64; h++)
dump_ddt_stat(&ddh->ddh_stat[h], h);
dump_ddt_stat(&ddh->ddh_stat[h], h, parsable);

dump_ddt_stat(dds_total, -1);
dump_ddt_stat(dds_total, -1, parsable);

(void) printf("\n");
}
Expand Down
Loading