Lines Matching defs:spa

30 #include <sys/spa.h>
368 spa_t *spa = ddt->ddt_spa;
388 VERIFY0(zap_add(os, spa->spa_ddt_stat_object, name,
397 spa_t *spa = ddt->ddt_spa;
412 VERIFY0(zap_remove(os, spa->spa_ddt_stat_object, name, tx));
883 ddt_select(spa_t *spa, const blkptr_t *bp)
886 return (spa->spa_ddt[BP_GET_CHECKSUM(bp)]);
988 ddt_special_over_quota(spa_t *spa, metaslab_class_t *mc)
992 if (spa_syncing_txg(spa) <= spa->spa_dedup_class_full_txg +
1023 ddt_over_quota(spa_t *spa)
1025 if (spa->spa_dedup_table_quota == 0)
1028 if (spa->spa_dedup_table_quota != UINT64_MAX)
1029 return (ddt_get_ddt_dsize(spa) > spa->spa_dedup_table_quota);
1034 if (ddt_special_over_quota(spa, spa_dedup_class(spa)))
1036 else if (spa_special_has_ddt(spa) &&
1037 ddt_special_over_quota(spa, spa_special_class(spa)))
1044 ddt_prefetch_all(spa_t *spa)
1052 ddt_t *ddt = spa->spa_ddt[c];
1111 spa_t *spa = ddt->ddt_spa;
1257 ddt_over_quota(spa)) {
1321 ddt_prefetch(spa_t *spa, const blkptr_t *bp)
1334 ddt = ddt_select(spa, bp);
1431 spa_t *spa = ddt->ddt_spa;
1435 ASSERT3U(spa_load_state(spa), !=, SPA_LOAD_CREATE);
1438 spa_feature_is_enabled(spa, SPA_FEATURE_FAST_DEDUP);
1440 spa_feature_is_active(spa, SPA_FEATURE_FAST_DEDUP);
1447 error = zap_lookup(spa->spa_meta_objset, DMU_POOL_DIRECTORY_OBJECT,
1449 &spa->spa_ddt_stat_object);
1464 error = zap_lookup(spa->spa_meta_objset,
1468 ASSERT3U(spa->spa_meta_objset, ==, ddt->ddt_os);
1483 zfs_dbgmsg("ddt_configure: spa=%s ddt_dir=%s "
1484 "unknown version %llu", spa_name(spa),
1490 zfs_dbgmsg("ddt_configure: spa=%s ddt_dir=%s "
1492 spa_name(spa), name,
1509 error = zap_lookup(spa->spa_meta_objset,
1564 ddt_table_alloc(spa_t *spa, enum zio_checksum c)
1577 ddt->ddt_spa = spa;
1578 ddt->ddt_os = spa->spa_meta_objset;
1606 ddt_create(spa_t *spa)
1608 spa->spa_dedup_checksum = ZIO_DEDUPCHECKSUM;
1612 spa->spa_ddt[c] = ddt_table_alloc(spa, c);
1617 ddt_load(spa_t *spa)
1621 ddt_create(spa);
1623 error = zap_lookup(spa->spa_meta_objset, DMU_POOL_DIRECTORY_OBJECT,
1625 &spa->spa_ddt_stat_object);
1633 ddt_t *ddt = spa->spa_ddt[c];
1665 spa->spa_dedup_dspace = ~0ULL;
1666 spa->spa_dedup_dsize = ~0ULL;
1672 ddt_unload(spa_t *spa)
1675 if (spa->spa_ddt[c]) {
1676 ddt_table_free(spa->spa_ddt[c]);
1677 spa->spa_ddt[c] = NULL;
1683 ddt_class_contains(spa_t *spa, ddt_class_t max_class, const blkptr_t *bp)
1694 ddt = spa->spa_ddt[BP_GET_CHECKSUM(bp)];
1807 spa_t *spa = ddt->ddt_spa;
1812 if (spa_sync_pass(spa) > 1)
2312 spa_t *spa = ddt->ddt_spa;
2317 if (spa->spa_uberblock.ub_version < SPA_VERSION_DEDUP) {
2322 if (spa->spa_ddt_stat_object == 0) {
2323 spa->spa_ddt_stat_object = zap_create_link(ddt->ddt_os,
2338 ddt_sync(spa_t *spa, uint64_t txg)
2340 dsl_scan_t *scn = spa->spa_dsl_pool->dp_scan;
2344 ASSERT3U(spa_syncing_txg(spa), ==, txg);
2346 tx = dmu_tx_create_assigned(spa->spa_dsl_pool, txg);
2348 rio = zio_root(spa, NULL, NULL,
2361 ddt_t *ddt = spa->spa_ddt[c];
2377 ddt_walk_init(spa_t *spa, uint64_t txg)
2380 txg = spa_syncing_txg(spa);
2383 ddt_t *ddt = spa->spa_ddt[c];
2394 ddt_walk_ready(spa_t *spa)
2397 ddt_t *ddt = spa->spa_ddt[c];
2409 ddt_walk_impl(spa_t *spa, ddt_bookmark_t *ddb, ddt_lightweight_entry_t *ddlwe,
2415 ddt_t *ddt = spa->spa_ddt[ddb->ddb_checksum];
2448 ddt_walk(spa_t *spa, ddt_bookmark_t *ddb, ddt_lightweight_entry_t *ddlwe)
2450 return (ddt_walk_impl(spa, ddb, ddlwe, 0, B_TRUE));
2462 ddt_addref(spa_t *spa, const blkptr_t *bp)
2468 spa_config_enter(spa, SCL_ZIO, FTAG, RW_READER);
2469 ddt = ddt_select(spa, bp);
2477 spa_config_exit(spa, SCL_ZIO, FTAG);
2503 spa_config_exit(spa, SCL_ZIO, FTAG);
2602 ddt_prune_walk(spa_t *spa, uint64_t cutoff, ddt_age_histo_t *histogram)
2621 dpi.dpi_spa = spa;
2630 ddt_walk_impl(spa, &ddb, &ddlwe, DDT_FLAG_FLAT, B_FALSE)) == 0) {
2631 ddt_t *ddt = spa->spa_ddt[ddb.ddb_checksum];
2634 if (spa_shutting_down(spa) || issig())
2654 VERIFY0(dsl_sync_task(spa_name(spa),
2677 VERIFY0(dsl_sync_task(spa_name(spa), NULL,
2691 ddt_total_entries(spa_t *spa)
2694 ddt_get_dedup_object_stats(spa, &ddo);
2700 ddt_prune_unique_entries(spa_t *spa, zpool_ddt_prune_unit_t unit,
2706 if (spa->spa_active_ddt_prune)
2708 if (ddt_total_entries(spa) == 0)
2711 spa->spa_active_ddt_prune = B_TRUE;
2721 ddt_prune_walk(spa, 0, &histogram);
2750 if (cutoff > 0 && !spa_shutting_down(spa) && !issig()) {
2752 ddt_prune_walk(spa, cutoff, NULL);
2756 spa_name(spa), (u_longlong_t)NSEC2MSEC(gethrtime() - start_time));
2758 spa->spa_active_ddt_prune = B_FALSE;