Lines Matching refs:vd

324 vdev_indirect_mark_obsolete(vdev_t *vd, uint64_t offset, uint64_t size)  in vdev_indirect_mark_obsolete()  argument
326 spa_t *spa = vd->vdev_spa; in vdev_indirect_mark_obsolete()
328 ASSERT3U(vd->vdev_indirect_config.vic_mapping_object, !=, 0); in vdev_indirect_mark_obsolete()
329 ASSERT(vd->vdev_removing || vd->vdev_ops == &vdev_indirect_ops); in vdev_indirect_mark_obsolete()
332 vd->vdev_indirect_mapping, offset) != NULL); in vdev_indirect_mark_obsolete()
335 mutex_enter(&vd->vdev_obsolete_lock); in vdev_indirect_mark_obsolete()
336 range_tree_add(vd->vdev_obsolete_segments, offset, size); in vdev_indirect_mark_obsolete()
337 mutex_exit(&vd->vdev_obsolete_lock); in vdev_indirect_mark_obsolete()
338 vdev_dirty(vd, 0, NULL, spa_syncing_txg(spa)); in vdev_indirect_mark_obsolete()
351 vdev_t *vd = vdev_lookup_top(spa, vdev_id); in spa_vdev_indirect_mark_obsolete() local
355 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_vdev_indirect_mark_obsolete()
356 vdev_indirect_mark_obsolete(vd, offset, size); in spa_vdev_indirect_mark_obsolete()
392 vdev_indirect_should_condense(vdev_t *vd) in vdev_indirect_should_condense() argument
394 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in vdev_indirect_should_condense()
395 spa_t *spa = vd->vdev_spa; in vdev_indirect_should_condense()
416 if (vd->vdev_ops != &vdev_indirect_ops) in vdev_indirect_should_condense()
424 ASSERT0(vdev_obsolete_sm_object(vd, &obsolete_sm_obj)); in vdev_indirect_should_condense()
425 if (vd->vdev_obsolete_sm == NULL) { in vdev_indirect_should_condense()
430 ASSERT(vd->vdev_obsolete_sm != NULL); in vdev_indirect_should_condense()
432 ASSERT3U(obsolete_sm_obj, ==, space_map_object(vd->vdev_obsolete_sm)); in vdev_indirect_should_condense()
435 uint64_t bytes_obsolete = space_map_allocated(vd->vdev_obsolete_sm); in vdev_indirect_should_condense()
437 uint64_t obsolete_sm_size = space_map_length(vd->vdev_obsolete_sm); in vdev_indirect_should_condense()
452 (u_longlong_t)vd->vdev_id, in vdev_indirect_should_condense()
465 (u_longlong_t)vd->vdev_id, in vdev_indirect_should_condense()
486 vdev_t *vd = vdev_lookup_top(spa, scip->scip_vdev); in spa_condense_indirect_complete_sync() local
487 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in spa_condense_indirect_complete_sync()
489 vdev_indirect_mapping_t *old_mapping = vd->vdev_indirect_mapping; in spa_condense_indirect_complete_sync()
495 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_complete_sync()
501 ASSERT3U(vd->vdev_id, ==, scip->scip_vdev); in spa_condense_indirect_complete_sync()
508 rw_enter(&vd->vdev_indirect_rwlock, RW_WRITER); in spa_condense_indirect_complete_sync()
509 vdev_indirect_mapping_close(vd->vdev_indirect_mapping); in spa_condense_indirect_complete_sync()
510 vd->vdev_indirect_mapping = sci->sci_new_mapping; in spa_condense_indirect_complete_sync()
511 rw_exit(&vd->vdev_indirect_rwlock); in spa_condense_indirect_complete_sync()
532 (u_longlong_t)vd->vdev_id, (u_longlong_t)dmu_tx_get_txg(tx), in spa_condense_indirect_complete_sync()
593 spa_condense_indirect_generate_new_mapping(vdev_t *vd, in spa_condense_indirect_generate_new_mapping() argument
596 spa_t *spa = vd->vdev_spa; in spa_condense_indirect_generate_new_mapping()
598 vdev_indirect_mapping_t *old_mapping = vd->vdev_indirect_mapping; in spa_condense_indirect_generate_new_mapping()
602 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_generate_new_mapping()
603 ASSERT3U(vd->vdev_id, ==, spa->spa_condensing_indirect_phys.scip_vdev); in spa_condense_indirect_generate_new_mapping()
606 (u_longlong_t)vd->vdev_id, in spa_condense_indirect_generate_new_mapping()
613 "at index %llu", (u_longlong_t)vd->vdev_id, in spa_condense_indirect_generate_new_mapping()
653 vdev_t *vd; in spa_condense_indirect_thread() local
657 vd = vdev_lookup_top(spa, spa->spa_condensing_indirect_phys.scip_vdev); in spa_condense_indirect_thread()
658 ASSERT3P(vd, !=, NULL); in spa_condense_indirect_thread()
666 vdev_indirect_mapping_t *old_mapping = vd->vdev_indirect_mapping; in spa_condense_indirect_thread()
669 ASSERT3U(vd->vdev_id, ==, scip->scip_vdev); in spa_condense_indirect_thread()
672 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_thread()
686 scip->scip_prev_obsolete_sm_object, 0, vd->vdev_asize, 0)); in spa_condense_indirect_thread()
733 spa_condense_indirect_generate_new_mapping(vd, counts, in spa_condense_indirect_thread()
756 spa_condense_indirect_start_sync(vdev_t *vd, dmu_tx_t *tx) in spa_condense_indirect_start_sync() argument
758 spa_t *spa = vd->vdev_spa; in spa_condense_indirect_start_sync()
766 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_condense_indirect_start_sync()
768 ASSERT(vdev_indirect_mapping_num_entries(vd->vdev_indirect_mapping)); in spa_condense_indirect_start_sync()
771 VERIFY0(vdev_obsolete_sm_object(vd, &obsolete_sm_obj)); in spa_condense_indirect_start_sync()
774 scip->scip_vdev = vd->vdev_id; in spa_condense_indirect_start_sync()
784 space_map_close(vd->vdev_obsolete_sm); in spa_condense_indirect_start_sync()
785 vd->vdev_obsolete_sm = NULL; in spa_condense_indirect_start_sync()
786 VERIFY0(zap_remove(spa->spa_meta_objset, vd->vdev_top_zap, in spa_condense_indirect_start_sync()
799 (u_longlong_t)vd->vdev_id, (u_longlong_t)dmu_tx_get_txg(tx), in spa_condense_indirect_start_sync()
813 vdev_indirect_sync_obsolete(vdev_t *vd, dmu_tx_t *tx) in vdev_indirect_sync_obsolete() argument
815 spa_t *spa = vd->vdev_spa; in vdev_indirect_sync_obsolete()
816 vdev_indirect_config_t *vic __maybe_unused = &vd->vdev_indirect_config; in vdev_indirect_sync_obsolete()
819 ASSERT(range_tree_space(vd->vdev_obsolete_segments) > 0); in vdev_indirect_sync_obsolete()
820 ASSERT(vd->vdev_removing || vd->vdev_ops == &vdev_indirect_ops); in vdev_indirect_sync_obsolete()
824 VERIFY0(vdev_obsolete_sm_object(vd, &obsolete_sm_object)); in vdev_indirect_sync_obsolete()
829 ASSERT(vd->vdev_top_zap != 0); in vdev_indirect_sync_obsolete()
830 VERIFY0(zap_add(vd->vdev_spa->spa_meta_objset, vd->vdev_top_zap, in vdev_indirect_sync_obsolete()
833 ASSERT0(vdev_obsolete_sm_object(vd, &obsolete_sm_object)); in vdev_indirect_sync_obsolete()
837 VERIFY0(space_map_open(&vd->vdev_obsolete_sm, in vdev_indirect_sync_obsolete()
839 0, vd->vdev_asize, 0)); in vdev_indirect_sync_obsolete()
842 ASSERT(vd->vdev_obsolete_sm != NULL); in vdev_indirect_sync_obsolete()
844 space_map_object(vd->vdev_obsolete_sm)); in vdev_indirect_sync_obsolete()
846 space_map_write(vd->vdev_obsolete_sm, in vdev_indirect_sync_obsolete()
847 vd->vdev_obsolete_segments, SM_ALLOC, SM_NO_VDEVID, tx); in vdev_indirect_sync_obsolete()
848 range_tree_vacate(vd->vdev_obsolete_segments, NULL, NULL); in vdev_indirect_sync_obsolete()
896 vdev_obsolete_sm_object(vdev_t *vd, uint64_t *sm_obj) in vdev_obsolete_sm_object() argument
898 ASSERT0(spa_config_held(vd->vdev_spa, SCL_ALL, RW_WRITER)); in vdev_obsolete_sm_object()
900 if (vd->vdev_top_zap == 0) { in vdev_obsolete_sm_object()
905 int error = zap_lookup(vd->vdev_spa->spa_meta_objset, vd->vdev_top_zap, in vdev_obsolete_sm_object()
921 vdev_obsolete_counts_are_precise(vdev_t *vd, boolean_t *are_precise) in vdev_obsolete_counts_are_precise() argument
923 ASSERT0(spa_config_held(vd->vdev_spa, SCL_ALL, RW_WRITER)); in vdev_obsolete_counts_are_precise()
925 if (vd->vdev_top_zap == 0) { in vdev_obsolete_counts_are_precise()
931 int error = zap_lookup(vd->vdev_spa->spa_meta_objset, vd->vdev_top_zap, in vdev_obsolete_counts_are_precise()
944 vdev_indirect_close(vdev_t *vd) in vdev_indirect_close() argument
946 (void) vd; in vdev_indirect_close()
950 vdev_indirect_open(vdev_t *vd, uint64_t *psize, uint64_t *max_psize, in vdev_indirect_open() argument
953 *psize = *max_psize = vd->vdev_asize + in vdev_indirect_open()
955 *logical_ashift = vd->vdev_ashift; in vdev_indirect_open()
956 *physical_ashift = vd->vdev_physical_ashift; in vdev_indirect_open()
969 rs_alloc(vdev_t *vd, uint64_t offset, uint64_t asize, uint64_t split_offset) in rs_alloc() argument
972 rs->rs_vd = vd; in rs_alloc()
993 vdev_indirect_mapping_duplicate_adjacent_entries(vdev_t *vd, uint64_t offset, in vdev_indirect_mapping_duplicate_adjacent_entries() argument
997 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in vdev_indirect_mapping_duplicate_adjacent_entries()
1000 ASSERT(RW_READ_HELD(&vd->vdev_indirect_rwlock)); in vdev_indirect_mapping_duplicate_adjacent_entries()
1058 vdev_indirect_remap(vdev_t *vd, uint64_t offset, uint64_t asize, in vdev_indirect_remap() argument
1062 spa_t *spa = vd->vdev_spa; in vdev_indirect_remap()
1067 for (remap_segment_t *rs = rs_alloc(vd, offset, asize, 0); in vdev_indirect_remap()
1196 vdev_indirect_gather_splits(uint64_t split_offset, vdev_t *vd, uint64_t offset, in vdev_indirect_gather_splits() argument
1202 ASSERT3P(vd, !=, NULL); in vdev_indirect_gather_splits()
1204 if (vd->vdev_ops == &vdev_indirect_ops) in vdev_indirect_gather_splits()
1208 if (vd->vdev_ops == &vdev_mirror_ops) in vdev_indirect_gather_splits()
1209 n = vd->vdev_children; in vdev_indirect_gather_splits()
1218 is->is_vdev = vd; in vdev_indirect_gather_splits()
1228 if (vd->vdev_ops == &vdev_mirror_ops) { in vdev_indirect_gather_splits()
1230 is->is_child[i].ic_vdev = vd->vdev_child[i]; in vdev_indirect_gather_splits()
1234 is->is_child[0].ic_vdev = vd; in vdev_indirect_gather_splits()
1391 vdev_t *vd = ic->ic_vdev; in vdev_indirect_checksum_error() local
1396 mutex_enter(&vd->vdev_stat_lock); in vdev_indirect_checksum_error()
1397 vd->vdev_stat.vs_checksum_errors++; in vdev_indirect_checksum_error()
1398 mutex_exit(&vd->vdev_stat_lock); in vdev_indirect_checksum_error()
1403 (void) zfs_ereport_post_checksum(zio->io_spa, vd, NULL, zio, in vdev_indirect_checksum_error()
1479 vdev_t *vd = ic->ic_vdev; in vdev_indirect_all_checksum_errors() local
1481 (void) zfs_ereport_post_checksum(zio->io_spa, vd, in vdev_indirect_all_checksum_errors()
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()