Lines Matching refs:vd

323 vdev_indirect_mark_obsolete(vdev_t *vd, uint64_t offset, uint64_t size)  in vdev_indirect_mark_obsolete()  argument
325 spa_t *spa = vd->vdev_spa; in vdev_indirect_mark_obsolete()
327 ASSERT3U(vd->vdev_indirect_config.vic_mapping_object, !=, 0); in vdev_indirect_mark_obsolete()
328 ASSERT(vd->vdev_removing || vd->vdev_ops == &vdev_indirect_ops); in vdev_indirect_mark_obsolete()
331 vd->vdev_indirect_mapping, offset) != NULL); in vdev_indirect_mark_obsolete()
334 mutex_enter(&vd->vdev_obsolete_lock); in vdev_indirect_mark_obsolete()
335 range_tree_add(vd->vdev_obsolete_segments, offset, size); in vdev_indirect_mark_obsolete()
336 mutex_exit(&vd->vdev_obsolete_lock); in vdev_indirect_mark_obsolete()
337 vdev_dirty(vd, 0, NULL, spa_syncing_txg(spa)); in vdev_indirect_mark_obsolete()
350 vdev_t *vd = vdev_lookup_top(spa, vdev_id); in spa_vdev_indirect_mark_obsolete() local
354 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_vdev_indirect_mark_obsolete()
355 vdev_indirect_mark_obsolete(vd, offset, size); in spa_vdev_indirect_mark_obsolete()
391 vdev_indirect_should_condense(vdev_t *vd) in vdev_indirect_should_condense() argument
393 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in vdev_indirect_should_condense()
394 spa_t *spa = vd->vdev_spa; in vdev_indirect_should_condense()
415 if (vd->vdev_ops != &vdev_indirect_ops) in vdev_indirect_should_condense()
423 ASSERT0(vdev_obsolete_sm_object(vd, &obsolete_sm_obj)); in vdev_indirect_should_condense()
424 if (vd->vdev_obsolete_sm == NULL) { in vdev_indirect_should_condense()
429 ASSERT(vd->vdev_obsolete_sm != NULL); in vdev_indirect_should_condense()
431 ASSERT3U(obsolete_sm_obj, ==, space_map_object(vd->vdev_obsolete_sm)); in vdev_indirect_should_condense()
434 uint64_t bytes_obsolete = space_map_allocated(vd->vdev_obsolete_sm); in vdev_indirect_should_condense()
436 uint64_t obsolete_sm_size = space_map_length(vd->vdev_obsolete_sm); in vdev_indirect_should_condense()
451 (u_longlong_t)vd->vdev_id, in vdev_indirect_should_condense()
464 (u_longlong_t)vd->vdev_id, in vdev_indirect_should_condense()
485 vdev_t *vd = vdev_lookup_top(spa, scip->scip_vdev); in spa_condense_indirect_complete_sync() local
486 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in spa_condense_indirect_complete_sync()
488 vdev_indirect_mapping_t *old_mapping = vd->vdev_indirect_mapping; in spa_condense_indirect_complete_sync()
494 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_complete_sync()
500 ASSERT3U(vd->vdev_id, ==, scip->scip_vdev); in spa_condense_indirect_complete_sync()
507 rw_enter(&vd->vdev_indirect_rwlock, RW_WRITER); in spa_condense_indirect_complete_sync()
508 vdev_indirect_mapping_close(vd->vdev_indirect_mapping); in spa_condense_indirect_complete_sync()
509 vd->vdev_indirect_mapping = sci->sci_new_mapping; in spa_condense_indirect_complete_sync()
510 rw_exit(&vd->vdev_indirect_rwlock); in spa_condense_indirect_complete_sync()
531 (u_longlong_t)vd->vdev_id, (u_longlong_t)dmu_tx_get_txg(tx), in spa_condense_indirect_complete_sync()
592 spa_condense_indirect_generate_new_mapping(vdev_t *vd, in spa_condense_indirect_generate_new_mapping() argument
595 spa_t *spa = vd->vdev_spa; in spa_condense_indirect_generate_new_mapping()
597 vdev_indirect_mapping_t *old_mapping = vd->vdev_indirect_mapping; in spa_condense_indirect_generate_new_mapping()
601 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_generate_new_mapping()
602 ASSERT3U(vd->vdev_id, ==, spa->spa_condensing_indirect_phys.scip_vdev); in spa_condense_indirect_generate_new_mapping()
605 (u_longlong_t)vd->vdev_id, in spa_condense_indirect_generate_new_mapping()
612 "at index %llu", (u_longlong_t)vd->vdev_id, in spa_condense_indirect_generate_new_mapping()
652 vdev_t *vd; in spa_condense_indirect_thread() local
656 vd = vdev_lookup_top(spa, spa->spa_condensing_indirect_phys.scip_vdev); in spa_condense_indirect_thread()
657 ASSERT3P(vd, !=, NULL); in spa_condense_indirect_thread()
665 vdev_indirect_mapping_t *old_mapping = vd->vdev_indirect_mapping; in spa_condense_indirect_thread()
668 ASSERT3U(vd->vdev_id, ==, scip->scip_vdev); in spa_condense_indirect_thread()
671 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_thread()
685 scip->scip_prev_obsolete_sm_object, 0, vd->vdev_asize, 0)); in spa_condense_indirect_thread()
732 spa_condense_indirect_generate_new_mapping(vd, counts, in spa_condense_indirect_thread()
755 spa_condense_indirect_start_sync(vdev_t *vd, dmu_tx_t *tx) in spa_condense_indirect_start_sync() argument
757 spa_t *spa = vd->vdev_spa; in spa_condense_indirect_start_sync()
765 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_start_sync()
767 ASSERT(vdev_indirect_mapping_num_entries(vd->vdev_indirect_mapping)); in spa_condense_indirect_start_sync()
770 VERIFY0(vdev_obsolete_sm_object(vd, &obsolete_sm_obj)); in spa_condense_indirect_start_sync()
773 scip->scip_vdev = vd->vdev_id; in spa_condense_indirect_start_sync()
783 space_map_close(vd->vdev_obsolete_sm); in spa_condense_indirect_start_sync()
784 vd->vdev_obsolete_sm = NULL; in spa_condense_indirect_start_sync()
785 VERIFY0(zap_remove(spa->spa_meta_objset, vd->vdev_top_zap, in spa_condense_indirect_start_sync()
798 (u_longlong_t)vd->vdev_id, (u_longlong_t)dmu_tx_get_txg(tx), in spa_condense_indirect_start_sync()
812 vdev_indirect_sync_obsolete(vdev_t *vd, dmu_tx_t *tx) in vdev_indirect_sync_obsolete() argument
814 spa_t *spa = vd->vdev_spa; in vdev_indirect_sync_obsolete()
815 vdev_indirect_config_t *vic __maybe_unused = &vd->vdev_indirect_config; in vdev_indirect_sync_obsolete()
818 ASSERT(range_tree_space(vd->vdev_obsolete_segments) > 0); in vdev_indirect_sync_obsolete()
819 ASSERT(vd->vdev_removing || vd->vdev_ops == &vdev_indirect_ops); in vdev_indirect_sync_obsolete()
823 VERIFY0(vdev_obsolete_sm_object(vd, &obsolete_sm_object)); in vdev_indirect_sync_obsolete()
828 ASSERT(vd->vdev_top_zap != 0); in vdev_indirect_sync_obsolete()
829 VERIFY0(zap_add(vd->vdev_spa->spa_meta_objset, vd->vdev_top_zap, in vdev_indirect_sync_obsolete()
832 ASSERT0(vdev_obsolete_sm_object(vd, &obsolete_sm_object)); in vdev_indirect_sync_obsolete()
836 VERIFY0(space_map_open(&vd->vdev_obsolete_sm, in vdev_indirect_sync_obsolete()
838 0, vd->vdev_asize, 0)); in vdev_indirect_sync_obsolete()
841 ASSERT(vd->vdev_obsolete_sm != NULL); in vdev_indirect_sync_obsolete()
843 space_map_object(vd->vdev_obsolete_sm)); in vdev_indirect_sync_obsolete()
845 space_map_write(vd->vdev_obsolete_sm, in vdev_indirect_sync_obsolete()
846 vd->vdev_obsolete_segments, SM_ALLOC, SM_NO_VDEVID, tx); in vdev_indirect_sync_obsolete()
847 range_tree_vacate(vd->vdev_obsolete_segments, NULL, NULL); in vdev_indirect_sync_obsolete()
895 vdev_obsolete_sm_object(vdev_t *vd, uint64_t *sm_obj) in vdev_obsolete_sm_object() argument
897 ASSERT0(spa_config_held(vd->vdev_spa, SCL_ALL, RW_WRITER)); in vdev_obsolete_sm_object()
899 if (vd->vdev_top_zap == 0) { in vdev_obsolete_sm_object()
904 int error = zap_lookup(vd->vdev_spa->spa_meta_objset, vd->vdev_top_zap, in vdev_obsolete_sm_object()
920 vdev_obsolete_counts_are_precise(vdev_t *vd, boolean_t *are_precise) in vdev_obsolete_counts_are_precise() argument
922 ASSERT0(spa_config_held(vd->vdev_spa, SCL_ALL, RW_WRITER)); in vdev_obsolete_counts_are_precise()
924 if (vd->vdev_top_zap == 0) { in vdev_obsolete_counts_are_precise()
930 int error = zap_lookup(vd->vdev_spa->spa_meta_objset, vd->vdev_top_zap, in vdev_obsolete_counts_are_precise()
943 vdev_indirect_close(vdev_t *vd) in vdev_indirect_close() argument
945 (void) vd; in vdev_indirect_close()
949 vdev_indirect_open(vdev_t *vd, uint64_t *psize, uint64_t *max_psize, in vdev_indirect_open() argument
952 *psize = *max_psize = vd->vdev_asize + in vdev_indirect_open()
954 *logical_ashift = vd->vdev_ashift; in vdev_indirect_open()
955 *physical_ashift = vd->vdev_physical_ashift; in vdev_indirect_open()
968 rs_alloc(vdev_t *vd, uint64_t offset, uint64_t asize, uint64_t split_offset) in rs_alloc() argument
971 rs->rs_vd = vd; in rs_alloc()
992 vdev_indirect_mapping_duplicate_adjacent_entries(vdev_t *vd, uint64_t offset, in vdev_indirect_mapping_duplicate_adjacent_entries() argument
996 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in vdev_indirect_mapping_duplicate_adjacent_entries()
999 ASSERT(RW_READ_HELD(&vd->vdev_indirect_rwlock)); in vdev_indirect_mapping_duplicate_adjacent_entries()
1057 vdev_indirect_remap(vdev_t *vd, uint64_t offset, uint64_t asize, in vdev_indirect_remap() argument
1061 spa_t *spa = vd->vdev_spa; in vdev_indirect_remap()
1066 for (remap_segment_t *rs = rs_alloc(vd, offset, asize, 0); in vdev_indirect_remap()
1195 vdev_indirect_gather_splits(uint64_t split_offset, vdev_t *vd, uint64_t offset, in vdev_indirect_gather_splits() argument
1201 ASSERT3P(vd, !=, NULL); in vdev_indirect_gather_splits()
1203 if (vd->vdev_ops == &vdev_indirect_ops) in vdev_indirect_gather_splits()
1207 if (vd->vdev_ops == &vdev_mirror_ops) in vdev_indirect_gather_splits()
1208 n = vd->vdev_children; in vdev_indirect_gather_splits()
1217 is->is_vdev = vd; in vdev_indirect_gather_splits()
1227 if (vd->vdev_ops == &vdev_mirror_ops) { in vdev_indirect_gather_splits()
1229 is->is_child[i].ic_vdev = vd->vdev_child[i]; in vdev_indirect_gather_splits()
1233 is->is_child[0].ic_vdev = vd; in vdev_indirect_gather_splits()
1392 vdev_t *vd = ic->ic_vdev; in vdev_indirect_checksum_error() local
1397 mutex_enter(&vd->vdev_stat_lock); in vdev_indirect_checksum_error()
1398 vd->vdev_stat.vs_checksum_errors++; in vdev_indirect_checksum_error()
1399 mutex_exit(&vd->vdev_stat_lock); in vdev_indirect_checksum_error()
1404 (void) zfs_ereport_post_checksum(zio->io_spa, vd, NULL, zio, in vdev_indirect_checksum_error()
1480 vdev_t *vd = ic->ic_vdev; in vdev_indirect_all_checksum_errors() local
1482 mutex_enter(&vd->vdev_stat_lock); in vdev_indirect_all_checksum_errors()
1483 vd->vdev_stat.vs_checksum_errors++; in vdev_indirect_all_checksum_errors()
1484 mutex_exit(&vd->vdev_stat_lock); in vdev_indirect_all_checksum_errors()
1485 (void) zfs_ereport_post_checksum(zio->io_spa, vd, in vdev_indirect_all_checksum_errors()