Lines Matching +full:vd +full:- +full:supply
1 // SPDX-License-Identifier: CDDL-1.0
10 * or https://opensource.org/licenses/CDDL-1.0.
172 return (livelist_compare(&l->svbr_blk, &r->svbr_blk)); in sublivelist_block_refcnt_compare()
186 * This field is not used for our B-Tree comparisons in sublivelist_verify_blkptr()
194 zfs_btree_find(&sv->sv_pair, ¤t, &where); in sublivelist_verify_blkptr()
198 zfs_btree_add(&sv->sv_pair, ¤t); in sublivelist_verify_blkptr()
200 pair->svbr_refcnt++; in sublivelist_verify_blkptr()
206 if (DVA_IS_EMPTY(&bp->blk_dva[i])) in sublivelist_verify_blkptr()
209 .svb_dva = bp->blk_dva[i], in sublivelist_verify_blkptr()
214 if (zfs_btree_find(&sv->sv_leftover, &svb, in sublivelist_verify_blkptr()
216 zfs_btree_add_idx(&sv->sv_leftover, in sublivelist_verify_blkptr()
222 pair->svbr_refcnt--; in sublivelist_verify_blkptr()
223 if (pair->svbr_refcnt == 0) { in sublivelist_verify_blkptr()
225 zfs_btree_remove_idx(&sv->sv_pair, &where); in sublivelist_verify_blkptr()
239 zfs_btree_create(&sv->sv_pair, sublivelist_block_refcnt_compare, NULL, in sublivelist_verify_func()
242 err = bpobj_iterate_nofree(&dle->dle_bpobj, sublivelist_verify_blkptr, in sublivelist_verify_func()
247 while ((e = zfs_btree_destroy_nodes(&sv->sv_pair, &cookie)) != NULL) { in sublivelist_verify_func()
250 &e->svbr_blk, B_TRUE); in sublivelist_verify_func()
252 e->svbr_refcnt, blkbuf); in sublivelist_verify_func()
254 zfs_btree_destroy(&sv->sv_pair); in sublivelist_verify_func()
265 if (DVA_GET_VDEV(&l->svb_dva) < DVA_GET_VDEV(&r->svb_dva)) in livelist_block_compare()
266 return (-1); in livelist_block_compare()
267 else if (DVA_GET_VDEV(&l->svb_dva) > DVA_GET_VDEV(&r->svb_dva)) in livelist_block_compare()
270 if (DVA_GET_OFFSET(&l->svb_dva) < DVA_GET_OFFSET(&r->svb_dva)) in livelist_block_compare()
271 return (-1); in livelist_block_compare()
272 else if (DVA_GET_OFFSET(&l->svb_dva) > DVA_GET_OFFSET(&r->svb_dva)) in livelist_block_compare()
275 if (DVA_GET_ASIZE(&l->svb_dva) < DVA_GET_ASIZE(&r->svb_dva)) in livelist_block_compare()
276 return (-1); in livelist_block_compare()
277 else if (DVA_GET_ASIZE(&l->svb_dva) > DVA_GET_ASIZE(&r->svb_dva)) in livelist_block_compare()
285 * sublivelist_verify_t: sv->sv_leftover
348 return (uic->uic_cb(uic->uic_spa, sme, uic->uic_txg, uic->uic_arg)); in iterate_through_spacemap_logs_cb()
358 for (spa_log_sm_t *sls = avl_first(&spa->spa_sm_logs_by_txg); in iterate_through_spacemap_logs()
359 sls; sls = AVL_NEXT(&spa->spa_sm_logs_by_txg, sls)) { in iterate_through_spacemap_logs()
362 sls->sls_sm_obj, 0, UINT64_MAX, SPA_MINBLOCKSHIFT)); in iterate_through_spacemap_logs()
366 .uic_txg = sls->sls_txg, in iterate_through_spacemap_logs()
382 DVA_SET_VDEV(&svb.svb_dva, mv->mv_vdid); in verify_livelist_allocs()
394 zfs_btree_find(&mv->mv_livelist_allocs, &svb, &where); in verify_livelist_allocs()
396 found = zfs_btree_next(&mv->mv_livelist_allocs, &where, &where); in verify_livelist_allocs()
398 for (; found != NULL && DVA_GET_VDEV(&found->svb_dva) == mv->mv_vdid && in verify_livelist_allocs()
399 DVA_GET_OFFSET(&found->svb_dva) < end_offset; in verify_livelist_allocs()
400 found = zfs_btree_next(&mv->mv_livelist_allocs, &where, &where)) { in verify_livelist_allocs()
401 if (found->svb_allocated_txg <= txg) { in verify_livelist_allocs()
404 (u_longlong_t)DVA_GET_OFFSET(&found->svb_dva), in verify_livelist_allocs()
405 (u_longlong_t)DVA_GET_ASIZE(&found->svb_dva), in verify_livelist_allocs()
406 (u_longlong_t)found->svb_allocated_txg, in verify_livelist_allocs()
416 uint64_t offset = sme->sme_offset; in metaslab_spacemap_validation_cb()
417 uint64_t size = sme->sme_run; in metaslab_spacemap_validation_cb()
418 uint64_t txg = sme->sme_txg; in metaslab_spacemap_validation_cb()
420 if (sme->sme_type == SM_ALLOC) { in metaslab_spacemap_validation_cb()
421 if (zfs_range_tree_contains(mv->mv_allocated, in metaslab_spacemap_validation_cb()
427 (u_longlong_t)size, (u_longlong_t)mv->mv_vdid, in metaslab_spacemap_validation_cb()
428 (u_longlong_t)mv->mv_msid); in metaslab_spacemap_validation_cb()
430 zfs_range_tree_add(mv->mv_allocated, in metaslab_spacemap_validation_cb()
434 if (!zfs_range_tree_contains(mv->mv_allocated, in metaslab_spacemap_validation_cb()
440 (u_longlong_t)size, (u_longlong_t)mv->mv_vdid, in metaslab_spacemap_validation_cb()
441 (u_longlong_t)mv->mv_msid); in metaslab_spacemap_validation_cb()
443 zfs_range_tree_remove(mv->mv_allocated, in metaslab_spacemap_validation_cb()
448 if (sme->sme_type != SM_ALLOC) { in metaslab_spacemap_validation_cb()
463 uint64_t offset = sme->sme_offset; in spacemap_check_sm_log_cb()
464 uint64_t vdev_id = sme->sme_vdev; in spacemap_check_sm_log_cb()
466 vdev_t *vd = vdev_lookup_top(spa, vdev_id); in spacemap_check_sm_log_cb() local
469 if (!vdev_is_concrete(vd)) in spacemap_check_sm_log_cb()
472 if (vdev_id != mv->mv_vdid) in spacemap_check_sm_log_cb()
475 metaslab_t *ms = vd->vdev_ms[offset >> vd->vdev_ms_shift]; in spacemap_check_sm_log_cb()
476 if (ms->ms_id != mv->mv_msid) in spacemap_check_sm_log_cb()
483 ASSERT3U(txg, ==, sme->sme_txg); in spacemap_check_sm_log_cb()
514 ASSERT3U(zfs_btree_numnodes(&mv->mv_livelist_allocs), ==, 0); in mv_populate_livelist_allocs()
515 for (svb = zfs_btree_first(&sv->sv_leftover, &where); in mv_populate_livelist_allocs()
517 svb = zfs_btree_next(&sv->sv_leftover, &where, &where)) { in mv_populate_livelist_allocs()
518 if (DVA_GET_VDEV(&svb->svb_dva) != mv->mv_vdid) in mv_populate_livelist_allocs()
521 if (DVA_GET_OFFSET(&svb->svb_dva) < mv->mv_start && in mv_populate_livelist_allocs()
522 (DVA_GET_OFFSET(&svb->svb_dva) + in mv_populate_livelist_allocs()
523 DVA_GET_ASIZE(&svb->svb_dva)) > mv->mv_start) { in mv_populate_livelist_allocs()
526 (u_longlong_t)DVA_GET_VDEV(&svb->svb_dva), in mv_populate_livelist_allocs()
527 (u_longlong_t)DVA_GET_OFFSET(&svb->svb_dva), in mv_populate_livelist_allocs()
528 (u_longlong_t)DVA_GET_ASIZE(&svb->svb_dva)); in mv_populate_livelist_allocs()
532 if (DVA_GET_OFFSET(&svb->svb_dva) < mv->mv_start) in mv_populate_livelist_allocs()
535 if (DVA_GET_OFFSET(&svb->svb_dva) >= mv->mv_end) in mv_populate_livelist_allocs()
538 if ((DVA_GET_OFFSET(&svb->svb_dva) + in mv_populate_livelist_allocs()
539 DVA_GET_ASIZE(&svb->svb_dva)) > mv->mv_end) { in mv_populate_livelist_allocs()
542 (u_longlong_t)DVA_GET_VDEV(&svb->svb_dva), in mv_populate_livelist_allocs()
543 (u_longlong_t)DVA_GET_OFFSET(&svb->svb_dva), in mv_populate_livelist_allocs()
544 (u_longlong_t)DVA_GET_ASIZE(&svb->svb_dva)); in mv_populate_livelist_allocs()
548 zfs_btree_add(&mv->mv_livelist_allocs, svb); in mv_populate_livelist_allocs()
551 for (svb = zfs_btree_first(&mv->mv_livelist_allocs, &where); in mv_populate_livelist_allocs()
553 svb = zfs_btree_next(&mv->mv_livelist_allocs, &where, &where)) { in mv_populate_livelist_allocs()
554 zfs_btree_remove(&sv->sv_leftover, svb); in mv_populate_livelist_allocs()
561 * - report leftover frees (**)
562 * - record leftover ALLOCs together with their TXG [see Cross Check]
571 * - iterate over spacemap and then the metaslab's entries in the
600 vdev_t *rvd = spa->spa_root_vdev; in livelist_metaslab_validate()
601 for (uint64_t c = 0; c < rvd->vdev_children; c++) { in livelist_metaslab_validate()
602 vdev_t *vd = rvd->vdev_child[c]; in livelist_metaslab_validate() local
604 if (!vdev_is_concrete(vd)) in livelist_metaslab_validate()
607 for (uint64_t mid = 0; mid < vd->vdev_ms_count; mid++) { in livelist_metaslab_validate()
608 metaslab_t *m = vd->vdev_ms[mid]; in livelist_metaslab_validate()
613 (longlong_t)vd->vdev_id, in livelist_metaslab_validate()
615 (longlong_t)vd->vdev_ms_count); in livelist_metaslab_validate()
619 metaslab_calculate_range_tree_type(vd, m, in livelist_metaslab_validate()
624 mv.mv_vdid = vd->vdev_id; in livelist_metaslab_validate()
625 mv.mv_msid = m->ms_id; in livelist_metaslab_validate()
626 mv.mv_start = m->ms_start; in livelist_metaslab_validate()
627 mv.mv_end = m->ms_start + m->ms_size; in livelist_metaslab_validate()
634 spacemap_check_ms_sm(m->ms_sm, &mv); in livelist_metaslab_validate()
662 int vdev_id = DVA_GET_VDEV(&svb->svb_dva); in livelist_metaslab_validate()
663 ASSERT3U(vdev_id, <, rvd->vdev_children); in livelist_metaslab_validate()
664 vdev_t *vd = rvd->vdev_child[vdev_id]; in livelist_metaslab_validate() local
665 ASSERT(!vdev_is_concrete(vd)); in livelist_metaslab_validate()
667 vdev_id, (u_longlong_t)DVA_GET_OFFSET(&svb->svb_dva), in livelist_metaslab_validate()
668 (u_longlong_t)DVA_GET_ASIZE(&svb->svb_dva), in livelist_metaslab_validate()
669 (u_longlong_t)svb->svb_allocated_txg); in livelist_metaslab_validate()
695 "Usage:\t%s [-AbcdDFGhikLMPsvXy] [-e [-V] [-p <path> ...]] " in usage()
696 "[-I <inflight I/Os>]\n" in usage()
697 "\t\t[-o <var>=<value>]... [-t <txg>] [-U <cache>] [-x <dumpdir>]\n" in usage()
698 "\t\t[-K <key>]\n" in usage()
700 "\t%s [-AdiPv] [-e [-V] [-p <path> ...]] [-U <cache>] [-K <key>]\n" in usage()
702 "\t%s -B [-e [-V] [-p <path> ...]] [-I <inflight I/Os>]\n" in usage()
703 "\t\t[-o <var>=<value>]... [-t <txg>] [-U <cache>] [-x <dumpdir>]\n" in usage()
704 "\t\t[-K <key>] <poolname>/<objset id> [<backupflags>]\n" in usage()
705 "\t%s [-v] <bookmark>\n" in usage()
706 "\t%s -C [-A] [-U <cache>] [<poolname>]\n" in usage()
707 "\t%s -l [-Aqu] <device>\n" in usage()
708 "\t%s -m [-AFLPX] [-e [-V] [-p <path> ...]] [-t <txg>] " in usage()
709 "[-U <cache>]\n\t\t<poolname> [<vdev> [<metaslab> ...]]\n" in usage()
710 "\t%s -O [-K <key>] <dataset> <path>\n" in usage()
711 "\t%s -r [-K <key>] <dataset> <path> <destination>\n" in usage()
712 "\t%s -R [-A] [-e [-V] [-p <path> ...]] [-U <cache>]\n" in usage()
714 "\t%s -E [-A] word0:word1:...:word15\n" in usage()
715 "\t%s -S [-AP] [-e [-V] [-p <path> ...]] [-U <cache>] " in usage()
730 " end Ending object number, or -1 for no upper bound\n" in usage()
737 " - Negate effect of next flag\n\n"); in usage()
739 (void) fprintf(stderr, " -b --block-stats " in usage()
741 (void) fprintf(stderr, " -B --backup " in usage()
743 (void) fprintf(stderr, " -c --checksum " in usage()
745 (void) fprintf(stderr, " -C --config " in usage()
747 (void) fprintf(stderr, " -d --datasets " in usage()
749 (void) fprintf(stderr, " -D --dedup-stats " in usage()
751 (void) fprintf(stderr, " -E --embedded-block-pointer=INTEGER\n" in usage()
754 (void) fprintf(stderr, " -h --history " in usage()
756 (void) fprintf(stderr, " -i --intent-logs " in usage()
758 (void) fprintf(stderr, " -l --label " in usage()
760 (void) fprintf(stderr, " -k --checkpointed-state " in usage()
762 (void) fprintf(stderr, " -L --disable-leak-tracking " in usage()
764 (void) fprintf(stderr, " -m --metaslabs " in usage()
766 (void) fprintf(stderr, " -M --metaslab-groups " in usage()
768 (void) fprintf(stderr, " -O --object-lookups " in usage()
770 (void) fprintf(stderr, " -r --copy-object " in usage()
772 (void) fprintf(stderr, " -R --read-block " in usage()
774 (void) fprintf(stderr, " -s --io-stats " in usage()
776 (void) fprintf(stderr, " -S --simulate-dedup " in usage()
778 (void) fprintf(stderr, " -v --verbose " in usage()
780 (void) fprintf(stderr, " -y --livelist " in usage()
785 (void) fprintf(stderr, " -A --ignore-assertions " in usage()
786 "ignore assertions (-A), enable panic recovery (-AA) or both " in usage()
787 "(-AAA)\n"); in usage()
788 (void) fprintf(stderr, " -e --exported " in usage()
790 (void) fprintf(stderr, " -F --automatic-rewind " in usage()
793 (void) fprintf(stderr, " -G --dump-debug-msg " in usage()
795 (void) fprintf(stderr, " -I --inflight=INTEGER " in usage()
798 (void) fprintf(stderr, " -K --key=KEY " in usage()
800 (void) fprintf(stderr, " -o --option=\"OPTION=INTEGER\" " in usage()
801 "set global variable to an unsigned 32-bit integer\n"); in usage()
802 (void) fprintf(stderr, " -p --path==PATH " in usage()
803 "use one or more with -e to specify path to vdev dir\n"); in usage()
804 (void) fprintf(stderr, " -P --parseable " in usage()
806 (void) fprintf(stderr, " -q --skip-label " in usage()
808 (void) fprintf(stderr, " -t --txg=INTEGER " in usage()
810 (void) fprintf(stderr, " -T --brt-stats " in usage()
812 (void) fprintf(stderr, " -u --uberblock " in usage()
814 (void) fprintf(stderr, " -U --cachefile=PATH " in usage()
816 (void) fprintf(stderr, " -V --verbatim " in usage()
818 (void) fprintf(stderr, " -x --dump-blocks=PATH " in usage()
820 (void) fprintf(stderr, " -X --extreme-rewind " in usage()
822 (void) fprintf(stderr, " -Y --all-reconstruction " in usage()
824 (void) fprintf(stderr, " -Z --zstd-headers " in usage()
826 (void) fprintf(stderr, "Specify an option more than once (e.g. -bb) " in usage()
828 (void) fprintf(stderr, "Default is to dump everything non-verbosely\n"); in usage()
855 * Restore default action and re-raise signal so SIGSEGV and in sig_handler()
915 (u_longlong_t)shp->sh_pool_create_len); in dump_history_offsets()
917 (u_longlong_t)shp->sh_phys_max_off); in dump_history_offsets()
919 (u_longlong_t)shp->sh_bof); in dump_history_offsets()
921 (u_longlong_t)shp->sh_eof); in dump_history_offsets()
923 (u_longlong_t)shp->sh_records_lost); in dump_history_offsets()
945 static const uint64_t histo_width = sizeof (histo_stars) - 1;
951 int minidx = size - 1; in dump_histogram()
972 &histo_stars[(max - histo[i]) * histo_width / max]); in dump_histogram()
1073 * allocation failures and nigh-infinite printing if the in dump_uint64()
1136 *(uint64_t *)attrp->za_name); in dump_zap()
1138 (void) printf("\t\t%s = ", attrp->za_name); in dump_zap()
1140 if (attrp->za_num_integers == 0) { in dump_zap()
1144 prop = umem_zalloc(attrp->za_num_integers * in dump_zap()
1145 attrp->za_integer_length, UMEM_NOFAIL); in dump_zap()
1149 (const uint64_t *)attrp->za_name, 1, in dump_zap()
1150 attrp->za_integer_length, attrp->za_num_integers, in dump_zap()
1153 (void) zap_lookup(os, object, attrp->za_name, in dump_zap()
1154 attrp->za_integer_length, attrp->za_num_integers, in dump_zap()
1157 if (attrp->za_integer_length == 1 && !key64) { in dump_zap()
1158 if (strcmp(attrp->za_name, in dump_zap()
1160 strcmp(attrp->za_name, in dump_zap()
1162 strcmp(attrp->za_name, DSL_CRYPTO_KEY_IV) == 0 || in dump_zap()
1163 strcmp(attrp->za_name, DSL_CRYPTO_KEY_MAC) == 0 || in dump_zap()
1164 strcmp(attrp->za_name, in dump_zap()
1168 for (i = 0; i < attrp->za_num_integers; i++) { in dump_zap()
1175 for (i = 0; i < attrp->za_num_integers; i++) { in dump_zap()
1176 switch (attrp->za_integer_length) { in dump_zap()
1198 attrp->za_num_integers * attrp->za_integer_length); in dump_zap()
1219 zdb_nicenum(bpop->bpo_bytes, bytes, sizeof (bytes)); in dump_bpobj()
1220 zdb_nicenum(bpop->bpo_comp, comp, sizeof (comp)); in dump_bpobj()
1221 zdb_nicenum(bpop->bpo_uncomp, uncomp, sizeof (uncomp)); in dump_bpobj()
1224 (u_longlong_t)bpop->bpo_num_blkptrs); in dump_bpobj()
1232 (u_longlong_t)bpop->bpo_subobjs); in dump_bpobj()
1234 (u_longlong_t)bpop->bpo_num_subobjs); in dump_bpobj()
1238 (u_longlong_t)bpop->bpo_num_freed); in dump_bpobj()
1244 for (i = 0; i < bpop->bpo_num_blkptrs; i++) { in dump_bpobj()
1277 int64_t last_nonzero = -1; in dump_bpobj_subobjs()
1310 (void) printf("\t\t%s = ", attrp->za_name); in dump_sa_attrs()
1311 if (attrp->za_num_integers == 0) { in dump_sa_attrs()
1316 (u_longlong_t)attrp->za_first_integer, in dump_sa_attrs()
1317 (int)ATTR_LENGTH(attrp->za_first_integer), in dump_sa_attrs()
1318 (int)ATTR_BSWAP(attrp->za_first_integer), in dump_sa_attrs()
1319 (int)ATTR_NUM(attrp->za_first_integer)); in dump_sa_attrs()
1340 (void) printf("\t\t%s = [", attrp->za_name); in dump_sa_layouts()
1341 if (attrp->za_num_integers == 0) { in dump_sa_layouts()
1346 VERIFY(attrp->za_integer_length == 2); in dump_sa_layouts()
1347 layout_attrs = umem_zalloc(attrp->za_num_integers * in dump_sa_layouts()
1348 attrp->za_integer_length, UMEM_NOFAIL); in dump_sa_layouts()
1350 VERIFY(zap_lookup(os, object, attrp->za_name, in dump_sa_layouts()
1351 attrp->za_integer_length, in dump_sa_layouts()
1352 attrp->za_num_integers, layout_attrs) == 0); in dump_sa_layouts()
1354 for (i = 0; i != attrp->za_num_integers; i++) in dump_sa_layouts()
1358 attrp->za_num_integers * attrp->za_integer_length); in dump_sa_layouts()
1396 attrp->za_name, ZFS_DIRENT_OBJ(attrp->za_first_integer), in dump_zpldir()
1397 typenames[ZFS_DIRENT_TYPE(attrp->za_first_integer)]); in dump_zpldir()
1404 get_dtl_refcount(vdev_t *vd) in get_dtl_refcount() argument
1408 if (vd->vdev_ops->vdev_op_leaf) { in get_dtl_refcount()
1409 space_map_t *sm = vd->vdev_dtl_sm; in get_dtl_refcount()
1412 sm->sm_dbuf->db_size == sizeof (space_map_phys_t)) in get_dtl_refcount()
1417 for (unsigned c = 0; c < vd->vdev_children; c++) in get_dtl_refcount()
1418 refcount += get_dtl_refcount(vd->vdev_child[c]); in get_dtl_refcount()
1423 get_metaslab_refcount(vdev_t *vd) in get_metaslab_refcount() argument
1427 if (vd->vdev_top == vd) { in get_metaslab_refcount()
1428 for (uint64_t m = 0; m < vd->vdev_ms_count; m++) { in get_metaslab_refcount()
1429 space_map_t *sm = vd->vdev_ms[m]->ms_sm; in get_metaslab_refcount()
1432 sm->sm_dbuf->db_size == sizeof (space_map_phys_t)) in get_metaslab_refcount()
1436 for (unsigned c = 0; c < vd->vdev_children; c++) in get_metaslab_refcount()
1437 refcount += get_metaslab_refcount(vd->vdev_child[c]); in get_metaslab_refcount()
1443 get_obsolete_refcount(vdev_t *vd) in get_obsolete_refcount() argument
1448 VERIFY0(vdev_obsolete_sm_object(vd, &obsolete_sm_object)); in get_obsolete_refcount()
1449 if (vd->vdev_top == vd && obsolete_sm_object != 0) { in get_obsolete_refcount()
1451 VERIFY0(dmu_object_info(vd->vdev_spa->spa_meta_objset, in get_obsolete_refcount()
1457 ASSERT3P(vd->vdev_obsolete_sm, ==, NULL); in get_obsolete_refcount()
1460 for (unsigned c = 0; c < vd->vdev_children; c++) { in get_obsolete_refcount()
1461 refcount += get_obsolete_refcount(vd->vdev_child[c]); in get_obsolete_refcount()
1471 spa->spa_condensing_indirect_phys.scip_prev_obsolete_sm_object; in get_prev_obsolete_spacemap_refcount()
1474 VERIFY0(dmu_object_info(spa->spa_meta_objset, prev_obj, &doi)); in get_prev_obsolete_spacemap_refcount()
1483 get_checkpoint_refcount(vdev_t *vd) in get_checkpoint_refcount() argument
1487 if (vd->vdev_top == vd && vd->vdev_top_zap != 0 && in get_checkpoint_refcount()
1488 zap_contains(spa_meta_objset(vd->vdev_spa), in get_checkpoint_refcount()
1489 vd->vdev_top_zap, VDEV_TOP_ZAP_POOL_CHECKPOINT_SM) == 0) in get_checkpoint_refcount()
1492 for (uint64_t c = 0; c < vd->vdev_children; c++) in get_checkpoint_refcount()
1493 refcount += get_checkpoint_refcount(vd->vdev_child[c]); in get_checkpoint_refcount()
1501 return (avl_numnodes(&spa->spa_sm_logs_by_txg)); in get_log_spacemap_refcount()
1513 actual_refcount = get_dtl_refcount(spa->spa_root_vdev); in verify_spacemap_refcounts()
1514 actual_refcount += get_metaslab_refcount(spa->spa_root_vdev); in verify_spacemap_refcounts()
1515 actual_refcount += get_obsolete_refcount(spa->spa_root_vdev); in verify_spacemap_refcounts()
1517 actual_refcount += get_checkpoint_refcount(spa->spa_root_vdev); in verify_spacemap_refcounts()
1540 (longlong_t)sm->sm_object); in dump_spacemap()
1542 (longlong_t)sm->sm_phys->smp_length); in dump_spacemap()
1544 (longlong_t)sm->sm_phys->smp_alloc); in dump_spacemap()
1552 uint8_t mapshift = sm->sm_shift; in dump_spacemap()
1588 sm->sm_start; in dump_spacemap()
1592 /* it is a two-word entry so we read another word */ in dump_spacemap()
1608 mapshift) + sm->sm_start; in dump_spacemap()
1613 " %010llx-%010llx size: %06llx vdev: %06llu words: %u\n", in dump_spacemap()
1623 alloc -= entry_run; in dump_spacemap()
1637 zfs_range_tree_t *rt = msp->ms_allocatable; in dump_metaslab_stats()
1638 zfs_btree_t *t = &msp->ms_allocatable_by_size; in dump_metaslab_stats()
1639 int free_pct = zfs_range_tree_space(rt) * 100 / msp->ms_size; in dump_metaslab_stats()
1649 (void) printf("\tIn-memory histogram:\n"); in dump_metaslab_stats()
1650 dump_histogram(rt->rt_histogram, ZFS_RANGE_TREE_HISTOGRAM_SIZE, 0); in dump_metaslab_stats()
1656 vdev_t *vd = msp->ms_group->mg_vd; in dump_metaslab() local
1657 spa_t *spa = vd->vdev_spa; in dump_metaslab()
1658 space_map_t *sm = msp->ms_sm; in dump_metaslab()
1661 zdb_nicenum(msp->ms_size - space_map_allocated(sm), freebuf, in dump_metaslab()
1666 (u_longlong_t)msp->ms_id, (u_longlong_t)msp->ms_start, in dump_metaslab()
1670 mutex_enter(&msp->ms_lock); in dump_metaslab()
1672 zfs_range_tree_stat_verify(msp->ms_allocatable); in dump_metaslab()
1675 mutex_exit(&msp->ms_lock); in dump_metaslab()
1684 (void) printf("\tOn-disk histogram:\t\tfragmentation %llu\n", in dump_metaslab()
1685 (u_longlong_t)msp->ms_fragmentation); in dump_metaslab()
1686 dump_histogram(sm->sm_phys->smp_histogram, in dump_metaslab()
1687 SPACE_MAP_HISTOGRAM_SIZE, sm->sm_shift); in dump_metaslab()
1690 if (vd->vdev_ops == &vdev_draid_ops) in dump_metaslab()
1691 ASSERT3U(msp->ms_size, <=, 1ULL << vd->vdev_ms_shift); in dump_metaslab()
1693 ASSERT3U(msp->ms_size, ==, 1ULL << vd->vdev_ms_shift); in dump_metaslab()
1695 dump_spacemap(spa->spa_meta_objset, msp->ms_sm); in dump_metaslab()
1704 print_vdev_metaslab_header(vdev_t *vd) in print_vdev_metaslab_header() argument
1706 vdev_alloc_bias_t alloc_bias = vd->vdev_alloc_bias; in print_vdev_metaslab_header()
1708 if (alloc_bias == VDEV_BIAS_LOG || vd->vdev_islog) { in print_vdev_metaslab_header()
1717 if (vd->vdev_top_zap != 0) { in print_vdev_metaslab_header()
1718 int error = zap_lookup(spa_meta_objset(vd->vdev_spa), in print_vdev_metaslab_header()
1719 vd->vdev_top_zap, VDEV_TOP_ZAP_MS_UNFLUSHED_PHYS_TXGS, in print_vdev_metaslab_header()
1727 (u_longlong_t)vd->vdev_id, bias_str); in print_vdev_metaslab_header()
1734 (void) printf("\n\t%-10s%5llu %-19s %-15s %-12s\n", in print_vdev_metaslab_header()
1735 "metaslabs", (u_longlong_t)vd->vdev_ms_count, in print_vdev_metaslab_header()
1738 "---------------", "-------------------", in print_vdev_metaslab_header()
1739 "---------------", "------------"); in print_vdev_metaslab_header()
1745 vdev_t *rvd = spa->spa_root_vdev; in dump_metaslab_groups()
1752 for (unsigned c = 0; c < rvd->vdev_children; c++) { in dump_metaslab_groups()
1753 vdev_t *tvd = rvd->vdev_child[c]; in dump_metaslab_groups()
1754 metaslab_group_t *mg = tvd->vdev_mg; in dump_metaslab_groups()
1756 if (mg == NULL || (mg->mg_class != mc && in dump_metaslab_groups()
1757 (!show_special || mg->mg_class != smc))) in dump_metaslab_groups()
1761 mg->mg_fragmentation = metaslab_group_fragmentation(mg); in dump_metaslab_groups()
1765 (u_longlong_t)tvd->vdev_id, in dump_metaslab_groups()
1766 (u_longlong_t)tvd->vdev_ms_count); in dump_metaslab_groups()
1767 if (mg->mg_fragmentation == ZFS_FRAG_INVALID) { in dump_metaslab_groups()
1768 (void) printf("%3s\n", "-"); in dump_metaslab_groups()
1771 (u_longlong_t)mg->mg_fragmentation); in dump_metaslab_groups()
1773 dump_histogram(mg->mg_histogram, in dump_metaslab_groups()
1780 (void) printf("\t%3s\n", "-"); in dump_metaslab_groups()
1783 dump_histogram(mc->mc_histogram, ZFS_RANGE_TREE_HISTOGRAM_SIZE, 0); in dump_metaslab_groups()
1787 print_vdev_indirect(vdev_t *vd) in print_vdev_indirect() argument
1789 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in print_vdev_indirect()
1790 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in print_vdev_indirect()
1791 vdev_indirect_births_t *vib = vd->vdev_indirect_births; in print_vdev_indirect()
1799 vic->vic_mapping_object); in print_vdev_indirect()
1801 vic->vic_births_object); in print_vdev_indirect()
1804 (longlong_t)vic->vic_births_object); in print_vdev_indirect()
1809 &vib->vib_entries[i]; in print_vdev_indirect()
1810 (void) printf("\toffset %llx -> txg %llu\n", in print_vdev_indirect()
1811 (longlong_t)cur_vibe->vibe_offset, in print_vdev_indirect()
1812 (longlong_t)cur_vibe->vibe_phys_birth_txg); in print_vdev_indirect()
1817 (longlong_t)vic->vic_mapping_object); in print_vdev_indirect()
1832 &vim->vim_entries[i]; in print_vdev_indirect()
1833 (void) printf("\t<%llx:%llx:%llx> -> " in print_vdev_indirect()
1835 (longlong_t)vd->vdev_id, in print_vdev_indirect()
1837 (longlong_t)DVA_GET_ASIZE(&vimep->vimep_dst), in print_vdev_indirect()
1838 (longlong_t)DVA_GET_VDEV(&vimep->vimep_dst), in print_vdev_indirect()
1839 (longlong_t)DVA_GET_OFFSET(&vimep->vimep_dst), in print_vdev_indirect()
1840 (longlong_t)DVA_GET_ASIZE(&vimep->vimep_dst), in print_vdev_indirect()
1846 VERIFY0(vdev_obsolete_sm_object(vd, &obsolete_sm_object)); in print_vdev_indirect()
1848 objset_t *mos = vd->vdev_spa->spa_meta_objset; in print_vdev_indirect()
1851 ASSERT(vd->vdev_obsolete_sm != NULL); in print_vdev_indirect()
1852 ASSERT3U(space_map_object(vd->vdev_obsolete_sm), ==, in print_vdev_indirect()
1854 dump_spacemap(mos, vd->vdev_obsolete_sm); in print_vdev_indirect()
1862 vdev_t *vd, *rvd = spa->spa_root_vdev; in dump_metaslabs() local
1863 uint64_t m, c = 0, children = rvd->vdev_children; in dump_metaslabs()
1874 vd = rvd->vdev_child[c]; in dump_metaslabs()
1875 print_vdev_metaslab_header(vd); in dump_metaslabs()
1878 if (zopt_metaslab[m] < vd->vdev_ms_count) in dump_metaslabs()
1880 vd->vdev_ms[zopt_metaslab[m]]); in dump_metaslabs()
1892 vd = rvd->vdev_child[c]; in dump_metaslabs()
1893 print_vdev_metaslab_header(vd); in dump_metaslabs()
1895 print_vdev_indirect(vd); in dump_metaslabs()
1897 for (m = 0; m < vd->vdev_ms_count; m++) in dump_metaslabs()
1898 dump_metaslab(vd->vdev_ms[m]); in dump_metaslabs()
1910 for (spa_log_sm_t *sls = avl_first(&spa->spa_sm_logs_by_txg); in dump_log_spacemaps()
1911 sls; sls = AVL_NEXT(&spa->spa_sm_logs_by_txg, sls)) { in dump_log_spacemaps()
1914 sls->sls_sm_obj, 0, UINT64_MAX, SPA_MINBLOCKSHIFT)); in dump_log_spacemaps()
1917 (u_longlong_t)sls->sls_sm_obj, (u_longlong_t)sls->sls_txg); in dump_log_spacemaps()
1918 dump_spacemap(spa->spa_meta_objset, sm); in dump_log_spacemaps()
1928 const ddt_key_t *ddk = &ddlwe->ddlwe_key; in dump_ddt_entry()
1934 const ddt_univ_phys_t *ddp = &ddlwe->ddlwe_phys; in dump_ddt_entry()
1939 ddt_bp_create(ddt->ddt_checksum, ddk, ddp, v, &blk); in dump_ddt_entry()
1952 if (dds->dds_blocks == 0) in dump_dedup_ratio()
1955 rL = (double)dds->dds_ref_lsize; in dump_dedup_ratio()
1956 rP = (double)dds->dds_ref_psize; in dump_dedup_ratio()
1957 rD = (double)dds->dds_ref_dsize; in dump_dedup_ratio()
1958 D = (double)dds->dds_dsize; in dump_dedup_ratio()
1972 if (ddt->ddt_version != DDT_VERSION_FDT || in dump_ddt_log()
1973 !(ddt->ddt_flags & DDT_FLAG_LOG)) in dump_ddt_log()
1977 ddt_log_t *ddl = &ddt->ddt_log[n]; in dump_ddt_log()
1980 if (ddl->ddl_flags > 0) { in dump_ddt_log()
1983 if (ddl->ddl_flags & DDL_FLAG_FLUSHING) in dump_ddt_log()
1985 sizeof (flagstr) - c); in dump_ddt_log()
1986 if (ddl->ddl_flags & DDL_FLAG_CHECKPOINT) in dump_ddt_log()
1988 sizeof (flagstr) - c); in dump_ddt_log()
1989 if (ddl->ddl_flags & in dump_ddt_log()
1992 sizeof (flagstr) - c); in dump_ddt_log()
1997 uint64_t count = avl_numnodes(&ddl->ddl_tree); in dump_ddt_log()
2001 zio_checksum_table[ddt->ddt_checksum].ci_name, n, in dump_ddt_log()
2002 ddl->ddl_flags, flagstr, in dump_ddt_log()
2003 (u_longlong_t)ddl->ddl_object, in dump_ddt_log()
2004 (u_longlong_t)ddl->ddl_length, in dump_ddt_log()
2005 (u_longlong_t)ddl->ddl_first_txg, (u_longlong_t)count); in dump_ddt_log()
2007 if (ddl->ddl_flags & DDL_FLAG_CHECKPOINT) { in dump_ddt_log()
2008 const ddt_key_t *ddk = &ddl->ddl_checkpoint; in dump_ddt_log()
2011 (u_longlong_t)ddk->ddk_cksum.zc_word[0], in dump_ddt_log()
2012 (u_longlong_t)ddk->ddk_cksum.zc_word[1], in dump_ddt_log()
2013 (u_longlong_t)ddk->ddk_cksum.zc_word[2], in dump_ddt_log()
2014 (u_longlong_t)ddk->ddk_cksum.zc_word[3], in dump_ddt_log()
2015 (u_longlong_t)ddk->ddk_prop); in dump_ddt_log()
2023 for (ddt_log_entry_t *ddle = avl_first(&ddl->ddl_tree); in dump_ddt_log()
2024 ddle; ddle = AVL_NEXT(&ddl->ddl_tree, ddle)) { in dump_ddt_log()
2064 (u_longlong_t)ddt->ddt_object[type][class]); in dump_ddt_object()
2065 zpool_dump_ddt(NULL, &ddt->ddt_histogram[type][class]); in dump_ddt_object()
2086 if (!ddt || ddt->ddt_version == DDT_VERSION_UNCONFIGURED) in dump_ddt()
2090 if (ddt->ddt_flags > 0) { in dump_ddt()
2093 if (ddt->ddt_flags & DDT_FLAG_FLAT) in dump_ddt()
2095 sizeof (flagstr) - c); in dump_ddt()
2096 if (ddt->ddt_flags & DDT_FLAG_LOG) in dump_ddt()
2098 sizeof (flagstr) - c); in dump_ddt()
2099 if (ddt->ddt_flags & ~DDT_FLAG_MASK) in dump_ddt()
2101 sizeof (flagstr) - c); in dump_ddt()
2106 printf("DDT-%s: version=%llu [%s]; flags=0x%02llx%s; rootobj=%llu\n", in dump_ddt()
2107 zio_checksum_table[ddt->ddt_checksum].ci_name, in dump_ddt()
2108 (u_longlong_t)ddt->ddt_version, in dump_ddt()
2109 (ddt->ddt_version == 0) ? "LEGACY" : in dump_ddt()
2110 (ddt->ddt_version == 1) ? "FDT" : "UNKNOWN", in dump_ddt()
2111 (u_longlong_t)ddt->ddt_flags, flagstr, in dump_ddt()
2112 (u_longlong_t)ddt->ddt_dir_object); in dump_ddt()
2128 dump_ddt(spa->spa_ddt[c]); in dump_all_ddts()
2163 "-----", "---------", "----"); in dump_all_ddts()
2197 for (uint64_t vdevid = 0; vdevid < spa->spa_brt_nvdevs; vdevid++) { in dump_brt()
2198 brt_vdev_t *brtvd = spa->spa_brt_vdevs[vdevid]; in dump_brt()
2199 if (!brtvd->bv_initiated) { in dump_brt()
2204 zdb_nicenum(brtvd->bv_totalcount, count, sizeof (count)); in dump_brt()
2205 zdb_nicebytes(brtvd->bv_usedspace, used, sizeof (used)); in dump_brt()
2206 zdb_nicebytes(brtvd->bv_savedspace, saved, sizeof (saved)); in dump_brt()
2214 /* -TTT shows a per-vdev histograms; -TTTT shows all entries */ in dump_brt()
2220 printf("\n%-16s %-10s\n", "DVA", "REFCNT"); in dump_brt()
2222 for (uint64_t vdevid = 0; vdevid < spa->spa_brt_nvdevs; vdevid++) { in dump_brt()
2223 brt_vdev_t *brtvd = spa->spa_brt_vdevs[vdevid]; in dump_brt()
2224 if (!brtvd->bv_initiated) in dump_brt()
2231 for (zap_cursor_init(&zc, spa->spa_meta_objset, in dump_brt()
2232 brtvd->bv_mos_entries); in dump_brt()
2236 VERIFY0(zap_lookup_uint64(spa->spa_meta_objset, in dump_brt()
2237 brtvd->bv_mos_entries, in dump_brt()
2238 (const uint64_t *)za->za_name, 1, in dump_brt()
2239 za->za_integer_length, za->za_num_integers, in dump_brt()
2246 *(const uint64_t *)za->za_name; in dump_brt()
2250 printf("%-16s %-10llu\n", dva, in dump_brt()
2278 dump_dtl(vdev_t *vd, int indent) in dump_dtl() argument
2280 spa_t *spa = vd->vdev_spa; in dump_dtl()
2287 required = vdev_dtl_required(vd); in dump_dtl()
2294 vd->vdev_path ? vd->vdev_path : in dump_dtl()
2295 vd->vdev_parent ? vd->vdev_ops->vdev_op_type : spa_name(spa), in dump_dtl()
2296 required ? "DTL-required" : "DTL-expendable"); in dump_dtl()
2299 zfs_range_tree_t *rt = vd->vdev_dtl[t]; in dump_dtl()
2305 if (dump_opt['d'] > 5 && vd->vdev_children == 0) in dump_dtl()
2306 dump_spacemap(spa->spa_meta_objset, in dump_dtl()
2307 vd->vdev_dtl_sm); in dump_dtl()
2310 for (unsigned c = 0; c < vd->vdev_children; c++) in dump_dtl()
2311 dump_dtl(vd->vdev_child[c], indent + 4); in dump_dtl()
2343 off -= resid; in dump_history()
2444 ASSERT(zb->zb_level < 0); in blkid2offset()
2445 if (zb->zb_object == 0) in blkid2offset()
2446 return (zb->zb_blkid); in blkid2offset()
2447 return (zb->zb_blkid * BP_GET_LSIZE(bp)); in blkid2offset()
2450 ASSERT(zb->zb_level >= 0); in blkid2offset()
2452 return ((zb->zb_blkid << in blkid2offset()
2453 (zb->zb_level * (dnp->dn_indblkshift - SPA_BLKPTRSHIFT))) * in blkid2offset()
2454 dnp->dn_datablkszsec << SPA_MINBLOCKSHIFT); in blkid2offset()
2485 buflen - strlen(blkbuf), in snprintf_zstd_header()
2511 buflen - strlen(blkbuf), in snprintf_zstd_header()
2523 const dva_t *dva = bp->blk_dva; in snprintf_blkptr_compact()
2531 buflen - strlen(blkbuf), " %s", "FREE"); in snprintf_blkptr_compact()
2550 buflen - strlen(blkbuf), "%llu:%llx:%llx%s ", in snprintf_blkptr_compact()
2559 buflen - strlen(blkbuf), in snprintf_blkptr_compact()
2565 buflen - strlen(blkbuf), in snprintf_blkptr_compact()
2574 buflen - strlen(blkbuf), " %s", "FREE"); in snprintf_blkptr_compact()
2576 buflen - strlen(blkbuf), in snprintf_blkptr_compact()
2578 (u_longlong_t)bp->blk_cksum.zc_word[0], in snprintf_blkptr_compact()
2579 (u_longlong_t)bp->blk_cksum.zc_word[1], in snprintf_blkptr_compact()
2580 (u_longlong_t)bp->blk_cksum.zc_word[2], in snprintf_blkptr_compact()
2581 (u_longlong_t)bp->blk_cksum.zc_word[3]); in snprintf_blkptr_compact()
2593 ASSERT3U(BP_GET_TYPE(bp), ==, dnp->dn_type); in print_indirect()
2594 ASSERT3U(BP_GET_LEVEL(bp), ==, zb->zb_level); in print_indirect()
2599 ASSERT(zb->zb_level >= 0); in print_indirect()
2601 for (l = dnp->dn_nlevels - 1; l >= -1; l--) { in print_indirect()
2602 if (l == zb->zb_level) { in print_indirect()
2603 (void) printf("L%llx", (u_longlong_t)zb->zb_level); in print_indirect()
2639 ASSERT(buf->b_data); in visit_indirect()
2642 cbp = buf->b_data; in visit_indirect()
2646 SET_BOOKMARK(&czb, zb->zb_objset, zb->zb_object, in visit_indirect()
2647 zb->zb_level - 1, in visit_indirect()
2648 zb->zb_blkid * epb + i); in visit_indirect()
2665 dnode_phys_t *dnp = dn->dn_phys; in dump_indirect()
2670 SET_BOOKMARK(&czb, dmu_objset_id(dn->dn_objset), in dump_indirect()
2671 dn->dn_object, dnp->dn_nlevels - 1, 0); in dump_indirect()
2672 for (int j = 0; j < dnp->dn_nblkptr; j++) { in dump_indirect()
2674 (void) visit_indirect(dmu_objset_spa(dn->dn_objset), dnp, in dump_indirect()
2675 &dnp->dn_blkptr[j], &czb); in dump_indirect()
2697 crtime = dd->dd_creation_time; in dump_dsl_dir()
2700 (u_longlong_t)dd->dd_head_dataset_obj); in dump_dsl_dir()
2702 (u_longlong_t)dd->dd_parent_obj); in dump_dsl_dir()
2704 (u_longlong_t)dd->dd_origin_obj); in dump_dsl_dir()
2706 (u_longlong_t)dd->dd_child_dir_zapobj); in dump_dsl_dir()
2707 zdb_nicenum(dd->dd_used_bytes, nice, sizeof (nice)); in dump_dsl_dir()
2709 zdb_nicenum(dd->dd_compressed_bytes, nice, sizeof (nice)); in dump_dsl_dir()
2711 zdb_nicenum(dd->dd_uncompressed_bytes, nice, sizeof (nice)); in dump_dsl_dir()
2713 zdb_nicenum(dd->dd_quota, nice, sizeof (nice)); in dump_dsl_dir()
2715 zdb_nicenum(dd->dd_reserved, nice, sizeof (nice)); in dump_dsl_dir()
2718 (u_longlong_t)dd->dd_props_zapobj); in dump_dsl_dir()
2720 (u_longlong_t)dd->dd_deleg_zapobj); in dump_dsl_dir()
2722 (u_longlong_t)dd->dd_flags); in dump_dsl_dir()
2725 zdb_nicenum(dd->dd_used_breakdown[DD_USED_ ## which], nice, \ in dump_dsl_dir()
2735 (u_longlong_t)dd->dd_clones); in dump_dsl_dir()
2759 crtime = ds->ds_creation_time; in dump_dsl_dataset()
2760 zdb_nicenum(ds->ds_referenced_bytes, used, sizeof (used)); in dump_dsl_dataset()
2761 zdb_nicenum(ds->ds_compressed_bytes, compressed, sizeof (compressed)); in dump_dsl_dataset()
2762 zdb_nicenum(ds->ds_uncompressed_bytes, uncompressed, in dump_dsl_dataset()
2764 zdb_nicenum(ds->ds_unique_bytes, unique, sizeof (unique)); in dump_dsl_dataset()
2765 snprintf_blkptr(blkbuf, sizeof (blkbuf), &ds->ds_bp); in dump_dsl_dataset()
2768 (u_longlong_t)ds->ds_dir_obj); in dump_dsl_dataset()
2770 (u_longlong_t)ds->ds_prev_snap_obj); in dump_dsl_dataset()
2772 (u_longlong_t)ds->ds_prev_snap_txg); in dump_dsl_dataset()
2774 (u_longlong_t)ds->ds_next_snap_obj); in dump_dsl_dataset()
2776 (u_longlong_t)ds->ds_snapnames_zapobj); in dump_dsl_dataset()
2778 (u_longlong_t)ds->ds_num_children); in dump_dsl_dataset()
2780 (u_longlong_t)ds->ds_userrefs_obj); in dump_dsl_dataset()
2783 (u_longlong_t)ds->ds_creation_txg); in dump_dsl_dataset()
2785 (u_longlong_t)ds->ds_deadlist_obj); in dump_dsl_dataset()
2791 (u_longlong_t)ds->ds_fsid_guid); in dump_dsl_dataset()
2793 (u_longlong_t)ds->ds_guid); in dump_dsl_dataset()
2795 (u_longlong_t)ds->ds_flags); in dump_dsl_dataset()
2797 (u_longlong_t)ds->ds_next_clones_obj); in dump_dsl_dataset()
2799 (u_longlong_t)ds->ds_props_obj); in dump_dsl_dataset()
2830 bt = db->db_data; in dump_bptree()
2831 zdb_nicenum(bt->bt_bytes, bytes, sizeof (bytes)); in dump_bptree()
2833 name, (unsigned long long)(bt->bt_end - bt->bt_begin), bytes); in dump_bptree()
2872 zdb_nicenum(bpo->bpo_phys->bpo_bytes, bytes, sizeof (bytes)); in dump_full_bpobj()
2873 if (bpo->bpo_havesubobj && bpo->bpo_phys->bpo_subobjs != 0) { in dump_full_bpobj()
2874 zdb_nicenum(bpo->bpo_phys->bpo_comp, comp, sizeof (comp)); in dump_full_bpobj()
2875 zdb_nicenum(bpo->bpo_phys->bpo_uncomp, uncomp, sizeof (uncomp)); in dump_full_bpobj()
2876 if (bpo->bpo_havefreed) { in dump_full_bpobj()
2881 (u_longlong_t)bpo->bpo_object, in dump_full_bpobj()
2882 (u_longlong_t)bpo->bpo_phys->bpo_num_blkptrs, in dump_full_bpobj()
2883 (u_longlong_t)bpo->bpo_phys->bpo_num_freed, in dump_full_bpobj()
2884 (u_longlong_t)bpo->bpo_phys->bpo_num_subobjs, in dump_full_bpobj()
2885 (u_longlong_t)bpo->bpo_phys->bpo_subobjs, in dump_full_bpobj()
2892 (u_longlong_t)bpo->bpo_object, in dump_full_bpobj()
2893 (u_longlong_t)bpo->bpo_phys->bpo_num_blkptrs, in dump_full_bpobj()
2894 (u_longlong_t)bpo->bpo_phys->bpo_num_subobjs, in dump_full_bpobj()
2895 (u_longlong_t)bpo->bpo_phys->bpo_subobjs, in dump_full_bpobj()
2899 for (i = 0; i < bpo->bpo_phys->bpo_num_subobjs; i++) { in dump_full_bpobj()
2903 VERIFY0(dmu_read(bpo->bpo_os, in dump_full_bpobj()
2904 bpo->bpo_phys->bpo_subobjs, in dump_full_bpobj()
2906 error = bpobj_open(&subbpo, bpo->bpo_os, subobj); in dump_full_bpobj()
2917 if (bpo->bpo_havefreed) { in dump_full_bpobj()
2921 (u_longlong_t)bpo->bpo_object, in dump_full_bpobj()
2922 (u_longlong_t)bpo->bpo_phys->bpo_num_blkptrs, in dump_full_bpobj()
2923 (u_longlong_t)bpo->bpo_phys->bpo_num_freed, in dump_full_bpobj()
2929 (u_longlong_t)bpo->bpo_object, in dump_full_bpobj()
2930 (u_longlong_t)bpo->bpo_phys->bpo_num_blkptrs, in dump_full_bpobj()
2951 objset_t *mos = dp->dp_spa->spa_meta_objset; in dump_bookmark()
2973 redaction_list_phys_t *rlp = rl->rl_phys; in dump_bookmark()
2975 if (rlp->rlp_last_object != UINT64_MAX || in dump_bookmark()
2976 rlp->rlp_last_blkid != UINT64_MAX) { in dump_bookmark()
2978 (u_longlong_t)rlp->rlp_last_object, in dump_bookmark()
2979 (u_longlong_t)rlp->rlp_last_blkid); in dump_bookmark()
2984 for (unsigned int i = 0; i < rlp->rlp_num_snaps; i++) { in dump_bookmark()
2988 (u_longlong_t)rlp->rlp_snaps[i]); in dump_bookmark()
2991 (u_longlong_t)rlp->rlp_num_entries); in dump_bookmark()
2998 if (rlp->rlp_num_entries == 0) { in dump_bookmark()
3027 for (size_t i = 1; i < rlp->rlp_num_entries; i++) { in dump_bookmark()
3047 dsl_pool_t *dp = spa_get_dsl(os->os_spa); in dump_bookmarks()
3048 objset_t *mos = os->os_spa->spa_meta_objset; in dump_bookmarks()
3054 for (zap_cursor_init(&zc, mos, ds->ds_bookmarks_obj); in dump_bookmarks()
3062 attrp->za_name); in dump_bookmarks()
3074 mos_obj_refd(bpo->bpo_object); in bpobj_count_refd()
3076 if (bpo->bpo_havesubobj && bpo->bpo_phys->bpo_subobjs != 0) { in bpobj_count_refd()
3077 mos_obj_refd(bpo->bpo_phys->bpo_subobjs); in bpobj_count_refd()
3078 for (uint64_t i = 0; i < bpo->bpo_phys->bpo_num_subobjs; i++) { in bpobj_count_refd()
3082 VERIFY0(dmu_read(bpo->bpo_os, in bpobj_count_refd()
3083 bpo->bpo_phys->bpo_subobjs, in bpobj_count_refd()
3085 error = bpobj_open(&subbpo, bpo->bpo_os, subobj); in bpobj_count_refd()
3102 uint64_t empty_bpobj = spa->spa_dsl_pool->dp_empty_bpobj; in dsl_deadlist_entry_count_refd()
3103 if (dle->dle_bpobj.bpo_object != empty_bpobj) in dsl_deadlist_entry_count_refd()
3104 bpobj_count_refd(&dle->dle_bpobj); in dsl_deadlist_entry_count_refd()
3115 "mintxg %llu -> obj %llu", in dsl_deadlist_entry_dump()
3116 (longlong_t)dle->dle_mintxg, in dsl_deadlist_entry_dump()
3117 (longlong_t)dle->dle_bpobj.bpo_object); in dsl_deadlist_entry_dump()
3119 dump_full_bpobj(&dle->dle_bpobj, buf, 0); in dsl_deadlist_entry_dump()
3121 (void) printf("mintxg %llu -> obj %llu\n", in dsl_deadlist_entry_dump()
3122 (longlong_t)dle->dle_mintxg, in dsl_deadlist_entry_dump()
3123 (longlong_t)dle->dle_bpobj.bpo_object); in dsl_deadlist_entry_dump()
3135 spa_t *spa = dmu_objset_spa(dl->dl_os); in dump_blkptr_list()
3136 uint64_t empty_bpobj = spa->spa_dsl_pool->dp_empty_bpobj; in dump_blkptr_list()
3138 if (dl->dl_oldfmt) { in dump_blkptr_list()
3139 if (dl->dl_bpobj.bpo_object != empty_bpobj) in dump_blkptr_list()
3140 bpobj_count_refd(&dl->dl_bpobj); in dump_blkptr_list()
3142 mos_obj_refd(dl->dl_object); in dump_blkptr_list()
3155 if (dl->dl_oldfmt) { in dump_blkptr_list()
3156 dump_full_bpobj(&dl->dl_bpobj, "old-format deadlist", 0); in dump_blkptr_list()
3160 zdb_nicenum(dl->dl_phys->dl_used, bytes, sizeof (bytes)); in dump_blkptr_list()
3161 zdb_nicenum(dl->dl_phys->dl_comp, comp, sizeof (comp)); in dump_blkptr_list()
3162 zdb_nicenum(dl->dl_phys->dl_uncomp, uncomp, sizeof (uncomp)); in dump_blkptr_list()
3163 zdb_nicenum(avl_numnodes(&dl->dl_tree), entries, sizeof (entries)); in dump_blkptr_list()
3179 dsl_pool_t *dp = spa_get_dsl(os->os_spa); in verify_dd_livelist()
3180 dsl_dir_t *dd = os->os_dsl_dataset->ds_dir; in verify_dd_livelist()
3183 if (!dsl_deadlist_is_open(&dd->dd_livelist)) in verify_dd_livelist()
3187 dsl_deadlist_iterate(&dd->dd_livelist, sublivelist_verify_lightweight, in verify_dd_livelist()
3191 dsl_deadlist_space(&dd->dd_livelist, &ll_used, in verify_dd_livelist()
3197 dsl_dir_phys(dd)->dd_origin_obj, FTAG, &origin_ds)); in verify_dd_livelist()
3198 VERIFY0(dsl_dataset_space_written(origin_ds, os->os_dsl_dataset, in verify_dd_livelist()
3233 VERIFY0(zap_lookup(dd->dd_pool->dp_meta_objset, dd->dd_crypto_obj, in zdb_derive_key()
3250 VERIFY0(zap_lookup(dd->dd_pool->dp_meta_objset, in zdb_derive_key()
3251 dd->dd_crypto_obj, zfs_prop_to_name(ZFS_PROP_PBKDF2_SALT), in zdb_derive_key()
3253 VERIFY0(zap_lookup(dd->dd_pool->dp_meta_objset, in zdb_derive_key()
3254 dd->dd_crypto_obj, zfs_prop_to_name(ZFS_PROP_PBKDF2_ITERS), in zdb_derive_key()
3284 dp = spa_get_dsl(os->os_spa); in zdb_load_key()
3285 dd = os->os_dsl_dataset->ds_dir; in zdb_load_key()
3288 VERIFY0(zap_lookup(dd->dd_pool->dp_meta_objset, dd->dd_crypto_obj, in zdb_load_key()
3290 VERIFY0(dsl_dir_hold_obj(dd->dd_pool, rddobj, NULL, FTAG, &rdd)); in zdb_load_key()
3389 (key_loaded || !(*osp)->os_encrypted)) { in open_objset()
3416 if (os->os_sa != NULL) in close_objset()
3451 ddt_t *ddt = spa->spa_ddt[c]; in zdb_ddt_cleanup()
3457 ddt_entry_t *dde = avl_first(&ddt->ddt_tree), *next; in zdb_ddt_cleanup()
3459 next = AVL_NEXT(&ddt->ddt_tree, dde); in zdb_ddt_cleanup()
3460 dde->dde_io = NULL; in zdb_ddt_cleanup()
3493 * the domain-rid string.
3501 (void) printf("\t%s %llx [%s-%d]\n", id_type, in print_idstr()
3812 * set, the user combined the all-types flag (A) with in match_object_type()
3813 * a negated flag to exclude some types (e.g. A-f to in match_object_type()
3868 if (!key_loaded && os->os_encrypted && in dump_object()
3879 bonus = db->db_data; in dump_object()
3880 bsize = db->db_size; in dump_object()
3908 (void) snprintf(aux + strlen(aux), sizeof (aux) - strlen(aux), in dump_object()
3913 ZIO_COMPRESS_HASLEVEL(os->os_compress) && verbosity >= 6) { in dump_object()
3916 ZIO_COMPRESS_RAW(os->os_compress, os->os_complevel), in dump_object()
3919 sizeof (aux) - strlen(aux), " (Z=inherit=%s)", in dump_object()
3923 sizeof (aux) - strlen(aux), in dump_object()
3924 " (Z=inherit=%s-unknown)", in dump_object()
3925 ZDB_COMPRESS_NAME(os->os_compress)); in dump_object()
3928 (void) snprintf(aux + strlen(aux), sizeof (aux) - strlen(aux), in dump_object()
3929 " (Z=inherit=%s)", ZDB_COMPRESS_NAME(os->os_compress)); in dump_object()
3931 (void) snprintf(aux + strlen(aux), sizeof (aux) - strlen(aux), in dump_object()
3947 (dn->dn_phys->dn_flags & DNODE_FLAG_USED_BYTES) ? in dump_object()
3949 (dn->dn_phys->dn_flags & DNODE_FLAG_USERUSED_ACCOUNTED) ? in dump_object()
3951 (dn->dn_phys->dn_flags & DNODE_FLAG_USEROBJUSED_ACCOUNTED) ? in dump_object()
3953 (dn->dn_phys->dn_flags & DNODE_FLAG_SPILL_BLKPTR) ? in dump_object()
3956 (longlong_t)dn->dn_phys->dn_maxblkid); in dump_object()
3966 (!os->os_encrypted || !DMU_OT_IS_ENCRYPTED(doi.doi_type))) { in dump_object()
3977 if (dn->dn_phys->dn_flags & DNODE_FLAG_SPILL_BLKPTR) { in dump_object()
3980 DN_SPILL_BLKPTR(dn->dn_phys), B_FALSE); in dump_object()
3995 if (dn->dn_type == DMU_OT_DNODE) { in dump_object()
4012 zdb_nicenum(end - start, segsize, sizeof (segsize)); in dump_object()
4032 mos_obj_refd(dd->dd_object); in count_dir_mos_objects()
4033 mos_obj_refd(dsl_dir_phys(dd)->dd_child_dir_zapobj); in count_dir_mos_objects()
4034 mos_obj_refd(dsl_dir_phys(dd)->dd_deleg_zapobj); in count_dir_mos_objects()
4035 mos_obj_refd(dsl_dir_phys(dd)->dd_props_zapobj); in count_dir_mos_objects()
4036 mos_obj_refd(dsl_dir_phys(dd)->dd_clones); in count_dir_mos_objects()
4042 mos_obj_refd_multiple(dd->dd_crypto_obj); in count_dir_mos_objects()
4048 mos_obj_refd(ds->ds_object); in count_ds_mos_objects()
4049 mos_obj_refd(dsl_dataset_phys(ds)->ds_next_clones_obj); in count_ds_mos_objects()
4050 mos_obj_refd(dsl_dataset_phys(ds)->ds_props_obj); in count_ds_mos_objects()
4051 mos_obj_refd(dsl_dataset_phys(ds)->ds_userrefs_obj); in count_ds_mos_objects()
4052 mos_obj_refd(dsl_dataset_phys(ds)->ds_snapnames_zapobj); in count_ds_mos_objects()
4053 mos_obj_refd(ds->ds_bookmarks_obj); in count_ds_mos_objects()
4056 count_dir_mos_objects(ds->ds_dir); in count_ds_mos_objects()
4079 zor->zor_obj_start = strtoull(range, &p, 0); in parse_object_range()
4084 zor->zor_obj_start = ZDB_MAP_OBJECT_ID(zor->zor_obj_start); in parse_object_range()
4085 zor->zor_obj_end = zor->zor_obj_start; in parse_object_range()
4096 if (range[len - 1] == ':') { in parse_object_range()
4104 zor->zor_obj_start = strtoull(s, &p, 0); in parse_object_range()
4113 zor->zor_obj_end = strtoull(s, &p, 0); in parse_object_range()
4121 if (zor->zor_obj_start > zor->zor_obj_end) { in parse_object_range()
4129 zor->zor_flags = ZOR_FLAG_ALL_TYPES; in parse_object_range()
4132 *msg = "Invalid colon-delimited field after flags"; in parse_object_range()
4140 boolean_t negation = (flagstr[i] == '-'); in parse_object_range()
4161 zor->zor_flags = flags; in parse_object_range()
4163 zor->zor_obj_start = ZDB_MAP_OBJECT_ID(zor->zor_obj_start); in parse_object_range()
4164 zor->zor_obj_end = ZDB_MAP_OBJECT_ID(zor->zor_obj_end); in parse_object_range()
4206 usedobjs = BP_GET_FILL(os->os_rootbp); in dump_objset()
4207 refdbytes = dsl_dir_phys(os->os_spa->spa_dsl_pool->dp_mos_dir)-> in dump_objset()
4213 ASSERT3U(usedobjs, ==, BP_GET_FILL(os->os_rootbp)); in dump_objset()
4220 sizeof (blkbuf) - strlen(blkbuf), os->os_rootbp); in dump_objset()
4244 object--; in dump_objset()
4263 dump_blkptr_list(&ds->ds_deadlist, "Deadlist"); in dump_objset()
4264 if (dsl_deadlist_is_open(&ds->ds_dir->dd_livelist) && in dump_objset()
4266 dump_blkptr_list(&ds->ds_dir->dd_livelist, "Livelist"); in dump_objset()
4273 dump_blkptr_list(&ds->ds_remap_deadlist, "Deadlist"); in dump_objset()
4284 if (BP_IS_HOLE(os->os_rootbp)) in dump_objset()
4290 DMU_USERUSED_DNODE(os)->dn_type != 0) { in dump_objset()
4298 DMU_PROJECTUSED_DNODE(os)->dn_type != 0) in dump_objset()
4308 max_slot_used = object + dnode_slots - 1; in dump_objset()
4319 (double)(max_slot_used - total_slots_used)*100 / in dump_objset()
4340 time_t timestamp = ub->ub_timestamp; in dump_uberblock()
4343 (void) printf("\tmagic = %016llx\n", (u_longlong_t)ub->ub_magic); in dump_uberblock()
4344 (void) printf("\tversion = %llu\n", (u_longlong_t)ub->ub_version); in dump_uberblock()
4345 (void) printf("\ttxg = %llu\n", (u_longlong_t)ub->ub_txg); in dump_uberblock()
4346 (void) printf("\tguid_sum = %llu\n", (u_longlong_t)ub->ub_guid_sum); in dump_uberblock()
4348 (u_longlong_t)ub->ub_timestamp, ctime(×tamp)); in dump_uberblock()
4351 snprintf_blkptr(blkbuf, sizeof (blkbuf), &ub->ub_rootbp); in dump_uberblock()
4355 (u_longlong_t)ub->ub_mmp_magic); in dump_uberblock()
4358 (u_longlong_t)ub->ub_mmp_delay); in dump_uberblock()
4370 (unsigned int) ub->ub_mmp_config & 0xFF); in dump_uberblock()
4375 snprintf_blkptr(blkbuf, sizeof (blkbuf), &ub->ub_rootbp); in dump_uberblock()
4379 (u_longlong_t)ub->ub_checkpoint_txg); in dump_uberblock()
4396 error = dmu_bonus_hold(spa->spa_meta_objset, in dump_config()
4397 spa->spa_config_object, FTAG, &db); in dump_config()
4400 nvsize = *(uint64_t *)db->db_data; in dump_config()
4404 dump_packed_nvlist(spa->spa_meta_objset, in dump_config()
4405 spa->spa_config_object, (void *)&nvsize, 1); in dump_config()
4408 (u_longlong_t)spa->spa_config_object, error); in dump_config()
4479 stats->zns_list_count++; in collect_nvlist_stats()
4486 fnvlist_add_string(stats->zns_string, name, in collect_nvlist_stats()
4490 fnvlist_add_uint64(stats->zns_uint64, name, in collect_nvlist_stats()
4494 fnvlist_add_boolean(stats->zns_boolean, name); in collect_nvlist_stats()
4513 stats->zns_leaf_total += size; in collect_nvlist_stats()
4514 if (size > stats->zns_leaf_largest) in collect_nvlist_stats()
4515 stats->zns_leaf_largest = size; in collect_nvlist_stats()
4516 stats->zns_leaf_count++; in collect_nvlist_stats()
4533 /* requires nvlist with non-unique names for stat collection */ in dump_nvlist_stats()
4543 (int)total, (int)(cap - total), 100.0 * total / cap); in dump_nvlist_stats()
4548 size -= noise; in dump_nvlist_stats()
4555 size -= noise; in dump_nvlist_stats()
4562 size -= noise; in dump_nvlist_stats()
4568 size = total - sum; /* treat remainder as nvlist overhead */ in dump_nvlist_stats()
4582 (int)((cap - total) / average)); in dump_nvlist_stats()
4602 int arraysize = ARRAY_SIZE(l->cksum.zc_word); in cksum_record_compare()
4606 difference = TREE_CMP(l->cksum.zc_word[i], r->cksum.zc_word[i]); in cksum_record_compare()
4620 rec->cksum = *cksum; in cksum_record_alloc()
4621 rec->labels[l] = B_TRUE; in cksum_record_alloc()
4642 rec->labels[l] = B_TRUE; in cksum_record_insert()
4655 if (rec->labels[i]) in first_label()
4658 return (-1); in first_label()
4666 if (rec->labels[i] == B_TRUE) in print_label_numbers()
4691 if (label->header_printed == B_TRUE) in print_label_header()
4694 (void) printf("------------------------------------\n"); in print_label_header()
4696 label->cksum_valid ? "" : "(Bad label cksum)"); in print_label_header()
4697 (void) printf("------------------------------------\n"); in print_label_header()
4699 label->header_printed = B_TRUE; in print_label_header()
4705 (void) printf("------------------------------------\n"); in print_l2arc_header()
4707 (void) printf("------------------------------------\n"); in print_l2arc_header()
4713 (void) printf("------------------------------------\n"); in print_l2arc_log_blocks()
4715 (void) printf("------------------------------------\n"); in print_l2arc_log_blocks()
4733 (u_longlong_t)L2BLK_GET_LSIZE((&le[j])->le_prop)); in dump_l2arc_log_entries()
4735 (u_longlong_t)L2BLK_GET_PSIZE((&le[j])->le_prop)); in dump_l2arc_log_entries()
4737 (u_longlong_t)L2BLK_GET_COMPRESS((&le[j])->le_prop)); in dump_l2arc_log_entries()
4739 (u_longlong_t)(&le[j])->le_complevel); in dump_l2arc_log_entries()
4741 (u_longlong_t)L2BLK_GET_TYPE((&le[j])->le_prop)); in dump_l2arc_log_entries()
4743 (u_longlong_t)L2BLK_GET_PROTECTED((&le[j])->le_prop)); in dump_l2arc_log_entries()
4745 (u_longlong_t)L2BLK_GET_PREFETCH((&le[j])->le_prop)); in dump_l2arc_log_entries()
4749 (u_longlong_t)L2BLK_GET_STATE((&le[j])->le_prop)); in dump_l2arc_log_entries()
4758 (void) printf("|\t\tdaddr: %llu\n", (u_longlong_t)lbps->lbp_daddr); in dump_l2arc_log_blkptr()
4760 (u_longlong_t)lbps->lbp_payload_asize); in dump_l2arc_log_blkptr()
4762 (u_longlong_t)lbps->lbp_payload_start); in dump_l2arc_log_blkptr()
4764 (u_longlong_t)L2BLK_GET_LSIZE(lbps->lbp_prop)); in dump_l2arc_log_blkptr()
4766 (u_longlong_t)L2BLK_GET_PSIZE(lbps->lbp_prop)); in dump_l2arc_log_blkptr()
4768 (u_longlong_t)L2BLK_GET_COMPRESS(lbps->lbp_prop)); in dump_l2arc_log_blkptr()
4770 (u_longlong_t)L2BLK_GET_CHECKSUM(lbps->lbp_prop)); in dump_l2arc_log_blkptr()
4787 memcpy(lbps, l2dhdr->dh_start_lbps, sizeof (lbps)); in dump_l2arc_log_blocks()
4789 dev.l2ad_evict = l2dhdr->dh_evict; in dump_l2arc_log_blocks()
4790 dev.l2ad_start = l2dhdr->dh_start; in dump_l2arc_log_blocks()
4791 dev.l2ad_end = l2dhdr->dh_end; in dump_l2arc_log_blocks()
4793 if (l2dhdr->dh_start_lbps[0].lbp_daddr == 0) { in dump_l2arc_log_blocks()
4802 L2BLK_GET_PSIZE((&lbps[0])->lbp_prop); in dump_l2arc_log_blocks()
4805 dev.l2ad_first = !!(l2dhdr->dh_flags & L2ARC_DEV_HDR_EVICT_FIRST); in dump_l2arc_log_blocks()
4812 asize = L2BLK_GET_PSIZE((&lbps[0])->lbp_prop); in dump_l2arc_log_blocks()
4831 switch (L2BLK_GET_COMPRESS((&lbps[0])->lbp_prop)) { in dump_l2arc_log_blocks()
4841 (&lbps[0])->lbp_prop), abd, &dabd, in dump_l2arc_log_blocks()
4862 rebuild->dh_lb_count++; in dump_l2arc_log_blocks()
4863 rebuild->dh_lb_asize += asize; in dump_l2arc_log_blocks()
4866 (u_longlong_t)rebuild->dh_lb_count, in dump_l2arc_log_blocks()
4872 dump_l2arc_log_entries(l2dhdr->dh_log_entries, in dump_l2arc_log_blocks()
4874 rebuild->dh_lb_count); in dump_l2arc_log_blocks()
4887 (u_longlong_t)rebuild->dh_lb_count); in dump_l2arc_log_blocks()
4890 (u_longlong_t)rebuild->dh_lb_asize); in dump_l2arc_log_blocks()
4978 if ((dump_opt['l'] < 3) && (first_label(label->config) != l)) in dump_config_from_label()
4982 dump_nvlist(label->config_nv, 4); in dump_config_from_label()
4983 print_label_numbers(" labels = ", label->config); in dump_config_from_label()
4986 dump_nvlist_stats(label->config_nv, buflen); in dump_config_from_label()
4995 vdev_t vd; in dump_label_uberblocks() local
4998 vd.vdev_ashift = ashift; in dump_label_uberblocks()
4999 vd.vdev_top = &vd; in dump_label_uberblocks()
5001 for (int i = 0; i < VDEV_UBERBLOCK_COUNT(&vd); i++) { in dump_label_uberblocks()
5002 uint64_t uoff = VDEV_UBERBLOCK_OFFSET(&vd, i); in dump_label_uberblocks()
5003 uberblock_t *ub = (void *)((char *)&label->label + uoff); in dump_label_uberblocks()
5004 cksum_record_t *rec = label->uberblocks[i]; in dump_label_uberblocks()
5018 (ub->ub_mmp_magic == MMP_MAGIC) && ub->ub_mmp_delay && in dump_label_uberblocks()
5019 (i >= VDEV_UBERBLOCK_COUNT(&vd) - MMP_BLOCKS_PER_LABEL)) in dump_label_uberblocks()
5099 (void) fprintf(stderr, "object %llu has non-file/directory " in dump_path_impl()
5154 len -= nwritten; in dump_backup_bytes()
5241 if (fd == -1) in zdb_copy_object()
5245 * allocation failures and nigh-infinite printing if the in zdb_copy_object()
5257 readsize = MIN(size - offset, 1 << 20); in zdb_copy_object()
5304 eck = (zio_eck_t *)((char *)(data) + VDEV_PHYS_SIZE) - 1; in label_cksum_valid()
5309 byteswap = (eck->zec_magic == BSWAP_64(ZEC_MAGIC)); in label_cksum_valid()
5313 expected_cksum = eck->zec_cksum; in label_cksum_valid()
5314 eck->zec_cksum = verifier; in label_cksum_valid()
5317 ci->ci_func[byteswap](abd, VDEV_PHYS_SIZE, NULL, &actual_cksum); in label_cksum_valid()
5355 if (zfs_append_partition(path, MAXPATHLEN) == -1) in dump_label()
5399 char *buf = label->label.vl_vdev_phys.vp_nvlist; in dump_label()
5400 size_t buflen = sizeof (label->label.vl_vdev_phys.vp_nvlist); in dump_label()
5404 vdev_t vd; in dump_label() local
5406 label->label_offset = vdev_label_offset(psize, l, 0); in dump_label()
5408 if (pread64(fd, &label->label, sizeof (label->label), in dump_label()
5409 label->label_offset) != sizeof (label->label)) { in dump_label()
5412 label->read_failed = B_TRUE; in dump_label()
5417 label->read_failed = B_FALSE; in dump_label()
5418 label->cksum_valid = label_cksum_valid(&label->label, in dump_label()
5419 label->label_offset); in dump_label()
5446 label->config = rec; in dump_label()
5447 label->config_nv = config; in dump_label()
5453 vd.vdev_ashift = ashift; in dump_label()
5454 vd.vdev_top = &vd; in dump_label()
5456 for (int i = 0; i < VDEV_UBERBLOCK_COUNT(&vd); i++) { in dump_label()
5457 uint64_t uoff = VDEV_UBERBLOCK_OFFSET(&vd, i); in dump_label()
5466 label->uberblocks[i] = rec; in dump_label()
5475 size_t buflen = sizeof (label->label.vl_vdev_phys.vp_nvlist); in dump_label()
5477 if (label->read_failed == B_TRUE) in dump_label()
5480 if (label->config_nv) { in dump_label()
5490 nvlist_free(label->config_nv); in dump_label()
5545 avl_first(&dmu_objset_ds(os)->ds_bookmarks); dbn != NULL; in dump_one_objset()
5546 dbn = AVL_NEXT(&dmu_objset_ds(os)->ds_bookmarks, dbn)) { in dump_one_objset()
5547 mos_obj_refd(dbn->dbn_phys.zbm_redaction_obj); in dump_one_objset()
5548 if (dbn->dbn_phys.zbm_redaction_obj != 0) { in dump_one_objset()
5551 objset_t *mos = os->os_spa->spa_meta_objset; in dump_one_objset()
5554 dbn->dbn_phys.zbm_redaction_obj, FTAG, &rl)); in dump_one_objset()
5555 if (rl->dn_have_spill) { in dump_one_objset()
5560 if (dbn->dbn_phys.zbm_flags & ZBM_FLAG_HAS_FBN) in dump_one_objset()
5564 if (dsl_deadlist_is_open(&dmu_objset_ds(os)->ds_dir->dd_livelist) && in dump_one_objset()
5591 * Extended object types to report deferred frees and dedup auto-ditto blocks.
5650 vdev_t *vd = vdev_lookup_top(spa, vdev); in same_metaslab() local
5651 uint64_t ms_shift = vd->vdev_ms_shift; in same_metaslab()
5673 * histograms showing by blocksize of 512 - 2^ SPA_MAX_FOR_16M
5680 * if the '-P' parameter is specified then the full raw number (parseable)
5709 parm_histo[0].count = zcb->zcb_psize_count; in dump_size_histograms()
5710 parm_histo[0].len = zcb->zcb_psize_len; in dump_size_histograms()
5714 parm_histo[1].count = zcb->zcb_lsize_count; in dump_size_histograms()
5715 parm_histo[1].len = zcb->zcb_lsize_len; in dump_size_histograms()
5719 parm_histo[2].count = zcb->zcb_asize_count; in dump_size_histograms()
5720 parm_histo[2].len = zcb->zcb_asize_len; in dump_size_histograms()
5735 if (j < NUM_HISTO - 1) { in dump_size_histograms()
5742 if (j < NUM_HISTO - 1) { in dump_size_histograms()
5744 (void) printf("%-7s ", in dump_size_histograms()
5843 spa_config_enter(zcb->zcb_spa, SCL_CONFIG, FTAG, RW_READER); in zdb_count_block()
5862 ddt_t *ddt = ddt_select(zcb->zcb_spa, bp); in zdb_count_block()
5897 boolean_t seen = !!(((uintptr_t)dde->dde_io) & (1 << v)); in zdb_count_block()
5899 dde->dde_io = in zdb_count_block()
5900 (void *)(((uintptr_t)dde->dde_io) | (1 << v)); in zdb_count_block()
5903 if (ddt_phys_total_refcnt(ddt, dde->dde_phys) > 0) in zdb_count_block()
5904 ddt_phys_decref(dde->dde_phys, v); in zdb_count_block()
5913 * claimed it as-is, then we would miss the claim on some in zdb_count_block()
5925 ddt_phys_birth(dde->dde_phys, v)); in zdb_count_block()
5927 ddt_bp_fill(dde->dde_phys, v, &tempbp, in zdb_count_block()
5937 zcb->zcb_dedup_asize += BP_GET_ASIZE(bp); in zdb_count_block()
5938 zcb->zcb_dedup_blocks++; in zdb_count_block()
5945 } else if (zcb->zcb_brt_is_active && in zdb_count_block()
5946 brt_maybe_exists(zcb->zcb_spa, bp)) { in zdb_count_block()
5952 * To do this, we keep our own in-memory BRT. For each block in zdb_count_block()
5961 zbre_search.zbre_dva = bp->blk_dva[0]; in zdb_count_block()
5962 zbre = avl_find(&zcb->zcb_brt, &zbre_search, &where); in zdb_count_block()
5966 brt_entry_get_refcount(zcb->zcb_spa, bp); in zdb_count_block()
5970 zbre->zbre_dva = bp->blk_dva[0]; in zdb_count_block()
5971 zbre->zbre_refcount = refcnt; in zdb_count_block()
5972 avl_insert(&zcb->zcb_brt, zbre, where); in zdb_count_block()
5979 zcb->zcb_clone_asize += BP_GET_ASIZE(bp); in zdb_count_block()
5980 zcb->zcb_clone_blocks++; in zdb_count_block()
5982 zbre->zbre_refcount--; in zdb_count_block()
5983 if (zbre->zbre_refcount == 0) { in zdb_count_block()
5984 avl_remove(&zcb->zcb_brt, zbre); in zdb_count_block()
5998 zdb_blkstats_t *zb = &zcb->zcb_type[l][t]; in zdb_count_block()
6000 zb->zb_asize += BP_GET_ASIZE(bp); in zdb_count_block()
6001 zb->zb_lsize += BP_GET_LSIZE(bp); in zdb_count_block()
6002 zb->zb_psize += BP_GET_PSIZE(bp); in zdb_count_block()
6003 zb->zb_count++; in zdb_count_block()
6012 zb->zb_psize_histogram[idx]++; in zdb_count_block()
6014 zb->zb_gangs += BP_COUNT_GANG(bp); in zdb_count_block()
6018 if (DVA_GET_VDEV(&bp->blk_dva[0]) == in zdb_count_block()
6019 DVA_GET_VDEV(&bp->blk_dva[1])) { in zdb_count_block()
6020 zb->zb_ditto_samevdev++; in zdb_count_block()
6022 if (same_metaslab(zcb->zcb_spa, in zdb_count_block()
6023 DVA_GET_VDEV(&bp->blk_dva[0]), in zdb_count_block()
6024 DVA_GET_OFFSET(&bp->blk_dva[0]), in zdb_count_block()
6025 DVA_GET_OFFSET(&bp->blk_dva[1]))) in zdb_count_block()
6026 zb->zb_ditto_same_ms++; in zdb_count_block()
6030 equal = (DVA_GET_VDEV(&bp->blk_dva[0]) == in zdb_count_block()
6031 DVA_GET_VDEV(&bp->blk_dva[1])) + in zdb_count_block()
6032 (DVA_GET_VDEV(&bp->blk_dva[0]) == in zdb_count_block()
6033 DVA_GET_VDEV(&bp->blk_dva[2])) + in zdb_count_block()
6034 (DVA_GET_VDEV(&bp->blk_dva[1]) == in zdb_count_block()
6035 DVA_GET_VDEV(&bp->blk_dva[2])); in zdb_count_block()
6037 zb->zb_ditto_samevdev++; in zdb_count_block()
6039 if (DVA_GET_VDEV(&bp->blk_dva[0]) == in zdb_count_block()
6040 DVA_GET_VDEV(&bp->blk_dva[1]) && in zdb_count_block()
6041 same_metaslab(zcb->zcb_spa, in zdb_count_block()
6042 DVA_GET_VDEV(&bp->blk_dva[0]), in zdb_count_block()
6043 DVA_GET_OFFSET(&bp->blk_dva[0]), in zdb_count_block()
6044 DVA_GET_OFFSET(&bp->blk_dva[1]))) in zdb_count_block()
6045 zb->zb_ditto_same_ms++; in zdb_count_block()
6046 else if (DVA_GET_VDEV(&bp->blk_dva[0]) == in zdb_count_block()
6047 DVA_GET_VDEV(&bp->blk_dva[2]) && in zdb_count_block()
6048 same_metaslab(zcb->zcb_spa, in zdb_count_block()
6049 DVA_GET_VDEV(&bp->blk_dva[0]), in zdb_count_block()
6050 DVA_GET_OFFSET(&bp->blk_dva[0]), in zdb_count_block()
6051 DVA_GET_OFFSET(&bp->blk_dva[2]))) in zdb_count_block()
6052 zb->zb_ditto_same_ms++; in zdb_count_block()
6053 else if (DVA_GET_VDEV(&bp->blk_dva[1]) == in zdb_count_block()
6054 DVA_GET_VDEV(&bp->blk_dva[2]) && in zdb_count_block()
6055 same_metaslab(zcb->zcb_spa, in zdb_count_block()
6056 DVA_GET_VDEV(&bp->blk_dva[1]), in zdb_count_block()
6057 DVA_GET_OFFSET(&bp->blk_dva[1]), in zdb_count_block()
6058 DVA_GET_OFFSET(&bp->blk_dva[2]))) in zdb_count_block()
6059 zb->zb_ditto_same_ms++; in zdb_count_block()
6065 spa_config_exit(zcb->zcb_spa, SCL_CONFIG, FTAG); in zdb_count_block()
6068 zcb->zcb_embedded_blocks[BPE_GET_ETYPE(bp)]++; in zdb_count_block()
6069 zcb->zcb_embedded_histogram[BPE_GET_ETYPE(bp)] in zdb_count_block()
6078 int bin = highbit64(BP_GET_PSIZE(bp)) - 1; in zdb_count_block()
6080 zcb->zcb_psize_count[bin]++; in zdb_count_block()
6081 zcb->zcb_psize_len[bin] += BP_GET_PSIZE(bp); in zdb_count_block()
6082 zcb->zcb_psize_total += BP_GET_PSIZE(bp); in zdb_count_block()
6084 bin = highbit64(BP_GET_LSIZE(bp)) - 1; in zdb_count_block()
6086 zcb->zcb_lsize_count[bin]++; in zdb_count_block()
6087 zcb->zcb_lsize_len[bin] += BP_GET_LSIZE(bp); in zdb_count_block()
6088 zcb->zcb_lsize_total += BP_GET_LSIZE(bp); in zdb_count_block()
6090 bin = highbit64(BP_GET_ASIZE(bp)) - 1; in zdb_count_block()
6092 zcb->zcb_asize_count[bin]++; in zdb_count_block()
6093 zcb->zcb_asize_len[bin] += BP_GET_ASIZE(bp); in zdb_count_block()
6094 zcb->zcb_asize_total += BP_GET_ASIZE(bp); in zdb_count_block()
6099 VERIFY0(zio_wait(zio_claim(NULL, zcb->zcb_spa, in zdb_count_block()
6100 spa_min_claim_txg(zcb->zcb_spa), bp, NULL, NULL, in zdb_count_block()
6107 spa_t *spa = zio->io_spa; in zdb_blkptr_done()
6108 blkptr_t *bp = zio->io_bp; in zdb_blkptr_done()
6109 int ioerr = zio->io_error; in zdb_blkptr_done()
6110 zdb_cb_t *zcb = zio->io_private; in zdb_blkptr_done()
6111 zbookmark_phys_t *zb = &zio->io_bookmark; in zdb_blkptr_done()
6113 mutex_enter(&spa->spa_scrub_lock); in zdb_blkptr_done()
6114 spa->spa_load_verify_bytes -= BP_GET_PSIZE(bp); in zdb_blkptr_done()
6115 cv_broadcast(&spa->spa_scrub_io_cv); in zdb_blkptr_done()
6117 if (ioerr && !(zio->io_flags & ZIO_FLAG_SPECULATIVE)) { in zdb_blkptr_done()
6120 zcb->zcb_haderrors = 1; in zdb_blkptr_done()
6121 zcb->zcb_errors[ioerr]++; in zdb_blkptr_done()
6130 "<%llu, %llu, %lld, %llx> %s -- skipping\n", in zdb_blkptr_done()
6132 (u_longlong_t)zb->zb_objset, in zdb_blkptr_done()
6133 (u_longlong_t)zb->zb_object, in zdb_blkptr_done()
6134 (u_longlong_t)zb->zb_level, in zdb_blkptr_done()
6135 (u_longlong_t)zb->zb_blkid, in zdb_blkptr_done()
6138 mutex_exit(&spa->spa_scrub_lock); in zdb_blkptr_done()
6140 abd_free(zio->io_abd); in zdb_blkptr_done()
6151 if (zb->zb_level == ZB_DNODE_LEVEL) in zdb_blkptr_cb()
6159 (u_longlong_t)zb->zb_objset, in zdb_blkptr_cb()
6160 (u_longlong_t)zb->zb_object, in zdb_blkptr_cb()
6161 (longlong_t)zb->zb_level, in zdb_blkptr_cb()
6183 if (zb->zb_level == ZB_ZIL_LEVEL) in zdb_blkptr_cb()
6186 mutex_enter(&spa->spa_scrub_lock); in zdb_blkptr_cb()
6187 while (spa->spa_load_verify_bytes > max_inflight_bytes) in zdb_blkptr_cb()
6188 cv_wait(&spa->spa_scrub_io_cv, &spa->spa_scrub_lock); in zdb_blkptr_cb()
6189 spa->spa_load_verify_bytes += size; in zdb_blkptr_cb()
6190 mutex_exit(&spa->spa_scrub_lock); in zdb_blkptr_cb()
6196 zcb->zcb_readfails = 0; in zdb_blkptr_cb()
6205 if (dump_opt['b'] < 5 && gethrtime() > zcb->zcb_lastprint + NANOSEC) { in zdb_blkptr_cb()
6208 uint64_t bytes = zcb->zcb_type[ZB_TOTAL][ZDB_OT_TOTAL].zb_asize; in zdb_blkptr_cb()
6210 1 + bytes / (1 + ((now - zcb->zcb_start) / 1000 / 1000)); in zdb_blkptr_cb()
6212 (zcb->zcb_totalasize - bytes) / 1024 / kb_per_sec; in zdb_blkptr_cb()
6227 zcb->zcb_lastprint = now; in zdb_blkptr_cb()
6236 vdev_t *vd = arg; in zdb_leak() local
6239 (u_longlong_t)vd->vdev_id, (u_longlong_t)start, (u_longlong_t)size); in zdb_leak()
6252 uint64_t offset = sme->sme_offset; in load_unflushed_svr_segs_cb()
6253 uint64_t size = sme->sme_run; in load_unflushed_svr_segs_cb()
6256 if (sme->sme_vdev != svr->svr_vdev_id) in load_unflushed_svr_segs_cb()
6259 vdev_t *vd = vdev_lookup_top(spa, sme->sme_vdev); in load_unflushed_svr_segs_cb() local
6260 metaslab_t *ms = vd->vdev_ms[offset >> vd->vdev_ms_shift]; in load_unflushed_svr_segs_cb()
6261 ASSERT(sme->sme_type == SM_ALLOC || sme->sme_type == SM_FREE); in load_unflushed_svr_segs_cb()
6266 if (sme->sme_type == SM_ALLOC) in load_unflushed_svr_segs_cb()
6267 zfs_range_tree_add(svr->svr_allocd_segs, offset, size); in load_unflushed_svr_segs_cb()
6269 zfs_range_tree_remove(svr->svr_allocd_segs, offset, size); in load_unflushed_svr_segs_cb()
6275 claim_segment_impl_cb(uint64_t inner_offset, vdev_t *vd, uint64_t offset, in claim_segment_impl_cb() argument
6286 ASSERT(vdev_is_concrete(vd)); in claim_segment_impl_cb()
6288 VERIFY0(metaslab_claim_impl(vd, offset, size, in claim_segment_impl_cb()
6289 spa_min_claim_txg(vd->vdev_spa))); in claim_segment_impl_cb()
6295 vdev_t *vd = arg; in claim_segment_cb() local
6297 vdev_indirect_ops.vdev_op_remap(vd, offset, size, in claim_segment_cb()
6314 if (spa->spa_vdev_removal == NULL) in zdb_claim_removing()
6319 spa_vdev_removal_t *svr = spa->spa_vdev_removal; in zdb_claim_removing()
6320 vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id); in zdb_claim_removing() local
6321 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in zdb_claim_removing()
6323 ASSERT0(zfs_range_tree_space(svr->svr_allocd_segs)); in zdb_claim_removing()
6327 for (uint64_t msi = 0; msi < vd->vdev_ms_count; msi++) { in zdb_claim_removing()
6328 metaslab_t *msp = vd->vdev_ms[msi]; in zdb_claim_removing()
6331 if (msp->ms_sm != NULL) in zdb_claim_removing()
6332 VERIFY0(space_map_load(msp->ms_sm, allocs, SM_ALLOC)); in zdb_claim_removing()
6334 svr->svr_allocd_segs); in zdb_claim_removing()
6345 zfs_range_tree_clear(svr->svr_allocd_segs, in zdb_claim_removing()
6347 vd->vdev_asize - vdev_indirect_mapping_max_offset(vim)); in zdb_claim_removing()
6349 zcb->zcb_removing_size += zfs_range_tree_space(svr->svr_allocd_segs); in zdb_claim_removing()
6350 zfs_range_tree_vacate(svr->svr_allocd_segs, claim_segment_cb, vd); in zdb_claim_removing()
6361 spa_t *spa = zcb->zcb_spa; in increment_indirect_mapping_cb()
6362 vdev_t *vd; in increment_indirect_mapping_cb() local
6363 const dva_t *dva = &bp->blk_dva[0]; in increment_indirect_mapping_cb()
6370 vd = vdev_lookup_top(zcb->zcb_spa, DVA_GET_VDEV(dva)); in increment_indirect_mapping_cb()
6371 ASSERT3P(vd, !=, NULL); in increment_indirect_mapping_cb()
6374 ASSERT(vd->vdev_indirect_config.vic_mapping_object != 0); in increment_indirect_mapping_cb()
6375 ASSERT3P(zcb->zcb_vd_obsolete_counts[vd->vdev_id], !=, NULL); in increment_indirect_mapping_cb()
6378 vd->vdev_indirect_mapping, in increment_indirect_mapping_cb()
6380 zcb->zcb_vd_obsolete_counts[vd->vdev_id]); in increment_indirect_mapping_cb()
6386 zdb_load_obsolete_counts(vdev_t *vd) in zdb_load_obsolete_counts() argument
6388 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in zdb_load_obsolete_counts()
6389 spa_t *spa = vd->vdev_spa; in zdb_load_obsolete_counts()
6391 &spa->spa_condensing_indirect_phys; in zdb_load_obsolete_counts()
6395 VERIFY0(vdev_obsolete_sm_object(vd, &obsolete_sm_object)); in zdb_load_obsolete_counts()
6396 EQUIV(obsolete_sm_object != 0, vd->vdev_obsolete_sm != NULL); in zdb_load_obsolete_counts()
6398 if (vd->vdev_obsolete_sm != NULL) { in zdb_load_obsolete_counts()
6400 vd->vdev_obsolete_sm); in zdb_load_obsolete_counts()
6402 if (scip->scip_vdev == vd->vdev_id && in zdb_load_obsolete_counts()
6403 scip->scip_prev_obsolete_sm_object != 0) { in zdb_load_obsolete_counts()
6405 VERIFY0(space_map_open(&prev_obsolete_sm, spa->spa_meta_objset, in zdb_load_obsolete_counts()
6406 scip->scip_prev_obsolete_sm_object, 0, vd->vdev_asize, 0)); in zdb_load_obsolete_counts()
6423 vdev_t *vd = cseea->cseea_vd; in checkpoint_sm_exclude_entry_cb() local
6424 metaslab_t *ms = vd->vdev_ms[sme->sme_offset >> vd->vdev_ms_shift]; in checkpoint_sm_exclude_entry_cb()
6425 uint64_t end = sme->sme_offset + sme->sme_run; in checkpoint_sm_exclude_entry_cb()
6427 ASSERT(sme->sme_type == SM_FREE); in checkpoint_sm_exclude_entry_cb()
6443 * that handles metaslab-crossing segments in the future. in checkpoint_sm_exclude_entry_cb()
6445 VERIFY3U(sme->sme_offset, >=, ms->ms_start); in checkpoint_sm_exclude_entry_cb()
6446 VERIFY3U(end, <=, ms->ms_start + ms->ms_size); in checkpoint_sm_exclude_entry_cb()
6452 mutex_enter(&ms->ms_lock); in checkpoint_sm_exclude_entry_cb()
6453 zfs_range_tree_remove(ms->ms_allocatable, sme->sme_offset, in checkpoint_sm_exclude_entry_cb()
6454 sme->sme_run); in checkpoint_sm_exclude_entry_cb()
6455 mutex_exit(&ms->ms_lock); in checkpoint_sm_exclude_entry_cb()
6457 cseea->cseea_checkpoint_size += sme->sme_run; in checkpoint_sm_exclude_entry_cb()
6462 zdb_leak_init_vdev_exclude_checkpoint(vdev_t *vd, zdb_cb_t *zcb) in zdb_leak_init_vdev_exclude_checkpoint() argument
6464 spa_t *spa = vd->vdev_spa; in zdb_leak_init_vdev_exclude_checkpoint()
6472 if (vd->vdev_top_zap == 0) in zdb_leak_init_vdev_exclude_checkpoint()
6487 if (zap_contains(spa_meta_objset(spa), vd->vdev_top_zap, in zdb_leak_init_vdev_exclude_checkpoint()
6491 VERIFY0(zap_lookup(spa_meta_objset(spa), vd->vdev_top_zap, in zdb_leak_init_vdev_exclude_checkpoint()
6496 cseea.cseea_vd = vd; in zdb_leak_init_vdev_exclude_checkpoint()
6500 checkpoint_sm_obj, 0, vd->vdev_asize, vd->vdev_ashift)); in zdb_leak_init_vdev_exclude_checkpoint()
6507 zcb->zcb_checkpoint_size += cseea.cseea_checkpoint_size; in zdb_leak_init_vdev_exclude_checkpoint()
6515 vdev_t *rvd = spa->spa_root_vdev; in zdb_leak_init_exclude_checkpoint()
6516 for (uint64_t c = 0; c < rvd->vdev_children; c++) { in zdb_leak_init_exclude_checkpoint()
6517 ASSERT3U(c, ==, rvd->vdev_child[c]->vdev_id); in zdb_leak_init_exclude_checkpoint()
6518 zdb_leak_init_vdev_exclude_checkpoint(rvd->vdev_child[c], zcb); in zdb_leak_init_exclude_checkpoint()
6528 uint64_t offset = sme->sme_offset; in count_unflushed_space_cb()
6529 uint64_t vdev_id = sme->sme_vdev; in count_unflushed_space_cb()
6531 vdev_t *vd = vdev_lookup_top(spa, vdev_id); in count_unflushed_space_cb() local
6532 if (!vdev_is_concrete(vd)) in count_unflushed_space_cb()
6535 metaslab_t *ms = vd->vdev_ms[offset >> vd->vdev_ms_shift]; in count_unflushed_space_cb()
6536 ASSERT(sme->sme_type == SM_ALLOC || sme->sme_type == SM_FREE); in count_unflushed_space_cb()
6541 if (sme->sme_type == SM_ALLOC) in count_unflushed_space_cb()
6542 *ualloc_space += sme->sme_run; in count_unflushed_space_cb()
6544 *ualloc_space -= sme->sme_run; in count_unflushed_space_cb()
6566 uint64_t offset = sme->sme_offset; in load_unflushed_cb()
6567 uint64_t size = sme->sme_run; in load_unflushed_cb()
6568 uint64_t vdev_id = sme->sme_vdev; in load_unflushed_cb()
6570 vdev_t *vd = vdev_lookup_top(spa, vdev_id); in load_unflushed_cb() local
6573 if (!vdev_is_concrete(vd)) in load_unflushed_cb()
6576 metaslab_t *ms = vd->vdev_ms[offset >> vd->vdev_ms_shift]; in load_unflushed_cb()
6578 ASSERT(sme->sme_type == SM_ALLOC || sme->sme_type == SM_FREE); in load_unflushed_cb()
6584 if (*uic_maptype == sme->sme_type) in load_unflushed_cb()
6585 zfs_range_tree_add(ms->ms_allocatable, offset, size); in load_unflushed_cb()
6587 zfs_range_tree_remove(ms->ms_allocatable, offset, size); in load_unflushed_cb()
6601 vdev_t *rvd = spa->spa_root_vdev; in load_concrete_ms_allocatable_trees()
6602 for (uint64_t i = 0; i < rvd->vdev_children; i++) { in load_concrete_ms_allocatable_trees()
6603 vdev_t *vd = rvd->vdev_child[i]; in load_concrete_ms_allocatable_trees() local
6605 ASSERT3U(i, ==, vd->vdev_id); in load_concrete_ms_allocatable_trees()
6607 if (vd->vdev_ops == &vdev_indirect_ops) in load_concrete_ms_allocatable_trees()
6610 for (uint64_t m = 0; m < vd->vdev_ms_count; m++) { in load_concrete_ms_allocatable_trees()
6611 metaslab_t *msp = vd->vdev_ms[m]; in load_concrete_ms_allocatable_trees()
6616 (longlong_t)vd->vdev_id, in load_concrete_ms_allocatable_trees()
6617 (longlong_t)msp->ms_id, in load_concrete_ms_allocatable_trees()
6618 (longlong_t)vd->vdev_ms_count); in load_concrete_ms_allocatable_trees()
6620 mutex_enter(&msp->ms_lock); in load_concrete_ms_allocatable_trees()
6621 zfs_range_tree_vacate(msp->ms_allocatable, NULL, NULL); in load_concrete_ms_allocatable_trees()
6625 * size-ordered tree, so clear the range_tree ops. in load_concrete_ms_allocatable_trees()
6627 msp->ms_allocatable->rt_ops = NULL; in load_concrete_ms_allocatable_trees()
6629 if (msp->ms_sm != NULL) { in load_concrete_ms_allocatable_trees()
6630 VERIFY0(space_map_load(msp->ms_sm, in load_concrete_ms_allocatable_trees()
6631 msp->ms_allocatable, maptype)); in load_concrete_ms_allocatable_trees()
6633 if (!msp->ms_loaded) in load_concrete_ms_allocatable_trees()
6634 msp->ms_loaded = B_TRUE; in load_concrete_ms_allocatable_trees()
6635 mutex_exit(&msp->ms_lock); in load_concrete_ms_allocatable_trees()
6643 * vm_idxp is an in-out parameter which (for indirect vdevs) is the
6648 load_indirect_ms_allocatable_tree(vdev_t *vd, metaslab_t *msp, in load_indirect_ms_allocatable_tree() argument
6651 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in load_indirect_ms_allocatable_tree()
6653 mutex_enter(&msp->ms_lock); in load_indirect_ms_allocatable_tree()
6654 zfs_range_tree_vacate(msp->ms_allocatable, NULL, NULL); in load_indirect_ms_allocatable_tree()
6658 * size-ordered tree, so clear the range_tree ops. in load_indirect_ms_allocatable_tree()
6660 msp->ms_allocatable->rt_ops = NULL; in load_indirect_ms_allocatable_tree()
6665 &vim->vim_entries[*vim_idxp]; in load_indirect_ms_allocatable_tree()
6667 uint64_t ent_len = DVA_GET_ASIZE(&vimep->vimep_dst); in load_indirect_ms_allocatable_tree()
6668 ASSERT3U(ent_offset, >=, msp->ms_start); in load_indirect_ms_allocatable_tree()
6669 if (ent_offset >= msp->ms_start + msp->ms_size) in load_indirect_ms_allocatable_tree()
6677 msp->ms_start + msp->ms_size); in load_indirect_ms_allocatable_tree()
6678 zfs_range_tree_add(msp->ms_allocatable, ent_offset, ent_len); in load_indirect_ms_allocatable_tree()
6681 if (!msp->ms_loaded) in load_indirect_ms_allocatable_tree()
6682 msp->ms_loaded = B_TRUE; in load_indirect_ms_allocatable_tree()
6683 mutex_exit(&msp->ms_lock); in load_indirect_ms_allocatable_tree()
6691 vdev_t *rvd = spa->spa_root_vdev; in zdb_leak_init_prepare_indirect_vdevs()
6692 for (uint64_t c = 0; c < rvd->vdev_children; c++) { in zdb_leak_init_prepare_indirect_vdevs()
6693 vdev_t *vd = rvd->vdev_child[c]; in zdb_leak_init_prepare_indirect_vdevs() local
6695 ASSERT3U(c, ==, vd->vdev_id); in zdb_leak_init_prepare_indirect_vdevs()
6697 if (vd->vdev_ops != &vdev_indirect_ops) in zdb_leak_init_prepare_indirect_vdevs()
6705 zcb->zcb_vd_obsolete_counts[c] = zdb_load_obsolete_counts(vd); in zdb_leak_init_prepare_indirect_vdevs()
6712 vdev_metaslab_group_create(vd); in zdb_leak_init_prepare_indirect_vdevs()
6713 VERIFY0(vdev_metaslab_init(vd, 0)); in zdb_leak_init_prepare_indirect_vdevs()
6716 vd->vdev_indirect_mapping; in zdb_leak_init_prepare_indirect_vdevs()
6718 for (uint64_t m = 0; m < vd->vdev_ms_count; m++) { in zdb_leak_init_prepare_indirect_vdevs()
6723 (longlong_t)vd->vdev_id, in zdb_leak_init_prepare_indirect_vdevs()
6724 (longlong_t)vd->vdev_ms[m]->ms_id, in zdb_leak_init_prepare_indirect_vdevs()
6725 (longlong_t)vd->vdev_ms_count); in zdb_leak_init_prepare_indirect_vdevs()
6727 load_indirect_ms_allocatable_tree(vd, vd->vdev_ms[m], in zdb_leak_init_prepare_indirect_vdevs()
6737 zcb->zcb_spa = spa; in zdb_leak_init()
6742 dsl_pool_t *dp = spa->spa_dsl_pool; in zdb_leak_init()
6743 vdev_t *rvd = spa->spa_root_vdev; in zdb_leak_init()
6750 spa->spa_normal_class->mc_ops = &zdb_metaslab_ops; in zdb_leak_init()
6751 spa->spa_log_class->mc_ops = &zdb_metaslab_ops; in zdb_leak_init()
6752 spa->spa_embedded_log_class->mc_ops = &zdb_metaslab_ops; in zdb_leak_init()
6754 zcb->zcb_vd_obsolete_counts = in zdb_leak_init()
6755 umem_zalloc(rvd->vdev_children * sizeof (uint32_t *), in zdb_leak_init()
6774 * order to avoid false-positives during leak-detection, we in zdb_leak_init()
6787 ASSERT3U(zcb->zcb_checkpoint_size, ==, spa_get_checkpoint_space(spa)); in zdb_leak_init()
6792 if (bpobj_is_open(&dp->dp_obsolete_bpobj)) { in zdb_leak_init()
6795 (void) bpobj_iterate_nofree(&dp->dp_obsolete_bpobj, in zdb_leak_init()
6801 zdb_check_for_obsolete_leaks(vdev_t *vd, zdb_cb_t *zcb) in zdb_check_for_obsolete_leaks() argument
6804 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in zdb_check_for_obsolete_leaks()
6812 &vim->vim_entries[i]; in zdb_check_for_obsolete_leaks()
6815 metaslab_t *msp = vd->vdev_ms[offset >> vd->vdev_ms_shift]; in zdb_check_for_obsolete_leaks()
6822 inner_offset < DVA_GET_ASIZE(&vimep->vimep_dst); in zdb_check_for_obsolete_leaks()
6823 inner_offset += 1ULL << vd->vdev_ashift) { in zdb_check_for_obsolete_leaks()
6824 if (zfs_range_tree_contains(msp->ms_allocatable, in zdb_check_for_obsolete_leaks()
6825 offset + inner_offset, 1ULL << vd->vdev_ashift)) { in zdb_check_for_obsolete_leaks()
6826 obsolete_bytes += 1ULL << vd->vdev_ashift; in zdb_check_for_obsolete_leaks()
6830 int64_t bytes_leaked = obsolete_bytes - in zdb_check_for_obsolete_leaks()
6831 zcb->zcb_vd_obsolete_counts[vd->vdev_id][i]; in zdb_check_for_obsolete_leaks()
6832 ASSERT3U(DVA_GET_ASIZE(&vimep->vimep_dst), >=, in zdb_check_for_obsolete_leaks()
6833 zcb->zcb_vd_obsolete_counts[vd->vdev_id][i]); in zdb_check_for_obsolete_leaks()
6835 VERIFY0(vdev_obsolete_counts_are_precise(vd, &are_precise)); in zdb_check_for_obsolete_leaks()
6839 (u_longlong_t)vd->vdev_id, in zdb_check_for_obsolete_leaks()
6841 (u_longlong_t)DVA_GET_ASIZE(&vimep->vimep_dst), in zdb_check_for_obsolete_leaks()
6847 VERIFY0(vdev_obsolete_counts_are_precise(vd, &are_precise)); in zdb_check_for_obsolete_leaks()
6855 (u_longlong_t)vd->vdev_id, pct_leaked, in zdb_check_for_obsolete_leaks()
6859 "for vdev %llu -- %llx total bytes mismatched\n", in zdb_check_for_obsolete_leaks()
6860 (u_longlong_t)vd->vdev_id, in zdb_check_for_obsolete_leaks()
6866 zcb->zcb_vd_obsolete_counts[vd->vdev_id]); in zdb_check_for_obsolete_leaks()
6867 zcb->zcb_vd_obsolete_counts[vd->vdev_id] = NULL; in zdb_check_for_obsolete_leaks()
6879 vdev_t *rvd = spa->spa_root_vdev; in zdb_leak_fini()
6880 for (unsigned c = 0; c < rvd->vdev_children; c++) { in zdb_leak_fini()
6881 vdev_t *vd = rvd->vdev_child[c]; in zdb_leak_fini() local
6883 if (zcb->zcb_vd_obsolete_counts[c] != NULL) { in zdb_leak_fini()
6884 leaks |= zdb_check_for_obsolete_leaks(vd, zcb); in zdb_leak_fini()
6887 for (uint64_t m = 0; m < vd->vdev_ms_count; m++) { in zdb_leak_fini()
6888 metaslab_t *msp = vd->vdev_ms[m]; in zdb_leak_fini()
6889 ASSERT3P(msp->ms_group, ==, (msp->ms_group->mg_class == in zdb_leak_fini()
6891 vd->vdev_log_mg : vd->vdev_mg); in zdb_leak_fini()
6906 if (vd->vdev_ops == &vdev_indirect_ops) { in zdb_leak_fini()
6907 zfs_range_tree_vacate(msp->ms_allocatable, in zdb_leak_fini()
6910 zfs_range_tree_vacate(msp->ms_allocatable, in zdb_leak_fini()
6911 zdb_leak, vd); in zdb_leak_fini()
6913 if (msp->ms_loaded) { in zdb_leak_fini()
6914 msp->ms_loaded = B_FALSE; in zdb_leak_fini()
6919 umem_free(zcb->zcb_vd_obsolete_counts, in zdb_leak_fini()
6920 rvd->vdev_children * sizeof (uint32_t *)); in zdb_leak_fini()
6921 zcb->zcb_vd_obsolete_counts = NULL; in zdb_leak_fini()
6949 objset_t *mos = spa->spa_meta_objset; in iterate_deleted_livelists()
6965 VERIFY0(dsl_deadlist_open(&ll, mos, attrp->za_first_integer)); in iterate_deleted_livelists()
6988 VERIFY0(dsl_process_sub_livelist(&dle->dle_bpobj, &blks, NULL, NULL)); in livelist_entry_count_blocks_cb()
7028 objset_t *mos = spa->spa_meta_objset; in deleted_livelists_dump_mos()
7040 const dva_t *dva1 = &((const zdb_brt_entry_t *)zcn1)->zbre_dva; in zdb_brt_entry_compare()
7041 const dva_t *dva2 = &((const zdb_brt_entry_t *)zcn2)->zbre_dva; in zdb_brt_entry_compare()
7068 avl_create(&zcb->zcb_brt, zdb_brt_entry_compare, in dump_block_stats()
7071 zcb->zcb_brt_is_active = B_TRUE; in dump_block_stats()
7089 * When leak detection is disabled (-L option) we still traverse the in dump_block_stats()
7096 * If there's a deferred-free bplist, process that first. in dump_block_stats()
7098 (void) bpobj_iterate_nofree(&spa->spa_deferred_bpobj, in dump_block_stats()
7102 (void) bpobj_iterate_nofree(&spa->spa_dsl_pool->dp_free_bpobj, in dump_block_stats()
7109 VERIFY3U(0, ==, bptree_iterate(spa->spa_meta_objset, in dump_block_stats()
7110 spa->spa_dsl_pool->dp_bptree_obj, B_FALSE, count_block_cb, in dump_block_stats()
7119 zcb->zcb_totalasize = metaslab_class_get_alloc(spa_normal_class(spa)); in dump_block_stats()
7120 zcb->zcb_totalasize += metaslab_class_get_alloc(spa_special_class(spa)); in dump_block_stats()
7121 zcb->zcb_totalasize += metaslab_class_get_alloc(spa_dedup_class(spa)); in dump_block_stats()
7122 zcb->zcb_totalasize += in dump_block_stats()
7124 zcb->zcb_start = zcb->zcb_lastprint = gethrtime(); in dump_block_stats()
7134 (void) zio_wait(spa->spa_async_zio_root[c]); in dump_block_stats()
7135 spa->spa_async_zio_root[c] = zio_root(spa, NULL, NULL, in dump_block_stats()
7140 ASSERT0(spa->spa_load_verify_bytes); in dump_block_stats()
7146 zcb->zcb_haderrors |= err; in dump_block_stats()
7148 if (zcb->zcb_haderrors) { in dump_block_stats()
7152 if (zcb->zcb_errors[e] != 0) { in dump_block_stats()
7154 e, (u_longlong_t)zcb->zcb_errors[e]); in dump_block_stats()
7164 tzb = &zcb->zcb_type[ZB_TOTAL][ZDB_OT_TOTAL]; in dump_block_stats()
7176 tzb->zb_asize - zcb->zcb_dedup_asize - zcb->zcb_clone_asize + in dump_block_stats()
7177 zcb->zcb_removing_size + zcb->zcb_checkpoint_size; in dump_block_stats()
7188 (longlong_t)(total_alloc - total_found)); in dump_block_stats()
7191 if (tzb->zb_count == 0) { in dump_block_stats()
7197 (void) printf("\t%-16s %14llu\n", "bp count:", in dump_block_stats()
7198 (u_longlong_t)tzb->zb_count); in dump_block_stats()
7199 (void) printf("\t%-16s %14llu\n", "ganged count:", in dump_block_stats()
7200 (longlong_t)tzb->zb_gangs); in dump_block_stats()
7201 (void) printf("\t%-16s %14llu avg: %6llu\n", "bp logical:", in dump_block_stats()
7202 (u_longlong_t)tzb->zb_lsize, in dump_block_stats()
7203 (u_longlong_t)(tzb->zb_lsize / tzb->zb_count)); in dump_block_stats()
7204 (void) printf("\t%-16s %14llu avg: %6llu compression: %6.2f\n", in dump_block_stats()
7205 "bp physical:", (u_longlong_t)tzb->zb_psize, in dump_block_stats()
7206 (u_longlong_t)(tzb->zb_psize / tzb->zb_count), in dump_block_stats()
7207 (double)tzb->zb_lsize / tzb->zb_psize); in dump_block_stats()
7208 (void) printf("\t%-16s %14llu avg: %6llu compression: %6.2f\n", in dump_block_stats()
7209 "bp allocated:", (u_longlong_t)tzb->zb_asize, in dump_block_stats()
7210 (u_longlong_t)(tzb->zb_asize / tzb->zb_count), in dump_block_stats()
7211 (double)tzb->zb_lsize / tzb->zb_asize); in dump_block_stats()
7212 (void) printf("\t%-16s %14llu ref>1: %6llu deduplication: %6.2f\n", in dump_block_stats()
7213 "bp deduped:", (u_longlong_t)zcb->zcb_dedup_asize, in dump_block_stats()
7214 (u_longlong_t)zcb->zcb_dedup_blocks, in dump_block_stats()
7215 (double)zcb->zcb_dedup_asize / tzb->zb_asize + 1.0); in dump_block_stats()
7216 (void) printf("\t%-16s %14llu count: %6llu\n", in dump_block_stats()
7217 "bp cloned:", (u_longlong_t)zcb->zcb_clone_asize, in dump_block_stats()
7218 (u_longlong_t)zcb->zcb_clone_blocks); in dump_block_stats()
7219 (void) printf("\t%-16s %14llu used: %5.2f%%\n", "Normal class:", in dump_block_stats()
7222 if (spa_special_class(spa)->mc_allocator[0].mca_rotor != NULL) { in dump_block_stats()
7228 (void) printf("\t%-16s %14llu used: %5.2f%%\n", in dump_block_stats()
7233 if (spa_dedup_class(spa)->mc_allocator[0].mca_rotor != NULL) { in dump_block_stats()
7239 (void) printf("\t%-16s %14llu used: %5.2f%%\n", in dump_block_stats()
7244 if (spa_embedded_log_class(spa)->mc_allocator[0].mca_rotor != NULL) { in dump_block_stats()
7250 (void) printf("\t%-16s %14llu used: %5.2f%%\n", in dump_block_stats()
7256 if (zcb->zcb_embedded_blocks[i] == 0) in dump_block_stats()
7259 (void) printf("\tadditional, non-pointer bps of type %u: " in dump_block_stats()
7261 i, (u_longlong_t)zcb->zcb_embedded_blocks[i]); in dump_block_stats()
7266 dump_histogram(zcb->zcb_embedded_histogram[i], in dump_block_stats()
7267 sizeof (zcb->zcb_embedded_histogram[i]) / in dump_block_stats()
7268 sizeof (zcb->zcb_embedded_histogram[i][0]), 0); in dump_block_stats()
7272 if (tzb->zb_ditto_samevdev != 0) { in dump_block_stats()
7274 (longlong_t)tzb->zb_ditto_samevdev); in dump_block_stats()
7276 if (tzb->zb_ditto_same_ms != 0) { in dump_block_stats()
7278 (longlong_t)tzb->zb_ditto_same_ms); in dump_block_stats()
7281 for (uint64_t v = 0; v < spa->spa_root_vdev->vdev_children; v++) { in dump_block_stats()
7282 vdev_t *vd = spa->spa_root_vdev->vdev_child[v]; in dump_block_stats() local
7283 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in dump_block_stats()
7295 (longlong_t)vd->vdev_id, in dump_block_stats()
7329 typename = zdb_ot_extname[t - DMU_OT_NUMTYPES]; in dump_block_stats()
7331 if (zcb->zcb_type[ZB_TOTAL][t].zb_asize == 0) { in dump_block_stats()
7334 "-", in dump_block_stats()
7335 "-", in dump_block_stats()
7336 "-", in dump_block_stats()
7337 "-", in dump_block_stats()
7338 "-", in dump_block_stats()
7339 "-", in dump_block_stats()
7340 "-", in dump_block_stats()
7345 for (l = ZB_TOTAL - 1; l >= -1; l--) { in dump_block_stats()
7346 level = (l == -1 ? ZB_TOTAL : l); in dump_block_stats()
7347 zb = &zcb->zcb_type[level][t]; in dump_block_stats()
7349 if (zb->zb_asize == 0) in dump_block_stats()
7354 mdstats->zb_count += zb->zb_count; in dump_block_stats()
7355 mdstats->zb_lsize += zb->zb_lsize; in dump_block_stats()
7356 mdstats->zb_psize += zb->zb_psize; in dump_block_stats()
7357 mdstats->zb_asize += zb->zb_asize; in dump_block_stats()
7358 mdstats->zb_gangs += zb->zb_gangs; in dump_block_stats()
7364 if (level == 0 && zb->zb_asize == in dump_block_stats()
7365 zcb->zcb_type[ZB_TOTAL][t].zb_asize) in dump_block_stats()
7368 zdb_nicenum(zb->zb_count, csize, in dump_block_stats()
7370 zdb_nicenum(zb->zb_lsize, lsize, in dump_block_stats()
7372 zdb_nicenum(zb->zb_psize, psize, in dump_block_stats()
7374 zdb_nicenum(zb->zb_asize, asize, in dump_block_stats()
7376 zdb_nicenum(zb->zb_asize / zb->zb_count, avg, in dump_block_stats()
7378 zdb_nicenum(zb->zb_gangs, gang, sizeof (gang)); in dump_block_stats()
7383 (double)zb->zb_lsize / zb->zb_psize, in dump_block_stats()
7384 100.0 * zb->zb_asize / tzb->zb_asize); in dump_block_stats()
7392 if (dump_opt['b'] >= 3 && zb->zb_gangs > 0) { in dump_block_stats()
7399 "(in 512-byte sectors): " in dump_block_stats()
7401 dump_histogram(zb->zb_psize_histogram, in dump_block_stats()
7406 zdb_nicenum(mdstats->zb_count, csize, in dump_block_stats()
7408 zdb_nicenum(mdstats->zb_lsize, lsize, in dump_block_stats()
7410 zdb_nicenum(mdstats->zb_psize, psize, in dump_block_stats()
7412 zdb_nicenum(mdstats->zb_asize, asize, in dump_block_stats()
7414 zdb_nicenum(mdstats->zb_asize / mdstats->zb_count, avg, in dump_block_stats()
7416 zdb_nicenum(mdstats->zb_gangs, gang, sizeof (gang)); in dump_block_stats()
7421 (double)mdstats->zb_lsize / mdstats->zb_psize, in dump_block_stats()
7422 100.0 * mdstats->zb_asize / tzb->zb_asize); in dump_block_stats()
7440 if (zcb->zcb_haderrors) { in dump_block_stats()
7468 if (zb->zb_level == ZB_DNODE_LEVEL || BP_IS_HOLE(bp) || in zdb_ddt_add_cb()
7472 if (dump_opt['S'] > 1 && zb->zb_level == ZB_ROOT_LEVEL) { in zdb_ddt_add_cb()
7475 (u_longlong_t)zb->zb_objset, in zdb_ddt_add_cb()
7490 zdde->zdde_key = zdde_search.zdde_key; in zdb_ddt_add_cb()
7494 zdde->zdde_ref_blocks += 1; in zdb_ddt_add_cb()
7495 zdde->zdde_ref_lsize += BP_GET_LSIZE(bp); in zdb_ddt_add_cb()
7496 zdde->zdde_ref_psize += BP_GET_PSIZE(bp); in zdb_ddt_add_cb()
7497 zdde->zdde_ref_dsize += bp_get_dsize_sync(spa, bp); in zdb_ddt_add_cb()
7522 uint64_t refcnt = zdde->zdde_ref_blocks; in dump_simulated_ddt()
7525 ddt_stat_t *dds = &ddh_total.ddh_stat[highbit64(refcnt) - 1]; in dump_simulated_ddt()
7527 dds->dds_blocks += zdde->zdde_ref_blocks / refcnt; in dump_simulated_ddt()
7528 dds->dds_lsize += zdde->zdde_ref_lsize / refcnt; in dump_simulated_ddt()
7529 dds->dds_psize += zdde->zdde_ref_psize / refcnt; in dump_simulated_ddt()
7530 dds->dds_dsize += zdde->zdde_ref_dsize / refcnt; in dump_simulated_ddt()
7532 dds->dds_ref_blocks += zdde->zdde_ref_blocks; in dump_simulated_ddt()
7533 dds->dds_ref_lsize += zdde->zdde_ref_lsize; in dump_simulated_ddt()
7534 dds->dds_ref_psize += zdde->zdde_ref_psize; in dump_simulated_ddt()
7535 dds->dds_ref_dsize += zdde->zdde_ref_dsize; in dump_simulated_ddt()
7566 &spa->spa_condensing_indirect_phys; in verify_device_removal_feature_counts()
7567 if (scip->scip_next_mapping_object != 0) { in verify_device_removal_feature_counts()
7568 vdev_t *vd = spa->spa_root_vdev->vdev_child[scip->scip_vdev]; in verify_device_removal_feature_counts() local
7569 ASSERT(scip->scip_prev_obsolete_sm_object != 0); in verify_device_removal_feature_counts()
7570 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in verify_device_removal_feature_counts()
7574 (u_longlong_t)scip->scip_vdev, in verify_device_removal_feature_counts()
7575 (u_longlong_t)scip->scip_next_mapping_object, in verify_device_removal_feature_counts()
7576 (u_longlong_t)scip->scip_prev_obsolete_sm_object); in verify_device_removal_feature_counts()
7577 if (scip->scip_prev_obsolete_sm_object != 0) { in verify_device_removal_feature_counts()
7580 spa->spa_meta_objset, in verify_device_removal_feature_counts()
7581 scip->scip_prev_obsolete_sm_object, in verify_device_removal_feature_counts()
7582 0, vd->vdev_asize, 0)); in verify_device_removal_feature_counts()
7583 dump_spacemap(spa->spa_meta_objset, prev_obsolete_sm); in verify_device_removal_feature_counts()
7591 for (uint64_t i = 0; i < spa->spa_root_vdev->vdev_children; i++) { in verify_device_removal_feature_counts()
7592 vdev_t *vd = spa->spa_root_vdev->vdev_child[i]; in verify_device_removal_feature_counts() local
7593 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in verify_device_removal_feature_counts()
7595 if (vic->vic_mapping_object != 0) { in verify_device_removal_feature_counts()
7596 ASSERT(vd->vdev_ops == &vdev_indirect_ops || in verify_device_removal_feature_counts()
7597 vd->vdev_removing); in verify_device_removal_feature_counts()
7600 if (vd->vdev_indirect_mapping->vim_havecounts) { in verify_device_removal_feature_counts()
7606 VERIFY0(vdev_obsolete_counts_are_precise(vd, &are_precise)); in verify_device_removal_feature_counts()
7608 ASSERT(vic->vic_mapping_object != 0); in verify_device_removal_feature_counts()
7613 VERIFY0(vdev_obsolete_sm_object(vd, &obsolete_sm_object)); in verify_device_removal_feature_counts()
7615 ASSERT(vic->vic_mapping_object != 0); in verify_device_removal_feature_counts()
7685 spa->spa_import_flags |= ZFS_IMPORT_SKIP_MMP; in zdb_set_skip_mmp()
7703 * The function returns a newly-allocated copy of the name of the
7718 size_t poolname_len = path_start - target; in import_checkpointed_state()
7735 if (asprintf(&bogus_name, "%s%s", poolname, BOGUS_SUFFIX) == -1) { in import_checkpointed_state()
7753 if (asprintf(new_path, "%s%s", bogus_name, path_start) == -1) { in import_checkpointed_state()
7781 vdev_t *vd = vcsec->vcsec_vd; in verify_checkpoint_sm_entry_cb() local
7782 metaslab_t *ms = vd->vdev_ms[sme->sme_offset >> vd->vdev_ms_shift]; in verify_checkpoint_sm_entry_cb()
7783 uint64_t end = sme->sme_offset + sme->sme_run; in verify_checkpoint_sm_entry_cb()
7785 ASSERT(sme->sme_type == SM_FREE); in verify_checkpoint_sm_entry_cb()
7787 if ((vcsec->vcsec_entryid % ENTRIES_PER_PROGRESS_UPDATE) == 0) { in verify_checkpoint_sm_entry_cb()
7790 (longlong_t)vd->vdev_id, in verify_checkpoint_sm_entry_cb()
7791 (longlong_t)vcsec->vcsec_entryid, in verify_checkpoint_sm_entry_cb()
7792 (longlong_t)vcsec->vcsec_num_entries); in verify_checkpoint_sm_entry_cb()
7794 vcsec->vcsec_entryid++; in verify_checkpoint_sm_entry_cb()
7799 VERIFY3U(sme->sme_offset, >=, ms->ms_start); in verify_checkpoint_sm_entry_cb()
7800 VERIFY3U(end, <=, ms->ms_start + ms->ms_size); in verify_checkpoint_sm_entry_cb()
7807 mutex_enter(&ms->ms_lock); in verify_checkpoint_sm_entry_cb()
7808 zfs_range_tree_verify_not_present(ms->ms_allocatable, in verify_checkpoint_sm_entry_cb()
7809 sme->sme_offset, sme->sme_run); in verify_checkpoint_sm_entry_cb()
7810 mutex_exit(&ms->ms_lock); in verify_checkpoint_sm_entry_cb()
7832 vdev_t *ckpoint_rvd = checkpoint->spa_root_vdev; in verify_checkpoint_vdev_spacemaps()
7833 vdev_t *current_rvd = current->spa_root_vdev; in verify_checkpoint_vdev_spacemaps()
7837 for (uint64_t c = 0; c < ckpoint_rvd->vdev_children; c++) { in verify_checkpoint_vdev_spacemaps()
7838 vdev_t *ckpoint_vd = ckpoint_rvd->vdev_child[c]; in verify_checkpoint_vdev_spacemaps()
7839 vdev_t *current_vd = current_rvd->vdev_child[c]; in verify_checkpoint_vdev_spacemaps()
7844 if (ckpoint_vd->vdev_ops == &vdev_indirect_ops) { in verify_checkpoint_vdev_spacemaps()
7851 ASSERT3P(current_vd->vdev_ops, ==, &vdev_indirect_ops); in verify_checkpoint_vdev_spacemaps()
7859 if (current_vd->vdev_top_zap == 0 || in verify_checkpoint_vdev_spacemaps()
7861 current_vd->vdev_top_zap, in verify_checkpoint_vdev_spacemaps()
7866 current_vd->vdev_top_zap, VDEV_TOP_ZAP_POOL_CHECKPOINT_SM, in verify_checkpoint_vdev_spacemaps()
7870 checkpoint_sm_obj, 0, current_vd->vdev_asize, in verify_checkpoint_vdev_spacemaps()
7871 current_vd->vdev_ashift)); in verify_checkpoint_vdev_spacemaps()
7882 dump_spacemap(current->spa_meta_objset, checkpoint_sm); in verify_checkpoint_vdev_spacemaps()
7890 if (ckpoint_rvd->vdev_children < current_rvd->vdev_children) { in verify_checkpoint_vdev_spacemaps()
7891 for (uint64_t c = ckpoint_rvd->vdev_children; in verify_checkpoint_vdev_spacemaps()
7892 c < current_rvd->vdev_children; c++) { in verify_checkpoint_vdev_spacemaps()
7893 vdev_t *current_vd = current_rvd->vdev_child[c]; in verify_checkpoint_vdev_spacemaps()
7894 VERIFY3P(current_vd->vdev_checkpoint_sm, ==, NULL); in verify_checkpoint_vdev_spacemaps()
7917 vdev_t *ckpoint_rvd = checkpoint->spa_root_vdev; in verify_checkpoint_ms_spacemaps()
7918 vdev_t *current_rvd = current->spa_root_vdev; in verify_checkpoint_ms_spacemaps()
7923 for (uint64_t i = 0; i < ckpoint_rvd->vdev_children; i++) { in verify_checkpoint_ms_spacemaps()
7924 vdev_t *ckpoint_vd = ckpoint_rvd->vdev_child[i]; in verify_checkpoint_ms_spacemaps()
7925 vdev_t *current_vd = current_rvd->vdev_child[i]; in verify_checkpoint_ms_spacemaps()
7927 if (ckpoint_vd->vdev_ops == &vdev_indirect_ops) { in verify_checkpoint_ms_spacemaps()
7931 ASSERT3P(current_vd->vdev_ops, ==, &vdev_indirect_ops); in verify_checkpoint_ms_spacemaps()
7935 for (uint64_t m = 0; m < ckpoint_vd->vdev_ms_count; m++) { in verify_checkpoint_ms_spacemaps()
7936 metaslab_t *ckpoint_msp = ckpoint_vd->vdev_ms[m]; in verify_checkpoint_ms_spacemaps()
7937 metaslab_t *current_msp = current_vd->vdev_ms[m]; in verify_checkpoint_ms_spacemaps()
7942 (longlong_t)current_vd->vdev_id, in verify_checkpoint_ms_spacemaps()
7943 (longlong_t)current_rvd->vdev_children, in verify_checkpoint_ms_spacemaps()
7944 (longlong_t)current_vd->vdev_ms[m]->ms_id, in verify_checkpoint_ms_spacemaps()
7945 (longlong_t)current_vd->vdev_ms_count); in verify_checkpoint_ms_spacemaps()
7959 zfs_range_tree_walk(ckpoint_msp->ms_allocatable, in verify_checkpoint_ms_spacemaps()
7962 current_msp->ms_allocatable); in verify_checkpoint_ms_spacemaps()
7984 checkpoint_pool = import_checkpointed_state(spa->spa_name, NULL, in verify_checkpoint_blocks()
7986 ASSERT(strcmp(spa->spa_name, checkpoint_pool) != 0); in verify_checkpoint_blocks()
8018 vdev_t *rvd = spa->spa_root_vdev; in dump_leftover_checkpoint_blocks()
8020 for (uint64_t i = 0; i < rvd->vdev_children; i++) { in dump_leftover_checkpoint_blocks()
8021 vdev_t *vd = rvd->vdev_child[i]; in dump_leftover_checkpoint_blocks() local
8026 if (vd->vdev_top_zap == 0) in dump_leftover_checkpoint_blocks()
8029 if (zap_contains(spa_meta_objset(spa), vd->vdev_top_zap, in dump_leftover_checkpoint_blocks()
8033 VERIFY0(zap_lookup(spa_meta_objset(spa), vd->vdev_top_zap, in dump_leftover_checkpoint_blocks()
8038 checkpoint_sm_obj, 0, vd->vdev_asize, vd->vdev_ashift)); in dump_leftover_checkpoint_blocks()
8039 dump_spacemap(spa->spa_meta_objset, checkpoint_sm); in dump_leftover_checkpoint_blocks()
8053 error = zap_lookup(spa->spa_meta_objset, DMU_POOL_DIRECTORY_OBJECT, in verify_checkpoint()
8116 mos_leak_vdev_top_zap(vdev_t *vd) in mos_leak_vdev_top_zap() argument
8119 int error = zap_lookup(spa_meta_objset(vd->vdev_spa), in mos_leak_vdev_top_zap()
8120 vd->vdev_top_zap, VDEV_TOP_ZAP_MS_UNFLUSHED_PHYS_TXGS, in mos_leak_vdev_top_zap()
8130 mos_leak_vdev(vdev_t *vd) in mos_leak_vdev() argument
8132 mos_obj_refd(vd->vdev_dtl_object); in mos_leak_vdev()
8133 mos_obj_refd(vd->vdev_ms_array); in mos_leak_vdev()
8134 mos_obj_refd(vd->vdev_indirect_config.vic_births_object); in mos_leak_vdev()
8135 mos_obj_refd(vd->vdev_indirect_config.vic_mapping_object); in mos_leak_vdev()
8136 mos_obj_refd(vd->vdev_leaf_zap); in mos_leak_vdev()
8137 if (vd->vdev_checkpoint_sm != NULL) in mos_leak_vdev()
8138 mos_obj_refd(vd->vdev_checkpoint_sm->sm_object); in mos_leak_vdev()
8139 if (vd->vdev_indirect_mapping != NULL) { in mos_leak_vdev()
8140 mos_obj_refd(vd->vdev_indirect_mapping-> in mos_leak_vdev()
8141 vim_phys->vimp_counts_object); in mos_leak_vdev()
8143 if (vd->vdev_obsolete_sm != NULL) in mos_leak_vdev()
8144 mos_obj_refd(vd->vdev_obsolete_sm->sm_object); in mos_leak_vdev()
8146 for (uint64_t m = 0; m < vd->vdev_ms_count; m++) { in mos_leak_vdev()
8147 metaslab_t *ms = vd->vdev_ms[m]; in mos_leak_vdev()
8148 mos_obj_refd(space_map_object(ms->ms_sm)); in mos_leak_vdev()
8151 if (vd->vdev_root_zap != 0) in mos_leak_vdev()
8152 mos_obj_refd(vd->vdev_root_zap); in mos_leak_vdev()
8154 if (vd->vdev_top_zap != 0) { in mos_leak_vdev()
8155 mos_obj_refd(vd->vdev_top_zap); in mos_leak_vdev()
8156 mos_leak_vdev_top_zap(vd); in mos_leak_vdev()
8159 for (uint64_t c = 0; c < vd->vdev_children; c++) { in mos_leak_vdev()
8160 mos_leak_vdev(vd->vdev_child[c]); in mos_leak_vdev()
8176 for (spa_log_sm_t *sls = avl_first(&spa->spa_sm_logs_by_txg); in mos_leak_log_spacemaps()
8177 sls; sls = AVL_NEXT(&spa->spa_sm_logs_by_txg, sls)) in mos_leak_log_spacemaps()
8178 mos_obj_refd(sls->sls_sm_obj); in mos_leak_log_spacemaps()
8189 mos_obj_refd(za->za_first_integer); in errorlog_count_refd()
8199 objset_t *mos = spa->spa_meta_objset; in dump_mos_leaks()
8200 dsl_pool_t *dp = spa->spa_dsl_pool; in dump_mos_leaks()
8205 mos_obj_refd(spa->spa_pool_props_object); in dump_mos_leaks()
8206 mos_obj_refd(spa->spa_config_object); in dump_mos_leaks()
8207 mos_obj_refd(spa->spa_ddt_stat_object); in dump_mos_leaks()
8208 mos_obj_refd(spa->spa_feat_desc_obj); in dump_mos_leaks()
8209 mos_obj_refd(spa->spa_feat_enabled_txg_obj); in dump_mos_leaks()
8210 mos_obj_refd(spa->spa_feat_for_read_obj); in dump_mos_leaks()
8211 mos_obj_refd(spa->spa_feat_for_write_obj); in dump_mos_leaks()
8212 mos_obj_refd(spa->spa_history); in dump_mos_leaks()
8213 mos_obj_refd(spa->spa_errlog_last); in dump_mos_leaks()
8214 mos_obj_refd(spa->spa_errlog_scrub); in dump_mos_leaks()
8217 errorlog_count_refd(mos, spa->spa_errlog_last); in dump_mos_leaks()
8218 errorlog_count_refd(mos, spa->spa_errlog_scrub); in dump_mos_leaks()
8221 mos_obj_refd(spa->spa_all_vdev_zaps); in dump_mos_leaks()
8222 mos_obj_refd(spa->spa_dsl_pool->dp_bptree_obj); in dump_mos_leaks()
8223 mos_obj_refd(spa->spa_dsl_pool->dp_tmp_userrefs_obj); in dump_mos_leaks()
8224 mos_obj_refd(spa->spa_dsl_pool->dp_scan->scn_phys.scn_queue_obj); in dump_mos_leaks()
8225 bpobj_count_refd(&spa->spa_deferred_bpobj); in dump_mos_leaks()
8226 mos_obj_refd(dp->dp_empty_bpobj); in dump_mos_leaks()
8227 bpobj_count_refd(&dp->dp_obsolete_bpobj); in dump_mos_leaks()
8228 bpobj_count_refd(&dp->dp_free_bpobj); in dump_mos_leaks()
8229 mos_obj_refd(spa->spa_l2cache.sav_object); in dump_mos_leaks()
8230 mos_obj_refd(spa->spa_spares.sav_object); in dump_mos_leaks()
8232 if (spa->spa_syncing_log_sm != NULL) in dump_mos_leaks()
8233 mos_obj_refd(spa->spa_syncing_log_sm->sm_object); in dump_mos_leaks()
8236 mos_obj_refd(spa->spa_condensing_indirect_phys. in dump_mos_leaks()
8238 mos_obj_refd(spa->spa_condensing_indirect_phys. in dump_mos_leaks()
8240 if (spa->spa_condensing_indirect_phys.scip_next_mapping_object != 0) { in dump_mos_leaks()
8243 spa->spa_condensing_indirect_phys.scip_next_mapping_object); in dump_mos_leaks()
8244 mos_obj_refd(vim->vim_phys->vimp_counts_object); in dump_mos_leaks()
8249 if (dp->dp_origin_snap != NULL) { in dump_mos_leaks()
8254 dsl_dataset_phys(dp->dp_origin_snap)->ds_next_snap_obj, in dump_mos_leaks()
8257 dump_blkptr_list(&ds->ds_deadlist, "Deadlist"); in dump_mos_leaks()
8261 count_ds_mos_objects(dp->dp_origin_snap); in dump_mos_leaks()
8262 dump_blkptr_list(&dp->dp_origin_snap->ds_deadlist, "Deadlist"); in dump_mos_leaks()
8264 count_dir_mos_objects(dp->dp_mos_dir); in dump_mos_leaks()
8265 if (dp->dp_free_dir != NULL) in dump_mos_leaks()
8266 count_dir_mos_objects(dp->dp_free_dir); in dump_mos_leaks()
8267 if (dp->dp_leak_dir != NULL) in dump_mos_leaks()
8268 count_dir_mos_objects(dp->dp_leak_dir); in dump_mos_leaks()
8270 mos_leak_vdev(spa->spa_root_vdev); in dump_mos_leaks()
8273 ddt_t *ddt = spa->spa_ddt[c]; in dump_mos_leaks()
8274 if (!ddt || ddt->ddt_version == DDT_VERSION_UNCONFIGURED) in dump_mos_leaks()
8281 mos_obj_refd(ddt->ddt_object[type][class]); in dump_mos_leaks()
8286 if (ddt->ddt_version == DDT_VERSION_FDT) in dump_mos_leaks()
8287 mos_obj_refd(ddt->ddt_dir_object); in dump_mos_leaks()
8290 if (ddt->ddt_flags & DDT_FLAG_LOG) { in dump_mos_leaks()
8291 mos_obj_refd(ddt->ddt_log[0].ddl_object); in dump_mos_leaks()
8292 mos_obj_refd(ddt->ddt_log[1].ddl_object); in dump_mos_leaks()
8296 for (uint64_t vdevid = 0; vdevid < spa->spa_brt_nvdevs; vdevid++) { in dump_mos_leaks()
8297 brt_vdev_t *brtvd = spa->spa_brt_vdevs[vdevid]; in dump_mos_leaks()
8298 if (brtvd->bv_initiated) { in dump_mos_leaks()
8299 mos_obj_refd(brtvd->bv_mos_brtvdev); in dump_mos_leaks()
8300 mos_obj_refd(brtvd->bv_mos_entries); in dump_mos_leaks()
8352 uint64_t offset = sme->sme_offset; in log_spacemap_obsolete_stats_cb()
8353 uint64_t vdev_id = sme->sme_vdev; in log_spacemap_obsolete_stats_cb()
8355 if (lsos->lsos_current_txg == 0) { in log_spacemap_obsolete_stats_cb()
8357 lsos->lsos_current_txg = txg; in log_spacemap_obsolete_stats_cb()
8358 } else if (lsos->lsos_current_txg < txg) { in log_spacemap_obsolete_stats_cb()
8359 /* we just changed log - print stats and reset */ in log_spacemap_obsolete_stats_cb()
8360 (void) printf("%-8llu valid entries out of %-8llu - txg %llu\n", in log_spacemap_obsolete_stats_cb()
8361 (u_longlong_t)lsos->lsos_valid_sm_entries, in log_spacemap_obsolete_stats_cb()
8362 (u_longlong_t)lsos->lsos_sm_entries, in log_spacemap_obsolete_stats_cb()
8363 (u_longlong_t)lsos->lsos_current_txg); in log_spacemap_obsolete_stats_cb()
8364 lsos->lsos_valid_sm_entries = 0; in log_spacemap_obsolete_stats_cb()
8365 lsos->lsos_sm_entries = 0; in log_spacemap_obsolete_stats_cb()
8366 lsos->lsos_current_txg = txg; in log_spacemap_obsolete_stats_cb()
8368 ASSERT3U(lsos->lsos_current_txg, ==, txg); in log_spacemap_obsolete_stats_cb()
8370 lsos->lsos_sm_entries++; in log_spacemap_obsolete_stats_cb()
8371 lsos->lsos_total_entries++; in log_spacemap_obsolete_stats_cb()
8373 vdev_t *vd = vdev_lookup_top(spa, vdev_id); in log_spacemap_obsolete_stats_cb() local
8374 if (!vdev_is_concrete(vd)) in log_spacemap_obsolete_stats_cb()
8377 metaslab_t *ms = vd->vdev_ms[offset >> vd->vdev_ms_shift]; in log_spacemap_obsolete_stats_cb()
8378 ASSERT(sme->sme_type == SM_ALLOC || sme->sme_type == SM_FREE); in log_spacemap_obsolete_stats_cb()
8382 lsos->lsos_valid_sm_entries++; in log_spacemap_obsolete_stats_cb()
8383 lsos->lsos_valid_entries++; in log_spacemap_obsolete_stats_cb()
8401 (void) printf("%-8llu valid entries out of %-8llu - txg %llu\n", in dump_log_spacemap_obsolete_stats()
8406 (void) printf("%-8llu valid entries out of %-8llu - total\n\n", in dump_log_spacemap_obsolete_stats()
8428 dump_nvlist(spa->spa_config, 8); in dump_zpool()
8435 dump_uberblock(&spa->spa_uberblock, "\nUberblock:\n", "\n"); in dump_zpool()
8456 dump_objset(dp->dp_meta_objset); in dump_zpool()
8459 dsl_pool_t *dp = spa->spa_dsl_pool; in dump_zpool()
8460 dump_full_bpobj(&spa->spa_deferred_bpobj, in dump_zpool()
8463 dump_full_bpobj(&dp->dp_free_bpobj, in dump_zpool()
8466 if (bpobj_is_open(&dp->dp_obsolete_bpobj)) { in dump_zpool()
8469 dump_full_bpobj(&dp->dp_obsolete_bpobj, in dump_zpool()
8475 dump_bptree(spa->spa_meta_objset, in dump_zpool()
8476 dp->dp_bptree_obj, in dump_zpool()
8479 dump_dtl(spa->spa_root_vdev, 0); in dump_zpool()
8641 * leaf_name - For example: c1t0d0 or /tmp/ztest.0a
8642 * child[.child]* - For example: 0.1.1
8646 * RAID-Zs, you can specify either RAID-Z vdev with 0.0 or 0.1 .
8661 if (i >= vdev->vdev_children) in zdb_vdev_lookup()
8664 vdev = vdev->vdev_child[i]; in zdb_vdev_lookup()
8670 for (i = 0; i < vdev->vdev_children; i++) { in zdb_vdev_lookup()
8671 vdev_t *vc = vdev->vdev_child[i]; in zdb_vdev_lookup()
8673 if (vc->vdev_path == NULL) { in zdb_vdev_lookup()
8681 p = strrchr(vc->vdev_path, '/'); in zdb_vdev_lookup()
8682 p = p ? p + 1 : vc->vdev_path; in zdb_vdev_lookup()
8683 q = &vc->vdev_path[strlen(vc->vdev_path) - 2]; in zdb_vdev_lookup()
8685 if (strcmp(vc->vdev_path, path) == 0) in zdb_vdev_lookup()
8689 if (strcmp(q, "s0") == 0 && strncmp(p, path, q - p) == 0) in zdb_vdev_lookup()
8701 dsl_pool_config_enter(spa->spa_dsl_pool, FTAG); in name_from_objset_id()
8702 int error = dsl_dataset_hold_obj(spa->spa_dsl_pool, objset_id, in name_from_objset_id()
8707 dsl_pool_config_exit(spa->spa_dsl_pool, FTAG); in name_from_objset_id()
8712 dsl_pool_config_exit(spa->spa_dsl_pool, FTAG); in name_from_objset_id()
8741 "Trying %05llx -> %05llx (%s)\n", in try_decompress_block()
8852 return (lsize > maxlsize ? -1 : lsize); in zdb_decompress_block()
8861 * pool - The name of the pool you wish to read from
8862 * vdev_specifier - Which vdev (see comment for zdb_vdev_lookup)
8863 * offset - offset, in hex, in bytes
8864 * size - Amount of data to read, in hex, in bytes
8865 * flags - A string of characters specifying options
8880 dva_t *dva = bp->blk_dva; in zdb_read_block()
8884 vdev_t *vd; in zdb_read_block() local
8908 (void) printf("Invalid block specifier: %s - %s\n", in zdb_read_block()
8966 vd = zdb_vdev_lookup(spa->spa_root_vdev, vdev); in zdb_read_block()
8967 if (vd == NULL) { in zdb_read_block()
8971 if (vd->vdev_path) in zdb_read_block()
8973 vd->vdev_path); in zdb_read_block()
8976 vd->vdev_ops->vdev_op_type); in zdb_read_block()
8984 DVA_SET_VDEV(&dva[0], vd->vdev_id); in zdb_read_block()
8987 DVA_SET_ASIZE(&dva[0], vdev_psize_to_asize(vd, psize)); in zdb_read_block()
9003 if (vd == vd->vdev_top) { in zdb_read_block()
9014 zio_nowait(zio_vdev_child_io(zio, bp, vd, offset, pabd, in zdb_read_block()
9034 if (lsize == -1) { in zdb_read_block()
9059 if (lsize == -1 || zfs_blkptr_verify(spa, b, in zdb_read_block()
9100 if (vd == vd->vdev_top) { in zdb_read_block()
9107 zio_nowait(zio_vdev_child_io(czio, bp, vd, in zdb_read_block()
9120 ck_zio->io_offset = in zdb_read_block()
9121 DVA_GET_OFFSET(&bp->blk_dva[0]); in zdb_read_block()
9122 ck_zio->io_bp = bp; in zdb_read_block()
9128 (u_longlong_t)bp->blk_cksum.zc_word[0], in zdb_read_block()
9129 (u_longlong_t)bp->blk_cksum.zc_word[1], in zdb_read_block()
9130 (u_longlong_t)bp->blk_cksum.zc_word[2], in zdb_read_block()
9131 (u_longlong_t)bp->blk_cksum.zc_word[3]); in zdb_read_block()
9227 int64_t objset_id = -1; in main()
9242 * Set up signal handlers, so if we crash due to bad on-disk data we in main()
9260 * default spa_config_path setting. If -U flag is specified it will in main()
9275 {"ignore-assertions", no_argument, NULL, 'A'}, in main()
9276 {"block-stats", no_argument, NULL, 'b'}, in main()
9281 {"dedup-stats", no_argument, NULL, 'D'}, in main()
9283 {"embedded-block-pointer", no_argument, NULL, 'E'}, in main()
9284 {"automatic-rewind", no_argument, NULL, 'F'}, in main()
9285 {"dump-debug-msg", no_argument, NULL, 'G'}, in main()
9287 {"intent-logs", no_argument, NULL, 'i'}, in main()
9289 {"checkpointed-state", no_argument, NULL, 'k'}, in main()
9292 {"disable-leak-tracking", no_argument, NULL, 'L'}, in main()
9294 {"metaslab-groups", no_argument, NULL, 'M'}, in main()
9297 {"object-lookups", no_argument, NULL, 'O'}, in main()
9300 {"skip-label", no_argument, NULL, 'q'}, in main()
9301 {"copy-object", no_argument, NULL, 'r'}, in main()
9302 {"read-block", no_argument, NULL, 'R'}, in main()
9303 {"io-stats", no_argument, NULL, 's'}, in main()
9304 {"simulate-dedup", no_argument, NULL, 'S'}, in main()
9306 {"brt-stats", no_argument, NULL, 'T'}, in main()
9311 {"dump-blocks", required_argument, NULL, 'x'}, in main()
9312 {"extreme-rewind", no_argument, NULL, 'X'}, in main()
9313 {"all-reconstruction", no_argument, NULL, 'Y'}, in main()
9315 {"zstd-headers", no_argument, NULL, 'Z'}, in main()
9321 long_options, NULL)) != -1) { in main()
9433 (void) fprintf(stderr, "-p option requires use of -e\n"); in main()
9438 * ZDB does not typically re-read blocks; therefore limit the ARC in main()
9446 * "zdb -c" uses checksum-verifying scrub i/os which are async reads. in main()
9447 * "zdb -b" uses traversal prefetch which uses async reads. in main()
9459 * to load non-idle pools. in main()
9481 argc -= optind; in main()
9507 value = "-"; in main()
9516 } else if ((strcmp(pbuf, "-") == 0 && in main()
9560 /* -N implies -d */ in main()
9579 if (targetlen && target[targetlen - 1] == '/') in main()
9580 target[targetlen - 1] = '\0'; in main()
9583 * See if an objset ID was supplied (-d <pool>/<objset ID>). in main()
9585 * if -N was given, otherwise 100 is an objsetID iff in main()
9603 objset_id = -1; in main()
9607 printf("Supply a numeric objset ID with -N\n"); in main()
9665 * We need to make sure to process -O option or call in main()
9666 * dump_path after the -e option has been processed, in main()
9692 * it always after the -e option has been processed, which in main()
9739 spa->spa_log_state == SPA_LOG_MISSING) { in main()
9740 spa->spa_log_state = SPA_LOG_CLEAR; in main()
9771 * If -N was supplied, the user has indicated that in main()
9772 * zdb -d <pool>/<objsetID> is in effect. Otherwise in main()
9824 spa->spa_failmode = ZIO_FAILURE_MODE_PANIC; in main()
9827 argc--; in main()
9869 dump_objset(spa->spa_meta_objset); in main()