Lines Matching defs:clone

795 	 * If we are creating a clone, make sure we zero out any stale
1571 dsl_dataset_t *clone;
1574 za.za_first_integer, FTAG, &clone));
1575 dsl_dir_name(clone->ds_dir, buf);
1577 dsl_dataset_rele(clone, FTAG);
1996 * When we do the clone swap, we will temporarily use more space
1999 * to be free). We will immediately destroy the clone, freeing
2021 dsl_dataset_t *ds, *clone;
2033 VERIFY0(dsl_dataset_hold_obj(dp, cloneobj, FTAG, &clone));
2035 dsl_dataset_clone_swap_sync_impl(clone, ds, tx);
2038 dsl_destroy_head_sync_impl(clone, tx);
2040 dsl_dataset_rele(clone, FTAG);
2191 * If we are a clone of a clone then we never reached ORIGIN,
2192 * so we need to subtract out the clone origin's used space.
2209 * after the promotion (for both origin and clone). For each,
2217 * Note, typically this will not be a clone of a clone,
2290 /* change the origin's next clone */
2376 /* move any clone references */
2423 * is true for each of {clone,origin} independently.
2581 * Promote a clone.
2617 dsl_dataset_clone_swap_check_impl(dsl_dataset_t *clone,
2623 if (dsl_dataset_is_snapshot(clone) ||
2628 if (!force && clone->ds_prev != origin_head->ds_prev)
2631 /* clone should be the clone (unless they are unrelated) */
2632 if (clone->ds_prev != NULL &&
2633 clone->ds_prev != clone->ds_dir->dd_pool->dp_origin_snap &&
2634 origin_head->ds_dir != clone->ds_prev->ds_dir)
2637 /* the clone should be a child of the origin */
2638 if (clone->ds_dir->dd_parent != origin_head->ds_dir)
2655 clone->ds_phys->ds_unique_bytes);
2662 /* clone can't be over the head's refquota */
2664 clone->ds_phys->ds_referenced_bytes > origin_head->ds_quota)
2671 dsl_dataset_clone_swap_sync_impl(dsl_dataset_t *clone,
2677 ASSERT(clone->ds_reserved == 0);
2679 clone->ds_phys->ds_unique_bytes <= origin_head->ds_quota);
2680 ASSERT3P(clone->ds_prev, ==, origin_head->ds_prev);
2682 dmu_buf_will_dirty(clone->ds_dbuf, tx);
2685 if (clone->ds_objset != NULL) {
2686 dmu_objset_evict(clone->ds_objset);
2687 clone->ds_objset = NULL;
2699 clone->ds_phys->ds_unique_bytes);
2704 if (clone->ds_prev) {
2705 dsl_dataset_t *origin = clone->ds_prev;
2709 dsl_deadlist_space_range(&clone->ds_deadlist,
2718 origin_head->ds_phys->ds_bp = clone->ds_phys->ds_bp;
2719 clone->ds_phys->ds_bp = tmp;
2728 ASSERT3U(clone->ds_dir->dd_phys->
2731 dsl_deadlist_space(&clone->ds_deadlist,
2736 dused = clone->ds_phys->ds_referenced_bytes + cdl_used -
2738 dcomp = clone->ds_phys->ds_compressed_bytes + cdl_comp -
2740 duncomp = clone->ds_phys->ds_uncompressed_bytes +
2746 dsl_dir_diduse_space(clone->ds_dir, DD_USED_HEAD,
2755 dsl_deadlist_space_range(&clone->ds_deadlist,
2767 clone->ds_phys->ds_referenced_bytes);
2769 clone->ds_phys->ds_compressed_bytes);
2771 clone->ds_phys->ds_uncompressed_bytes);
2773 clone->ds_phys->ds_unique_bytes);
2782 dsl_deadlist_close(&clone->ds_deadlist);
2785 clone->ds_phys->ds_deadlist_obj);
2786 dsl_deadlist_open(&clone->ds_deadlist, dp->dp_meta_objset,
2787 clone->ds_phys->ds_deadlist_obj);
2791 dsl_scan_ds_clone_swapped(origin_head, clone, tx);
2793 spa_history_log_internal_ds(clone, "clone swap", tx,