Lines Matching refs:feature

226 feature_get_refcount(spa_t *spa, zfeature_info_t *feature, uint64_t *res)  in feature_get_refcount()  argument
228 ASSERT(VALID_FEATURE_FID(feature->fi_feature)); in feature_get_refcount()
229 if (spa->spa_feat_refcount_cache[feature->fi_feature] == in feature_get_refcount()
233 *res = spa->spa_feat_refcount_cache[feature->fi_feature]; in feature_get_refcount()
243 feature_get_refcount_from_disk(spa_t *spa, zfeature_info_t *feature, in feature_get_refcount_from_disk() argument
248 uint64_t zapobj = (feature->fi_flags & ZFEATURE_FLAG_READONLY_COMPAT) ? in feature_get_refcount_from_disk()
259 feature->fi_guid, sizeof (uint64_t), 1, &refcount); in feature_get_refcount_from_disk()
272 feature_get_enabled_txg(spa_t *spa, zfeature_info_t *feature, uint64_t *res) { in feature_get_enabled_txg() argument
275 ASSERT(zfeature_depends_on(feature->fi_feature, in feature_get_enabled_txg()
278 if (!spa_feature_is_enabled(spa, feature->fi_feature)) { in feature_get_enabled_txg()
285 feature->fi_guid, sizeof (uint64_t), 1, res)); in feature_get_enabled_txg()
295 feature_sync(spa_t *spa, zfeature_info_t *feature, uint64_t refcount, in feature_sync() argument
298 ASSERT(VALID_FEATURE_OR_NONE(feature->fi_feature)); in feature_sync()
299 uint64_t zapobj = (feature->fi_flags & ZFEATURE_FLAG_READONLY_COMPAT) ? in feature_sync()
302 VERIFY0(zap_update(spa->spa_meta_objset, zapobj, feature->fi_guid, in feature_sync()
312 if (feature->fi_feature != SPA_FEATURE_NONE) { in feature_sync()
314 &spa->spa_feat_refcount_cache[feature->fi_feature]; in feature_sync()
320 spa_deactivate_mos_feature(spa, feature->fi_guid); in feature_sync()
321 else if (feature->fi_flags & ZFEATURE_FLAG_MOS) in feature_sync()
322 spa_activate_mos_feature(spa, feature->fi_guid, tx); in feature_sync()
330 feature_enable_sync(spa_t *spa, zfeature_info_t *feature, dmu_tx_t *tx) in feature_enable_sync() argument
333 (feature->fi_flags & ZFEATURE_FLAG_ACTIVATE_ON_ENABLE) ? 1 : 0; in feature_enable_sync()
334 uint64_t zapobj = (feature->fi_flags & ZFEATURE_FLAG_READONLY_COMPAT) ? in feature_enable_sync()
338 ASSERT(zfeature_is_valid_guid(feature->fi_guid)); in feature_enable_sync()
344 if (zap_contains(spa->spa_meta_objset, zapobj, feature->fi_guid) == 0) in feature_enable_sync()
347 for (int i = 0; feature->fi_depends[i] != SPA_FEATURE_NONE; i++) in feature_enable_sync()
348 spa_feature_enable(spa, feature->fi_depends[i], tx); in feature_enable_sync()
351 feature->fi_guid, 1, strlen(feature->fi_desc) + 1, in feature_enable_sync()
352 feature->fi_desc, tx)); in feature_enable_sync()
354 feature_sync(spa, feature, initial_refcount, tx); in feature_enable_sync()
368 spa->spa_feat_enabled_txg_obj, feature->fi_guid, in feature_enable_sync()
378 zfeature_info_t *feature = &spa_feature_table[fid]; in feature_do_action() local
379 uint64_t zapobj = (feature->fi_flags & ZFEATURE_FLAG_READONLY_COMPAT) ? in feature_do_action()
384 ASSERT(zfeature_is_valid_guid(feature->fi_guid)); in feature_do_action()
389 VERIFY3U(feature_get_refcount(spa, feature, &refcount), !=, ENOTSUP); in feature_do_action()
405 feature_sync(spa, feature, refcount, tx); in feature_do_action()