Changeset View
Changeset View
Standalone View
Standalone View
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
Show First 20 Lines • Show All 122 Lines • ▼ Show 20 Lines | |||||
void | void | ||||
dsl_dataset_block_born(dsl_dataset_t *ds, const blkptr_t *bp, dmu_tx_t *tx) | dsl_dataset_block_born(dsl_dataset_t *ds, const blkptr_t *bp, dmu_tx_t *tx) | ||||
{ | { | ||||
int used = bp_get_dsize_sync(tx->tx_pool->dp_spa, bp); | int used = bp_get_dsize_sync(tx->tx_pool->dp_spa, bp); | ||||
int compressed = BP_GET_PSIZE(bp); | int compressed = BP_GET_PSIZE(bp); | ||||
int uncompressed = BP_GET_UCSIZE(bp); | int uncompressed = BP_GET_UCSIZE(bp); | ||||
int64_t delta; | int64_t delta; | ||||
spa_feature_t f; | |||||
dprintf_bp(bp, "ds=%p", ds); | dprintf_bp(bp, "ds=%p", ds); | ||||
ASSERT(dmu_tx_is_syncing(tx)); | ASSERT(dmu_tx_is_syncing(tx)); | ||||
/* It could have been compressed away to nothing */ | /* It could have been compressed away to nothing */ | ||||
if (BP_IS_HOLE(bp)) | if (BP_IS_HOLE(bp)) | ||||
return; | return; | ||||
ASSERT(BP_GET_TYPE(bp) != DMU_OT_NONE); | ASSERT(BP_GET_TYPE(bp) != DMU_OT_NONE); | ||||
Show All 13 Lines | dsl_dataset_block_born(dsl_dataset_t *ds, const blkptr_t *bp, dmu_tx_t *tx) | ||||
dsl_dataset_phys(ds)->ds_uncompressed_bytes += uncompressed; | dsl_dataset_phys(ds)->ds_uncompressed_bytes += uncompressed; | ||||
dsl_dataset_phys(ds)->ds_unique_bytes += used; | dsl_dataset_phys(ds)->ds_unique_bytes += used; | ||||
if (BP_GET_LSIZE(bp) > SPA_OLD_MAXBLOCKSIZE) { | if (BP_GET_LSIZE(bp) > SPA_OLD_MAXBLOCKSIZE) { | ||||
ds->ds_feature_activation_needed[SPA_FEATURE_LARGE_BLOCKS] = | ds->ds_feature_activation_needed[SPA_FEATURE_LARGE_BLOCKS] = | ||||
B_TRUE; | B_TRUE; | ||||
} | } | ||||
spa_feature_t f = zio_checksum_to_feature(BP_GET_CHECKSUM(bp)); | f = zio_checksum_to_feature(BP_GET_CHECKSUM(bp)); | ||||
if (f != SPA_FEATURE_NONE) | |||||
ds->ds_feature_activation_needed[f] = B_TRUE; | |||||
f = zio_compress_to_feature(BP_GET_COMPRESS(bp)); | |||||
if (f != SPA_FEATURE_NONE) | if (f != SPA_FEATURE_NONE) | ||||
ds->ds_feature_activation_needed[f] = B_TRUE; | ds->ds_feature_activation_needed[f] = B_TRUE; | ||||
mutex_exit(&ds->ds_lock); | mutex_exit(&ds->ds_lock); | ||||
dsl_dir_diduse_space(ds->ds_dir, DD_USED_HEAD, delta, | dsl_dir_diduse_space(ds->ds_dir, DD_USED_HEAD, delta, | ||||
compressed, uncompressed, tx); | compressed, uncompressed, tx); | ||||
dsl_dir_transfer_space(ds->ds_dir, used - delta, | dsl_dir_transfer_space(ds->ds_dir, used - delta, | ||||
DD_USED_REFRSRV, DD_USED_HEAD, NULL); | DD_USED_REFRSRV, DD_USED_HEAD, NULL); | ||||
▲ Show 20 Lines • Show All 4,088 Lines • Show Last 20 Lines |