Lines Matching defs:spa

407 metaslab_class_create(spa_t *spa, const metaslab_ops_t *ops)
412 mc_allocator[spa->spa_alloc_count]), KM_SLEEP);
414 mc->mc_spa = spa;
419 for (int i = 0; i < spa->spa_alloc_count; i++) {
431 spa_t *spa = mc->mc_spa;
438 for (int i = 0; i < spa->spa_alloc_count; i++) {
446 mc_allocator[spa->spa_alloc_count]));
512 spa_t *spa = mc->mc_spa;
513 vdev_t *rvd = spa->spa_root_vdev;
887 spa_t *spa = mc->mc_spa;
890 ASSERT3U(spa_config_held(spa, SCL_ALLOC, RW_WRITER), !=, 0);
913 for (int i = 0; i < spa->spa_alloc_count; i++) {
929 spa_t *spa = mc->mc_spa;
931 int locks = spa_config_held(spa, SCL_ALL, RW_WRITER);
933 ASSERT3U(spa_config_held(spa, SCL_ALLOC | SCL_ZIO, RW_WRITER), ==,
937 for (int i = 0; i < spa->spa_alloc_count; i++)
959 spa_config_exit(spa, locks & ~(SCL_ZIO - 1), spa);
960 taskq_wait_outstanding(spa->spa_metaslab_taskq, 0);
961 spa_config_enter(spa, locks & ~(SCL_ZIO - 1), spa, RW_WRITER);
990 for (int i = 0; i < spa->spa_alloc_count; i++) {
1225 spa_t *spa = mg->mg_vd->vdev_spa;
1234 if ((mc != spa_normal_class(spa) &&
1235 mc != spa_special_class(spa) &&
1236 mc != spa_dedup_class(spa)) ||
1655 metaslab_ops_t *metaslab_allocator(spa_t *spa);
1677 spa_set_allocator(spa_t *spa, const char *allocator)
1681 spa->spa_active_allocator = a;
1682 zfs_dbgmsg("spa allocator: %s", metaslab_allocators[a].msop_name);
1686 spa_get_allocator(spa_t *spa)
1688 return (spa->spa_active_allocator);
1713 metaslab_allocator(spa_t *spa)
1715 int allocator = spa_get_allocator(spa);
1947 spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
1964 if (txg != spa_syncing_txg(spa) || msp->ms_sm == NULL ||
2089 spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
2105 uint64_t hist_index = spa_syncing_txg(spa) % TXG_DEFER_SIZE;
2131 * cannot do these assertions because we hold spa config locks and
2421 spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
2422 if (spa_syncing_log_sm(spa) != NULL) {
2423 ASSERT(spa_feature_is_enabled(spa,
2490 zfs_dbgmsg("metaslab_load: txg %llu, spa %s, vdev_id %llu, "
2497 (u_longlong_t)spa_syncing_txg(spa), spa_name(spa),
2512 metaslab_verify_space(msp, spa_syncing_txg(spa));
2602 spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
2603 zfs_dbgmsg("metaslab_unload: txg %llu, spa %s, vdev_id %llu, "
2607 (u_longlong_t)spa_syncing_txg(spa), spa_name(spa),
2692 spa_t *spa = vd->vdev_spa;
2693 objset_t *mos = spa->spa_meta_objset;
2726 if (object != 0 && !(spa->spa_mode == SPA_MODE_READ &&
2727 !spa->spa_read_spacemaps)) {
2799 spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
2802 ASSERT3P(avl_find(&spa->spa_metaslabs_by_flushed, msp, NULL),
2806 ASSERT(spa_feature_is_active(spa, SPA_FEATURE_LOG_SPACEMAP));
2808 mutex_enter(&spa->spa_flushed_ms_lock);
2809 avl_remove(&spa->spa_metaslabs_by_flushed, msp);
2810 mutex_exit(&spa->spa_flushed_ms_lock);
2812 spa_log_sm_decrement_mscount(spa, metaslab_unflushed_txg(msp));
2813 spa_log_summary_decrement_mscount(spa, metaslab_unflushed_txg(msp),
2830 spa_t *spa = vd->vdev_spa;
2858 ASSERT3U(spa->spa_unflushed_stats.sus_memused, >=,
2860 spa->spa_unflushed_stats.sus_memused -=
2941 spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
2944 boolean_t feature_enabled = spa_feature_is_enabled(spa,
2966 uint64_t txg = spa_syncing_txg(spa);
2978 spa_writeable(spa) && txg < spa_final_dirty_txg(spa)) {
3290 spa_t *spa = vd->vdev_spa;
3318 spa_feature_is_enabled(spa, SPA_FEATURE_SPACEMAP_HISTOGRAM) &&
3525 spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
3527 if (WEIGHT_IS_SPACEBASED(msp->ms_weight) || spa_sync_pass(spa) > 1)
3548 spa_t *spa = mc->mc_spa;
3555 metaslab_set_selected_txg(msp, spa_syncing_txg(spa));
3563 spa_t *spa = mg->mg_vd->vdev_spa;
3568 if (spa_shutting_down(spa) || !metaslab_preload_enabled)
3589 VERIFY(taskq_dispatch(spa->spa_metaslab_taskq, metaslab_preload,
3660 spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
3708 ASSERT3U(spa_sync_pass(spa), ==, 1);
3712 "spa %s, smp size %llu, segments %llu, forcing condense=%s",
3715 spa->spa_name, (u_longlong_t)space_map_length(msp->ms_sm),
3738 ASSERT3U(spa->spa_unflushed_stats.sus_memused, >=,
3740 spa->spa_unflushed_stats.sus_memused -=
3758 spa_feature_is_enabled(spa, SPA_FEATURE_LOG_SPACEMAP) ?
3767 dmu_write(spa->spa_meta_objset,
3803 spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
3804 ASSERT(spa_syncing_log_sm(spa) != NULL);
3809 mutex_enter(&spa->spa_flushed_ms_lock);
3810 metaslab_set_unflushed_txg(msp, spa_syncing_txg(spa), tx);
3812 avl_add(&spa->spa_metaslabs_by_flushed, msp);
3813 mutex_exit(&spa->spa_flushed_ms_lock);
3815 spa_log_sm_increment_current_mscount(spa);
3816 spa_log_summary_add_flushed_metaslab(spa, B_TRUE);
3822 spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
3823 ASSERT(spa_syncing_log_sm(spa) != NULL);
3826 ASSERT3P(avl_find(&spa->spa_metaslabs_by_flushed, msp, NULL), ==, msp);
3830 VERIFY3U(tx->tx_txg, <=, spa_final_dirty_txg(spa));
3835 mutex_enter(&spa->spa_flushed_ms_lock);
3836 avl_remove(&spa->spa_metaslabs_by_flushed, msp);
3837 metaslab_set_unflushed_txg(msp, spa_syncing_txg(spa), tx);
3839 avl_add(&spa->spa_metaslabs_by_flushed, msp);
3840 mutex_exit(&spa->spa_flushed_ms_lock);
3843 spa_log_sm_decrement_mscount(spa, ms_prev_flushed_txg);
3844 spa_log_sm_increment_current_mscount(spa);
3847 spa_log_summary_decrement_mscount(spa, ms_prev_flushed_txg,
3849 spa_log_summary_add_flushed_metaslab(spa, dirty);
3852 spa_cleanup_old_sm_logs(spa, tx);
3865 spa_t *spa = mg->mg_vd->vdev_spa;
3869 ASSERT3U(spa_sync_pass(spa), ==, 1);
3882 if (!spa_feature_is_active(spa, SPA_FEATURE_LOG_SPACEMAP) ||
3892 spa_t *spa = msp->ms_group->mg_vd->vdev_spa;
3895 ASSERT3U(spa_sync_pass(spa), ==, 1);
3896 ASSERT(spa_feature_is_active(spa, SPA_FEATURE_LOG_SPACEMAP));
3900 ASSERT(avl_find(&spa->spa_metaslabs_by_flushed, msp, NULL) != NULL);
3984 zfs_dbgmsg("flushing: txg %llu, spa %s, vdev_id %llu, "
3987 spa_name(spa),
3995 ASSERT3U(spa->spa_unflushed_stats.sus_memused, >=,
3997 spa->spa_unflushed_stats.sus_memused -=
4023 spa_t *spa = vd->vdev_spa;
4024 objset_t *mos = spa_meta_objset(spa);
4057 txg <= spa_final_dirty_txg(spa)))
4061 VERIFY3U(txg, <=, spa_final_dirty_txg(spa));
4076 tx = dmu_tx_create_assigned(spa_get_dsl(spa), txg);
4081 spa_generate_syncing_log_sm(spa, tx);
4085 spa_feature_is_enabled(spa, SPA_FEATURE_LOG_SPACEMAP) ?
4104 ASSERT(spa_has_checkpoint(spa));
4136 if (spa->spa_sync_pass == 1 && msp->ms_loaded &&
4146 space_map_t *log_sm = spa_syncing_log_sm(spa);
4148 ASSERT(spa_feature_is_enabled(spa, SPA_FEATURE_LOG_SPACEMAP));
4160 ASSERT3U(spa->spa_unflushed_stats.sus_memused, >=,
4162 spa->spa_unflushed_stats.sus_memused -=
4168 spa->spa_unflushed_stats.sus_memused +=
4171 ASSERT(!spa_feature_is_enabled(spa, SPA_FEATURE_LOG_SPACEMAP));
4186 ASSERT(spa_has_checkpoint(spa));
4200 spa->spa_checkpoint_info.sci_dspace +=
4266 if (spa_sync_pass(spa) == 1) {
4323 spa_t *spa = vd->vdev_spa;
4346 uint64_t free_space = metaslab_class_get_space(spa_normal_class(spa)) -
4347 metaslab_class_get_alloc(spa_normal_class(spa));
4348 if (free_space <= spa_get_slop_space(spa) || vd->vdev_removing ||
4366 if (spa_syncing_log_sm(spa) == NULL) {
4376 ASSERT(spa_feature_is_active(spa, SPA_FEATURE_LOG_SPACEMAP));
4387 if (spa_get_autotrim(spa) == SPA_AUTOTRIM_ON) {
4452 spa_t *spa = mg->mg_class->mc_spa;
4454 spa_config_enter(spa, SCL_ALLOC, FTAG, RW_READER);
4468 spa_config_exit(spa, SCL_ALLOC, FTAG);
4579 metaslab_group_alloc_increment(spa_t *spa, uint64_t vdev, const void *tag,
4586 metaslab_group_t *mg = vdev_lookup_top(spa, vdev)->vdev_mg;
4613 metaslab_group_alloc_decrement(spa_t *spa, uint64_t vdev, const void *tag,
4620 metaslab_group_t *mg = vdev_lookup_top(spa, vdev)->vdev_mg;
4631 metaslab_group_alloc_verify(spa_t *spa, const blkptr_t *bp, const void *tag,
4640 metaslab_group_t *mg = vdev_lookup_top(spa, vdev)->vdev_mg;
5144 metaslab_alloc_dva(spa_t *spa, metaslab_class_t *mc, uint64_t psize,
5193 vd = vdev_lookup_top(spa, DVA_GET_VDEV(&hintdva[d]));
5210 vd = vdev_lookup_top(spa, DVA_GET_VDEV(&dva[d - 1]));
5236 spa_config_enter(spa, SCL_ZIO, FTAG, RW_READER);
5238 spa_config_exit(spa, SCL_ZIO, FTAG);
5359 psize <= 1 << spa->spa_min_ashift)) {
5376 spa_t *spa = vd->vdev_spa;
5379 ASSERT3U(spa_config_held(spa, SCL_ALL, RW_READER), !=, 0);
5395 vdev_dirty(vd, VDD_METASLAB, msp, spa_syncing_txg(spa));
5399 ASSERT(spa_has_checkpoint(spa));
5426 spa_t *spa = vd->vdev_spa;
5428 ASSERT3U(spa_config_held(spa, SCL_ALL, RW_READER), !=, 0);
5430 if (spa_syncing_txg(spa) > spa_freeze_txg(spa))
5433 if (spa->spa_vdev_removal != NULL &&
5434 spa->spa_vdev_removal->svr_vdev_id == vd->vdev_id &&
5522 spa_remap_blkptr(spa_t *spa, blkptr_t *bp, spa_remap_cb_t callback, void *arg)
5529 if (!spa_feature_is_enabled(spa, SPA_FEATURE_OBSOLETE_COUNTS))
5562 vdev_t *vd = vdev_lookup_top(spa, DVA_GET_VDEV(dva));
5593 metaslab_unalloc_dva(spa_t *spa, const dva_t *dva, uint64_t txg)
5602 ASSERT3U(spa_config_held(spa, SCL_ALL, RW_READER), !=, 0);
5604 if (txg > spa_freeze_txg(spa))
5607 if ((vd = vdev_lookup_top(spa, vdev)) == NULL || !DVA_IS_VALID(dva) ||
5645 metaslab_free_dva(spa_t *spa, const dva_t *dva, boolean_t checkpoint)
5650 vdev_t *vd = vdev_lookup_top(spa, vdev);
5653 ASSERT3U(spa_config_held(spa, SCL_ALL, RW_READER), !=, 0);
5712 spa_t *spa = vd->vdev_spa;
5723 if ((txg != 0 && spa_writeable(spa)) || !msp->ms_loaded) {
5749 if (spa_writeable(spa)) { /* don't dirty if we're zdb(8) */
5824 metaslab_claim_dva(spa_t *spa, const dva_t *dva, uint64_t txg)
5831 if ((vd = vdev_lookup_top(spa, vdev)) == NULL) {
5844 metaslab_alloc(spa_t *spa, metaslab_class_t *mc, uint64_t psize, blkptr_t *bp,
5855 spa_config_enter(spa, SCL_ALLOC, FTAG, RW_READER);
5859 spa_config_exit(spa, SCL_ALLOC, FTAG);
5863 ASSERT(ndvas > 0 && ndvas <= spa_max_replication(spa));
5869 error = metaslab_alloc_dva(spa, mc, psize, dva, d, hintdva,
5873 metaslab_unalloc_dva(spa, &dva[d], txg);
5874 metaslab_group_alloc_decrement(spa,
5879 spa_config_exit(spa, SCL_ALLOC, FTAG);
5886 metaslab_group_alloc_increment(spa,
5893 spa_config_exit(spa, SCL_ALLOC, FTAG);
5901 metaslab_free(spa_t *spa, const blkptr_t *bp, uint64_t txg, boolean_t now)
5907 ASSERT(!now || BP_GET_LOGICAL_BIRTH(bp) >= spa_syncing_txg(spa));
5925 if (BP_GET_LOGICAL_BIRTH(bp) <= spa->spa_checkpoint_txg &&
5926 spa_syncing_txg(spa) > spa->spa_checkpoint_txg) {
5932 ASSERT3U(spa_syncing_txg(spa), ==, txg);
5936 spa_config_enter(spa, SCL_FREE, FTAG, RW_READER);
5940 metaslab_unalloc_dva(spa, &dva[d], txg);
5942 ASSERT3U(txg, ==, spa_syncing_txg(spa));
5943 metaslab_free_dva(spa, &dva[d], checkpoint);
5947 spa_config_exit(spa, SCL_FREE, FTAG);
5951 metaslab_claim(spa_t *spa, const blkptr_t *bp, uint64_t txg)
5964 if ((error = metaslab_claim(spa, bp, 0)) != 0)
5968 spa_config_enter(spa, SCL_ALLOC, FTAG, RW_READER);
5971 error = metaslab_claim_dva(spa, &dva[d], txg);
5976 spa_config_exit(spa, SCL_ALLOC, FTAG);
5999 spa_t *spa __maybe_unused = vd->vdev_spa;
6012 ASSERT3U(spa_config_held(spa, SCL_ALL, RW_READER), !=, 0);
6043 metaslab_check_free(spa_t *spa, const blkptr_t *bp)
6048 spa_config_enter(spa, SCL_VDEV, FTAG, RW_READER);
6051 vdev_t *vd = vdev_lookup_top(spa, vdev);
6062 spa_config_exit(spa, SCL_VDEV, FTAG);
6128 spa_t *spa = mg->mg_vd->vdev_spa;
6136 txg_wait_synced(spa_get_dsl(spa), 0);
6160 spa_t *spa = vd->vdev_spa;
6161 objset_t *mos = spa_meta_objset(spa);
6163 ASSERT(spa_feature_is_active(spa, SPA_FEATURE_LOG_SPACEMAP));
6185 dmu_write(spa_meta_objset(spa), object, entry_offset, entry_size,