Lines Matching defs:clone

927 	 * If we are creating a clone, make sure we zero out any stale
1740 dsl_dataset_t *clone;
1743 za.za_first_integer, FTAG, &clone));
1744 dsl_dir_name(clone->ds_dir, buf);
1746 dsl_dataset_rele(clone, FTAG);
2263 * When we do the clone swap, we will temporarily use more space
2266 * to be free). We will immediately destroy the clone, freeing
2288 dsl_dataset_t *ds, *clone;
2300 VERIFY0(dsl_dataset_hold_obj(dp, cloneobj, FTAG, &clone));
2302 dsl_dataset_clone_swap_sync_impl(clone, ds, tx);
2305 dsl_destroy_head_sync_impl(clone, tx);
2307 dsl_dataset_rele(clone, FTAG);
2465 * If we are a clone of a clone then we never reached ORIGIN,
2466 * so we need to subtract out the clone origin's used space.
2486 * after the promotion (for both origin and clone). For each,
2494 * Note, typically this will not be a clone of a clone,
2570 /* change the origin's next clone */
2657 /* move any clone references */
2705 * is true for each of {clone,origin} independently.
2863 * Promote a clone.
2900 dsl_dataset_clone_swap_check_impl(dsl_dataset_t *clone,
2911 if (clone->ds_is_snapshot ||
2916 if (!force && clone->ds_prev != origin_head->ds_prev)
2919 /* clone should be the clone (unless they are unrelated) */
2920 if (clone->ds_prev != NULL &&
2921 clone->ds_prev != clone->ds_dir->dd_pool->dp_origin_snap &&
2922 origin_head->ds_dir != clone->ds_prev->ds_dir)
2925 /* the clone should be a child of the origin */
2926 if (clone->ds_dir->dd_parent != origin_head->ds_dir)
2943 dsl_dataset_phys(clone)->ds_unique_bytes);
2951 * The clone can't be too much over the head's refquota.
2964 dsl_dataset_phys(clone)->ds_referenced_bytes >
2972 dsl_dataset_clone_swap_sync_impl(dsl_dataset_t *clone,
2978 ASSERT(clone->ds_reserved == 0);
2984 dsl_dataset_phys(clone)->ds_unique_bytes <= origin_head->ds_quota +
2986 ASSERT3P(clone->ds_prev, ==, origin_head->ds_prev);
2994 ASSERT(!clone->ds_feature_inuse[f]);
2999 boolean_t clone_inuse = clone->ds_feature_inuse[f];
3003 dsl_dataset_deactivate_feature(clone->ds_object, f, tx);
3004 clone->ds_feature_inuse[f] = B_FALSE;
3017 dsl_dataset_activate_feature(clone->ds_object, f, tx);
3018 clone->ds_feature_inuse[f] = B_TRUE;
3022 dmu_buf_will_dirty(clone->ds_dbuf, tx);
3025 if (clone->ds_objset != NULL) {
3026 dmu_objset_evict(clone->ds_objset);
3027 clone->ds_objset = NULL;
3039 dsl_dataset_phys(clone)->ds_unique_bytes);
3044 if (clone->ds_prev) {
3045 dsl_dataset_t *origin = clone->ds_prev;
3049 dsl_deadlist_space_range(&clone->ds_deadlist,
3059 dsl_dataset_phys(clone)->ds_bp;
3060 dsl_dataset_phys(clone)->ds_bp = tmp;
3069 ASSERT3U(dsl_dir_phys(clone->ds_dir)->
3072 dsl_deadlist_space(&clone->ds_deadlist,
3077 dused = dsl_dataset_phys(clone)->ds_referenced_bytes +
3081 dcomp = dsl_dataset_phys(clone)->ds_compressed_bytes +
3085 duncomp = dsl_dataset_phys(clone)->ds_uncompressed_bytes +
3092 dsl_dir_diduse_space(clone->ds_dir, DD_USED_HEAD,
3101 dsl_deadlist_space_range(&clone->ds_deadlist,
3113 dsl_dataset_phys(clone)->ds_referenced_bytes);
3115 dsl_dataset_phys(clone)->ds_compressed_bytes);
3117 dsl_dataset_phys(clone)->ds_uncompressed_bytes);
3119 dsl_dataset_phys(clone)->ds_unique_bytes);
3128 dsl_deadlist_close(&clone->ds_deadlist);
3131 dsl_dataset_phys(clone)->ds_deadlist_obj);
3132 dsl_deadlist_open(&clone->ds_deadlist, dp->dp_meta_objset,
3133 dsl_dataset_phys(clone)->ds_deadlist_obj);
3137 dsl_scan_ds_clone_swapped(origin_head, clone, tx);
3139 spa_history_log_internal_ds(clone, "clone swap", tx,