summaryrefslogtreecommitdiffstats
path: root/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2015-10-10 00:17:51 +0000
committerdelphij <delphij@FreeBSD.org>2015-10-10 00:17:51 +0000
commit570b502e0841050e2e6ede74adb8bf33dac895d6 (patch)
treec3520cf292e2dc0af2999c0688d59e721cc511bc /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
parentd98dd6b5d1ff3465db1cabe55caea12dfb4d84fb (diff)
downloadFreeBSD-src-570b502e0841050e2e6ede74adb8bf33dac895d6.zip
FreeBSD-src-570b502e0841050e2e6ede74adb8bf33dac895d6.tar.gz
MFC r288204: MFV r288063:
make dataset property de-registration operation O(1)
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
index f4fdaf9..4fbbe7c 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
@@ -288,6 +288,7 @@ dsl_dataset_evict(void *dbu)
ASSERT(!list_link_active(&ds->ds_synced_link));
+ list_destroy(&ds->ds_prop_cbs);
if (mutex_owned(&ds->ds_lock))
mutex_exit(&ds->ds_lock);
mutex_destroy(&ds->ds_lock);
@@ -434,6 +435,9 @@ dsl_dataset_hold_obj(dsl_pool_t *dp, uint64_t dsobj, void *tag,
list_create(&ds->ds_sendstreams, sizeof (dmu_sendarg_t),
offsetof(dmu_sendarg_t, dsa_link));
+ list_create(&ds->ds_prop_cbs, sizeof (dsl_prop_cb_record_t),
+ offsetof(dsl_prop_cb_record_t, cbr_ds_node));
+
if (doi.doi_type == DMU_OTN_ZAP_METADATA) {
for (spa_feature_t f = 0; f < SPA_FEATURES; f++) {
if (!(spa_feature_table[f].fi_flags &
OpenPOWER on IntegriCloud