Lines Matching refs:vd

187 spa_vdev_removal_create(vdev_t *vd)  in spa_vdev_removal_create()  argument
193 svr->svr_vdev_id = vd->vdev_id; in spa_vdev_removal_create()
238 vdev_t *vd = vdev_lookup_top(spa, vdev_id); in vdev_remove_initiate_sync() local
239 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in vdev_remove_initiate_sync()
244 ASSERT3P(vd->vdev_ops, !=, &vdev_raidz_ops); in vdev_remove_initiate_sync()
245 svr = spa_vdev_removal_create(vd); in vdev_remove_initiate_sync()
247 ASSERT(vd->vdev_removing); in vdev_remove_initiate_sync()
248 ASSERT3P(vd->vdev_indirect_mapping, ==, NULL); in vdev_remove_initiate_sync()
259 VERIFY0(zap_add(spa->spa_meta_objset, vd->vdev_top_zap, in vdev_remove_initiate_sync()
262 ASSERT3U(vdev_obsolete_counts_are_precise(vd), !=, 0); in vdev_remove_initiate_sync()
266 vd->vdev_indirect_mapping = in vdev_remove_initiate_sync()
269 vd->vdev_indirect_births = in vdev_remove_initiate_sync()
271 spa->spa_removing_phys.sr_removing_vdev = vd->vdev_id; in vdev_remove_initiate_sync()
283 for (uint64_t i = 0; i < vd->vdev_ms_count; i++) { in vdev_remove_initiate_sync()
284 metaslab_t *ms = vd->vdev_ms[i]; in vdev_remove_initiate_sync()
307 ASSERT3P(txg_list_head(&vd->vdev_ms_list, TXG_CLEAN(txg)), ==, NULL); in vdev_remove_initiate_sync()
334 vdev_config_dirty(vd); in vdev_remove_initiate_sync()
337 "im_obj=%llu", vd->vdev_id, vd, dmu_tx_get_txg(tx), in vdev_remove_initiate_sync()
341 "%s vdev %llu %s", spa_name(spa), vd->vdev_id, in vdev_remove_initiate_sync()
342 (vd->vdev_path != NULL) ? vd->vdev_path : "-"); in vdev_remove_initiate_sync()
394 vdev_t *vd = vdev_lookup_top(spa, in spa_remove_init() local
397 if (vd == NULL) { in spa_remove_init()
402 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in spa_remove_init()
404 ASSERT(vdev_is_concrete(vd)); in spa_remove_init()
405 spa_vdev_removal_t *svr = spa_vdev_removal_create(vd); in spa_remove_init()
406 ASSERT3U(svr->svr_vdev_id, ==, vd->vdev_id); in spa_remove_init()
407 ASSERT(vd->vdev_removing); in spa_remove_init()
409 vd->vdev_indirect_mapping = vdev_indirect_mapping_open( in spa_remove_init()
411 vd->vdev_indirect_births = vdev_indirect_births_open( in spa_remove_init()
422 vdev_t *vd = vdev_lookup_top(spa, indirect_vdev_id); in spa_remove_init() local
423 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in spa_remove_init()
425 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_remove_init()
426 vd->vdev_indirect_mapping = vdev_indirect_mapping_open( in spa_remove_init()
428 vd->vdev_indirect_births = vdev_indirect_births_open( in spa_remove_init()
477 free_from_removing_vdev(vdev_t *vd, uint64_t offset, uint64_t size) in free_from_removing_vdev() argument
479 spa_t *spa = vd->vdev_spa; in free_from_removing_vdev()
481 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in free_from_removing_vdev()
485 ASSERT(vd->vdev_indirect_config.vic_mapping_object != 0); in free_from_removing_vdev()
486 ASSERT3U(vd->vdev_indirect_config.vic_mapping_object, ==, in free_from_removing_vdev()
488 ASSERT3U(vd->vdev_id, ==, svr->svr_vdev_id); in free_from_removing_vdev()
509 metaslab_free_concrete(vd, offset, size, B_FALSE); in free_from_removing_vdev()
641 vdev_indirect_mark_obsolete(vd, synced_offset, synced_size); in free_from_removing_vdev()
650 vdev_indirect_ops.vdev_op_remap(vd, synced_offset, synced_size, in free_from_removing_vdev()
671 vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id); in spa_finish_removal() local
672 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in spa_finish_removal()
681 srp->sr_prev_indirect_vdev = vd->vdev_id; in spa_finish_removal()
697 vdev_t *vd = arg; in free_mapped_segment_cb() local
698 vdev_indirect_mark_obsolete(vd, offset, size); in free_mapped_segment_cb()
700 vdev_indirect_ops.vdev_op_remap(vd, offset, size, in free_mapped_segment_cb()
714 vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id); in vdev_mapping_sync() local
715 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in vdev_mapping_sync()
717 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in vdev_mapping_sync()
724 vdev_indirect_births_add_entry(vd->vdev_indirect_births, in vdev_mapping_sync()
733 free_mapped_segment_cb, vd); in vdev_mapping_sync()
904 spa_vdev_copy_segment(vdev_t *vd, range_tree_t *segs, in spa_vdev_copy_segment() argument
908 metaslab_group_t *mg = vd->vdev_mg; in spa_vdev_copy_segment()
909 spa_t *spa = vd->vdev_spa; in spa_vdev_copy_segment()
1017 spa_vdev_copy_one_child(vca, nzio, vd, start, in spa_vdev_copy_segment()
1021 spa_vdev_copy_one_child(vca, nzio, vd, start, in spa_vdev_copy_segment()
1027 ASSERT3U(start + size, <=, vd->vdev_ms_count << vd->vdev_ms_shift); in spa_vdev_copy_segment()
1028 vdev_dirty(vd, 0, NULL, txg); in spa_vdev_copy_segment()
1043 vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id); in vdev_remove_complete_sync() local
1045 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in vdev_remove_complete_sync()
1054 vdev_destroy_spacemaps(vd, tx); in vdev_remove_complete_sync()
1061 vdev_destroy_unlink_zap(vd, fnvpair_value_uint64(pair), tx); in vdev_remove_complete_sync()
1068 "%s vdev %llu", spa_name(spa), vd->vdev_id); in vdev_remove_complete_sync()
1072 vdev_remove_enlist_zaps(vdev_t *vd, nvlist_t *zlist) in vdev_remove_enlist_zaps() argument
1075 ASSERT3P(vd->vdev_ops, !=, &vdev_raidz_ops); in vdev_remove_enlist_zaps()
1077 if (vd->vdev_leaf_zap != 0) { in vdev_remove_enlist_zaps()
1080 VDEV_REMOVAL_ZAP_OBJS, vd->vdev_leaf_zap); in vdev_remove_enlist_zaps()
1081 fnvlist_add_uint64(zlist, zkey, vd->vdev_leaf_zap); in vdev_remove_enlist_zaps()
1084 for (uint64_t id = 0; id < vd->vdev_children; id++) { in vdev_remove_enlist_zaps()
1085 vdev_remove_enlist_zaps(vd->vdev_child[id], zlist); in vdev_remove_enlist_zaps()
1090 vdev_remove_replace_with_indirect(vdev_t *vd, uint64_t txg) in vdev_remove_replace_with_indirect() argument
1094 spa_t *spa = vd->vdev_spa; in vdev_remove_replace_with_indirect()
1103 vdev_remove_enlist_zaps(vd, svr->svr_zaplist); in vdev_remove_replace_with_indirect()
1105 ivd = vdev_add_parent(vd, &vdev_indirect_ops); in vdev_remove_replace_with_indirect()
1108 vd->vdev_leaf_zap = 0; in vdev_remove_replace_with_indirect()
1110 vdev_remove_child(ivd, vd); in vdev_remove_replace_with_indirect()
1113 ASSERT(!list_link_active(&vd->vdev_state_dirty_node)); in vdev_remove_replace_with_indirect()
1145 vdev_t *vd = vdev_lookup_top(spa, spa->spa_vdev_removal->svr_vdev_id); in vdev_remove_complete() local
1146 ASSERT3P(vd->vdev_initialize_thread, ==, NULL); in vdev_remove_complete()
1147 ASSERT3P(vd->vdev_trim_thread, ==, NULL); in vdev_remove_complete()
1148 ASSERT3P(vd->vdev_autotrim_thread, ==, NULL); in vdev_remove_complete()
1150 sysevent_t *ev = spa_event_create(spa, vd, NULL, in vdev_remove_complete()
1154 vd->vdev_id, txg); in vdev_remove_complete()
1159 if (vd->vdev_mg != NULL) { in vdev_remove_complete()
1160 vdev_metaslab_fini(vd); in vdev_remove_complete()
1161 metaslab_group_destroy(vd->vdev_mg); in vdev_remove_complete()
1162 vd->vdev_mg = NULL; in vdev_remove_complete()
1165 ASSERT0(vd->vdev_stat.vs_space); in vdev_remove_complete()
1166 ASSERT0(vd->vdev_stat.vs_dspace); in vdev_remove_complete()
1168 vdev_remove_replace_with_indirect(vd, txg); in vdev_remove_complete()
1184 ASSERT0(vd->vdev_top_zap); in vdev_remove_complete()
1189 ASSERT0(vd->vdev_leaf_zap); in vdev_remove_complete()
1192 (void) vdev_label_init(vd, 0, VDEV_LABEL_REMOVE); in vdev_remove_complete()
1197 (void) spa_vdev_exit(spa, vd, txg, 0); in vdev_remove_complete()
1210 spa_vdev_copy_impl(vdev_t *vd, spa_vdev_removal_t *svr, vdev_copy_arg_t *vca, in spa_vdev_copy_impl() argument
1291 int error = spa_vdev_copy_segment(vd, in spa_vdev_copy_impl()
1356 vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id); in spa_vdev_remove_thread() local
1357 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in spa_vdev_remove_thread()
1360 ASSERT3P(vd->vdev_ops, !=, &vdev_indirect_ops); in spa_vdev_remove_thread()
1361 ASSERT(vdev_is_concrete(vd)); in spa_vdev_remove_thread()
1362 ASSERT(vd->vdev_removing); in spa_vdev_remove_thread()
1363 ASSERT(vd->vdev_indirect_config.vic_mapping_object != 0); in spa_vdev_remove_thread()
1377 for (msi = start_offset >> vd->vdev_ms_shift; in spa_vdev_remove_thread()
1378 msi < vd->vdev_ms_count && !svr->svr_thread_exit; msi++) { in spa_vdev_remove_thread()
1379 metaslab_t *msp = vd->vdev_ms[msi]; in spa_vdev_remove_thread()
1380 ASSERT3U(msi, <=, vd->vdev_ms_count); in spa_vdev_remove_thread()
1477 vd = vdev_lookup_top(spa, svr->svr_vdev_id); in spa_vdev_remove_thread()
1483 spa_vdev_copy_impl(vd, svr, &vca, &max_alloc, tx); in spa_vdev_remove_thread()
1552 vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id); in spa_vdev_remove_cancel_sync() local
1553 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in spa_vdev_remove_cancel_sync()
1554 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in spa_vdev_remove_cancel_sync()
1560 if (vdev_obsolete_counts_are_precise(vd)) { in spa_vdev_remove_cancel_sync()
1562 VERIFY0(zap_remove(spa->spa_meta_objset, vd->vdev_top_zap, in spa_vdev_remove_cancel_sync()
1566 if (vdev_obsolete_sm_object(vd) != 0) { in spa_vdev_remove_cancel_sync()
1567 ASSERT(vd->vdev_obsolete_sm != NULL); in spa_vdev_remove_cancel_sync()
1568 ASSERT3U(vdev_obsolete_sm_object(vd), ==, in spa_vdev_remove_cancel_sync()
1569 space_map_object(vd->vdev_obsolete_sm)); in spa_vdev_remove_cancel_sync()
1571 space_map_free(vd->vdev_obsolete_sm, tx); in spa_vdev_remove_cancel_sync()
1572 VERIFY0(zap_remove(spa->spa_meta_objset, vd->vdev_top_zap, in spa_vdev_remove_cancel_sync()
1574 space_map_close(vd->vdev_obsolete_sm); in spa_vdev_remove_cancel_sync()
1575 vd->vdev_obsolete_sm = NULL; in spa_vdev_remove_cancel_sync()
1584 for (uint64_t msi = 0; msi < vd->vdev_ms_count; msi++) { in spa_vdev_remove_cancel_sync()
1585 metaslab_t *msp = vd->vdev_ms[msi]; in spa_vdev_remove_cancel_sync()
1632 free_mapped_segment_cb, vd); in spa_vdev_remove_cancel_sync()
1640 range_tree_vacate(vd->vdev_obsolete_segments, NULL, NULL); in spa_vdev_remove_cancel_sync()
1643 vdev_indirect_mapping_object(vd->vdev_indirect_mapping)); in spa_vdev_remove_cancel_sync()
1644 vdev_indirect_mapping_close(vd->vdev_indirect_mapping); in spa_vdev_remove_cancel_sync()
1645 vd->vdev_indirect_mapping = NULL; in spa_vdev_remove_cancel_sync()
1650 vdev_indirect_births_object(vd->vdev_indirect_births)); in spa_vdev_remove_cancel_sync()
1651 vdev_indirect_births_close(vd->vdev_indirect_births); in spa_vdev_remove_cancel_sync()
1652 vd->vdev_indirect_births = NULL; in spa_vdev_remove_cancel_sync()
1667 vd->vdev_removing = B_FALSE; in spa_vdev_remove_cancel_sync()
1668 vdev_config_dirty(vd); in spa_vdev_remove_cancel_sync()
1671 vd->vdev_id, dmu_tx_get_txg(tx)); in spa_vdev_remove_cancel_sync()
1674 vd->vdev_id, (vd->vdev_path != NULL) ? vd->vdev_path : "-"); in spa_vdev_remove_cancel_sync()
1693 vdev_t *vd = vdev_lookup_top(spa, vdid); in spa_vdev_remove_cancel() local
1694 metaslab_group_activate(vd->vdev_mg); in spa_vdev_remove_cancel()
1729 vdev_remove_make_hole_and_free(vdev_t *vd) in vdev_remove_make_hole_and_free() argument
1731 uint64_t id = vd->vdev_id; in vdev_remove_make_hole_and_free()
1732 spa_t *spa = vd->vdev_spa; in vdev_remove_make_hole_and_free()
1738 vdev_free(vd); in vdev_remove_make_hole_and_free()
1740 vd = vdev_alloc_common(spa, id, 0, &vdev_hole_ops); in vdev_remove_make_hole_and_free()
1741 vdev_add_child(rvd, vd); in vdev_remove_make_hole_and_free()
1754 spa_vdev_remove_log(vdev_t *vd, uint64_t *txg) in spa_vdev_remove_log() argument
1756 metaslab_group_t *mg = vd->vdev_mg; in spa_vdev_remove_log()
1757 spa_t *spa = vd->vdev_spa; in spa_vdev_remove_log()
1760 ASSERT(vd->vdev_islog); in spa_vdev_remove_log()
1761 ASSERT(vd == vd->vdev_top); in spa_vdev_remove_log()
1783 if (vd->vdev_stat.vs_alloc != 0) in spa_vdev_remove_log()
1792 ASSERT0(vd->vdev_stat.vs_alloc); in spa_vdev_remove_log()
1798 vd->vdev_removing = B_TRUE; in spa_vdev_remove_log()
1800 vdev_dirty_leaves(vd, VDD_DTL, *txg); in spa_vdev_remove_log()
1801 vdev_config_dirty(vd); in spa_vdev_remove_log()
1823 vdev_metaslab_fini(vd); in spa_vdev_remove_log()
1827 "%s vdev %llu (log) %s", spa_name(spa), vd->vdev_id, in spa_vdev_remove_log()
1828 (vd->vdev_path != NULL) ? vd->vdev_path : "-"); in spa_vdev_remove_log()
1834 vdev_initialize_stop_all(vd, VDEV_INITIALIZE_CANCELED); in spa_vdev_remove_log()
1835 vdev_trim_stop_all(vd, VDEV_TRIM_CANCELED); in spa_vdev_remove_log()
1836 vdev_autotrim_stop_wait(vd); in spa_vdev_remove_log()
1840 sysevent_t *ev = spa_event_create(spa, vd, NULL, in spa_vdev_remove_log()
1846 ASSERT0(vd->vdev_top_zap); in spa_vdev_remove_log()
1848 ASSERT0(vd->vdev_leaf_zap); in spa_vdev_remove_log()
1850 (void) vdev_label_init(vd, 0, VDEV_LABEL_REMOVE); in spa_vdev_remove_log()
1852 if (list_link_active(&vd->vdev_state_dirty_node)) in spa_vdev_remove_log()
1853 vdev_state_clean(vd); in spa_vdev_remove_log()
1854 if (list_link_active(&vd->vdev_config_dirty_node)) in spa_vdev_remove_log()
1855 vdev_config_clean(vd); in spa_vdev_remove_log()
1857 ASSERT0(vd->vdev_stat.vs_alloc); in spa_vdev_remove_log()
1862 vdev_remove_make_hole_and_free(vd); in spa_vdev_remove_log()
1871 spa_vdev_remove_top_check(vdev_t *vd) in spa_vdev_remove_top_check() argument
1873 spa_t *spa = vd->vdev_spa; in spa_vdev_remove_top_check()
1875 if (vd != vd->vdev_top) in spa_vdev_remove_top_check()
1885 metaslab_class_t *mc = vd->vdev_mg->mg_class; in spa_vdev_remove_top_check()
1905 if (available < vd->vdev_stat.vs_dspace + spa_get_slop_space(spa)) { in spa_vdev_remove_top_check()
1918 if (!vdev_dtl_empty(vd, DTL_MISSING) || in spa_vdev_remove_top_check()
1919 !vdev_dtl_empty(vd, DTL_OUTAGE)) in spa_vdev_remove_top_check()
1925 if (!vdev_readable(vd)) in spa_vdev_remove_top_check()
1976 spa_vdev_remove_top(vdev_t *vd, uint64_t *txg) in spa_vdev_remove_top() argument
1978 spa_t *spa = vd->vdev_spa; in spa_vdev_remove_top()
1986 error = spa_vdev_remove_top_check(vd); in spa_vdev_remove_top()
1998 metaslab_group_t *mg = vd->vdev_mg; in spa_vdev_remove_top()
2021 vdev_initialize_stop_all(vd, VDEV_INITIALIZE_ACTIVE); in spa_vdev_remove_top()
2022 vdev_trim_stop_all(vd, VDEV_TRIM_ACTIVE); in spa_vdev_remove_top()
2023 vdev_autotrim_stop_wait(vd); in spa_vdev_remove_top()
2032 error = spa_vdev_remove_top_check(vd); in spa_vdev_remove_top()
2042 vd->vdev_removing = B_TRUE; in spa_vdev_remove_top()
2044 vdev_dirty_leaves(vd, VDD_DTL, *txg); in spa_vdev_remove_top()
2045 vdev_config_dirty(vd); in spa_vdev_remove_top()
2049 (void *)(uintptr_t)vd->vdev_id, 0, ZFS_SPACE_CHECK_NONE, tx); in spa_vdev_remove_top()
2067 vdev_t *vd; in spa_vdev_remove() local
2091 vd = spa_lookup_by_guid(spa, guid, B_FALSE); in spa_vdev_remove()
2101 if (vd == NULL || unspare) { in spa_vdev_remove()
2107 if (vd == NULL) in spa_vdev_remove()
2108 vd = spa_lookup_by_guid(spa, guid, B_TRUE); in spa_vdev_remove()
2109 ev = spa_event_create(spa, vd, NULL, in spa_vdev_remove()
2128 vd = spa_lookup_by_guid(spa, guid, B_TRUE); in spa_vdev_remove()
2129 ev = spa_event_create(spa, vd, NULL, ESC_ZFS_VDEV_REMOVE_AUX); in spa_vdev_remove()
2134 } else if (vd != NULL && vd->vdev_islog) { in spa_vdev_remove()
2136 error = spa_vdev_remove_log(vd, &txg); in spa_vdev_remove()
2137 } else if (vd != NULL) { in spa_vdev_remove()
2139 error = spa_vdev_remove_top(vd, &txg); in spa_vdev_remove()
2186 vdev_t *vd = spa->spa_root_vdev->vdev_child[indirect_vdev_id]; in spa_removal_get_stats() local
2187 vdev_indirect_config_t *vic = &vd->vdev_indirect_config; in spa_removal_get_stats()
2188 vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping; in spa_removal_get_stats()
2190 ASSERT3P(vd->vdev_ops, ==, &vdev_indirect_ops); in spa_removal_get_stats()