Lines Matching refs:vd
325 vdev_indirect_mark_obsolete(vdev_t *vd, uint64_t offset, uint64_t size) in vdev_indirect_mark_obsolete() argument
327 spa_t *spa = vd->vdev_spa; in vdev_indirect_mark_obsolete()
329 ASSERT3U(vd->vdev_indirect_config.vic_mapping_object, !=, 0); in vdev_indirect_mark_obsolete()
330 ASSERT(vd->vdev_removing || vd->vdev_ops == &vdev_indirect_ops); in vdev_indirect_mark_obsolete()
333 vd->vdev_indirect_mapping, offset) != NULL); in vdev_indirect_mark_obsolete()
336 mutex_enter(&vd->vdev_obsolete_lock); in vdev_indirect_mark_obsolete()
337 zfs_range_tree_add(vd->vdev_obsolete_segments, offset, size); in vdev_indirect_mark_obsolete()
338 mutex_exit(&vd->vdev_obsolete_lock); in vdev_indirect_mark_obsolete()
339 vdev_dirty(vd, 0, NULL, spa_syncing_txg(spa)); in vdev_indirect_mark_obsolete()
352 vdev_t *vd = vdev_lookup_top(spa, vdev_id); in spa_vdev_indirect_mark_obsolete() local
356 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_vdev_indirect_mark_obsolete()
357 vdev_indirect_mark_obsolete(vd, offset, size); in spa_vdev_indirect_mark_obsolete()
393 vdev_indirect_should_condense(vdev_t *vd) in vdev_indirect_should_condense() argument
395 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in vdev_indirect_should_condense()
396 spa_t *spa = vd->vdev_spa; in vdev_indirect_should_condense()
417 if (vd->vdev_ops != &vdev_indirect_ops) in vdev_indirect_should_condense()
425 ASSERT0(vdev_obsolete_sm_object(vd, &obsolete_sm_obj)); in vdev_indirect_should_condense()
426 if (vd->vdev_obsolete_sm == NULL) { in vdev_indirect_should_condense()
431 ASSERT(vd->vdev_obsolete_sm != NULL); in vdev_indirect_should_condense()
433 ASSERT3U(obsolete_sm_obj, ==, space_map_object(vd->vdev_obsolete_sm)); in vdev_indirect_should_condense()
436 uint64_t bytes_obsolete = space_map_allocated(vd->vdev_obsolete_sm); in vdev_indirect_should_condense()
438 uint64_t obsolete_sm_size = space_map_length(vd->vdev_obsolete_sm); in vdev_indirect_should_condense()
453 (u_longlong_t)vd->vdev_id, in vdev_indirect_should_condense()
466 (u_longlong_t)vd->vdev_id, in vdev_indirect_should_condense()
487 vdev_t *vd = vdev_lookup_top(spa, scip->scip_vdev); in spa_condense_indirect_complete_sync() local
488 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in spa_condense_indirect_complete_sync()
490 vdev_indirect_mapping_t *old_mapping = vd->vdev_indirect_mapping; in spa_condense_indirect_complete_sync()
496 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_complete_sync()
502 ASSERT3U(vd->vdev_id, ==, scip->scip_vdev); in spa_condense_indirect_complete_sync()
509 rw_enter(&vd->vdev_indirect_rwlock, RW_WRITER); in spa_condense_indirect_complete_sync()
510 vdev_indirect_mapping_close(vd->vdev_indirect_mapping); in spa_condense_indirect_complete_sync()
511 vd->vdev_indirect_mapping = sci->sci_new_mapping; in spa_condense_indirect_complete_sync()
512 rw_exit(&vd->vdev_indirect_rwlock); in spa_condense_indirect_complete_sync()
533 (u_longlong_t)vd->vdev_id, (u_longlong_t)dmu_tx_get_txg(tx), in spa_condense_indirect_complete_sync()
594 spa_condense_indirect_generate_new_mapping(vdev_t *vd, in spa_condense_indirect_generate_new_mapping() argument
597 spa_t *spa = vd->vdev_spa; in spa_condense_indirect_generate_new_mapping()
599 vdev_indirect_mapping_t *old_mapping = vd->vdev_indirect_mapping; in spa_condense_indirect_generate_new_mapping()
603 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_generate_new_mapping()
604 ASSERT3U(vd->vdev_id, ==, spa->spa_condensing_indirect_phys.scip_vdev); in spa_condense_indirect_generate_new_mapping()
607 (u_longlong_t)vd->vdev_id, in spa_condense_indirect_generate_new_mapping()
614 "at index %llu", (u_longlong_t)vd->vdev_id, in spa_condense_indirect_generate_new_mapping()
654 vdev_t *vd; in spa_condense_indirect_thread() local
658 vd = vdev_lookup_top(spa, spa->spa_condensing_indirect_phys.scip_vdev); in spa_condense_indirect_thread()
659 ASSERT3P(vd, !=, NULL); in spa_condense_indirect_thread()
667 vdev_indirect_mapping_t *old_mapping = vd->vdev_indirect_mapping; in spa_condense_indirect_thread()
670 ASSERT3U(vd->vdev_id, ==, scip->scip_vdev); in spa_condense_indirect_thread()
673 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_thread()
687 scip->scip_prev_obsolete_sm_object, 0, vd->vdev_asize, 0)); in spa_condense_indirect_thread()
734 spa_condense_indirect_generate_new_mapping(vd, counts, in spa_condense_indirect_thread()
757 spa_condense_indirect_start_sync(vdev_t *vd, dmu_tx_t *tx) in spa_condense_indirect_start_sync() argument
759 spa_t *spa = vd->vdev_spa; in spa_condense_indirect_start_sync()
767 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_start_sync()
769 ASSERT(vdev_indirect_mapping_num_entries(vd->vdev_indirect_mapping)); in spa_condense_indirect_start_sync()
772 VERIFY0(vdev_obsolete_sm_object(vd, &obsolete_sm_obj)); in spa_condense_indirect_start_sync()
775 scip->scip_vdev = vd->vdev_id; in spa_condense_indirect_start_sync()
785 space_map_close(vd->vdev_obsolete_sm); in spa_condense_indirect_start_sync()
786 vd->vdev_obsolete_sm = NULL; in spa_condense_indirect_start_sync()
787 VERIFY0(zap_remove(spa->spa_meta_objset, vd->vdev_top_zap, in spa_condense_indirect_start_sync()
800 (u_longlong_t)vd->vdev_id, (u_longlong_t)dmu_tx_get_txg(tx), in spa_condense_indirect_start_sync()
814 vdev_indirect_sync_obsolete(vdev_t *vd, dmu_tx_t *tx) in vdev_indirect_sync_obsolete() argument
816 spa_t *spa = vd->vdev_spa; in vdev_indirect_sync_obsolete()
817 vdev_indirect_config_t *vic __maybe_unused = &vd->vdev_indirect_config; in vdev_indirect_sync_obsolete()
820 ASSERT(zfs_range_tree_space(vd->vdev_obsolete_segments) > 0); in vdev_indirect_sync_obsolete()
821 ASSERT(vd->vdev_removing || vd->vdev_ops == &vdev_indirect_ops); in vdev_indirect_sync_obsolete()
825 VERIFY0(vdev_obsolete_sm_object(vd, &obsolete_sm_object)); in vdev_indirect_sync_obsolete()
830 ASSERT(vd->vdev_top_zap != 0); in vdev_indirect_sync_obsolete()
831 VERIFY0(zap_add(vd->vdev_spa->spa_meta_objset, vd->vdev_top_zap, in vdev_indirect_sync_obsolete()
834 ASSERT0(vdev_obsolete_sm_object(vd, &obsolete_sm_object)); in vdev_indirect_sync_obsolete()
838 VERIFY0(space_map_open(&vd->vdev_obsolete_sm, in vdev_indirect_sync_obsolete()
840 0, vd->vdev_asize, 0)); in vdev_indirect_sync_obsolete()
843 ASSERT(vd->vdev_obsolete_sm != NULL); in vdev_indirect_sync_obsolete()
845 space_map_object(vd->vdev_obsolete_sm)); in vdev_indirect_sync_obsolete()
847 space_map_write(vd->vdev_obsolete_sm, in vdev_indirect_sync_obsolete()
848 vd->vdev_obsolete_segments, SM_ALLOC, SM_NO_VDEVID, tx); in vdev_indirect_sync_obsolete()
849 zfs_range_tree_vacate(vd->vdev_obsolete_segments, NULL, NULL); in vdev_indirect_sync_obsolete()
897 vdev_obsolete_sm_object(vdev_t *vd, uint64_t *sm_obj) in vdev_obsolete_sm_object() argument
899 ASSERT0(spa_config_held(vd->vdev_spa, SCL_ALL, RW_WRITER)); in vdev_obsolete_sm_object()
901 if (vd->vdev_top_zap == 0) { in vdev_obsolete_sm_object()
906 int error = zap_lookup(vd->vdev_spa->spa_meta_objset, vd->vdev_top_zap, in vdev_obsolete_sm_object()
922 vdev_obsolete_counts_are_precise(vdev_t *vd, boolean_t *are_precise) in vdev_obsolete_counts_are_precise() argument
924 ASSERT0(spa_config_held(vd->vdev_spa, SCL_ALL, RW_WRITER)); in vdev_obsolete_counts_are_precise()
926 if (vd->vdev_top_zap == 0) { in vdev_obsolete_counts_are_precise()
932 int error = zap_lookup(vd->vdev_spa->spa_meta_objset, vd->vdev_top_zap, in vdev_obsolete_counts_are_precise()
945 vdev_indirect_close(vdev_t *vd) in vdev_indirect_close() argument
947 (void) vd; in vdev_indirect_close()
951 vdev_indirect_open(vdev_t *vd, uint64_t *psize, uint64_t *max_psize, in vdev_indirect_open() argument
954 *psize = *max_psize = vd->vdev_asize + in vdev_indirect_open()
956 *logical_ashift = vd->vdev_ashift; in vdev_indirect_open()
957 *physical_ashift = vd->vdev_physical_ashift; in vdev_indirect_open()
970 rs_alloc(vdev_t *vd, uint64_t offset, uint64_t asize, uint64_t split_offset) in rs_alloc() argument
973 rs->rs_vd = vd; in rs_alloc()
994 vdev_indirect_mapping_duplicate_adjacent_entries(vdev_t *vd, uint64_t offset, in vdev_indirect_mapping_duplicate_adjacent_entries() argument
998 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in vdev_indirect_mapping_duplicate_adjacent_entries()
1001 ASSERT(RW_READ_HELD(&vd->vdev_indirect_rwlock)); in vdev_indirect_mapping_duplicate_adjacent_entries()
1059 vdev_indirect_remap(vdev_t *vd, uint64_t offset, uint64_t asize, in vdev_indirect_remap() argument
1063 spa_t *spa = vd->vdev_spa; in vdev_indirect_remap()
1068 for (remap_segment_t *rs = rs_alloc(vd, offset, asize, 0); in vdev_indirect_remap()
1197 vdev_indirect_gather_splits(uint64_t split_offset, vdev_t *vd, uint64_t offset, in vdev_indirect_gather_splits() argument
1203 ASSERT3P(vd, !=, NULL); in vdev_indirect_gather_splits()
1205 if (vd->vdev_ops == &vdev_indirect_ops) in vdev_indirect_gather_splits()
1209 if (vd->vdev_ops == &vdev_mirror_ops) in vdev_indirect_gather_splits()
1210 n = vd->vdev_children; in vdev_indirect_gather_splits()
1219 is->is_vdev = vd; in vdev_indirect_gather_splits()
1229 if (vd->vdev_ops == &vdev_mirror_ops) { in vdev_indirect_gather_splits()
1231 is->is_child[i].ic_vdev = vd->vdev_child[i]; in vdev_indirect_gather_splits()
1235 is->is_child[0].ic_vdev = vd; in vdev_indirect_gather_splits()
1394 vdev_t *vd = ic->ic_vdev; in vdev_indirect_checksum_error() local
1399 mutex_enter(&vd->vdev_stat_lock); in vdev_indirect_checksum_error()
1400 vd->vdev_stat.vs_checksum_errors++; in vdev_indirect_checksum_error()
1401 mutex_exit(&vd->vdev_stat_lock); in vdev_indirect_checksum_error()
1406 (void) zfs_ereport_post_checksum(zio->io_spa, vd, NULL, zio, in vdev_indirect_checksum_error()
1482 vdev_t *vd = ic->ic_vdev; in vdev_indirect_all_checksum_errors() local
1484 mutex_enter(&vd->vdev_stat_lock); in vdev_indirect_all_checksum_errors()
1485 vd->vdev_stat.vs_checksum_errors++; in vdev_indirect_all_checksum_errors()
1486 mutex_exit(&vd->vdev_stat_lock); in vdev_indirect_all_checksum_errors()
1487 (void) zfs_ereport_post_checksum(zio->io_spa, vd, in vdev_indirect_all_checksum_errors()