Lines Matching defs:ddpa

3320 static int promote_hold(dsl_dataset_promote_arg_t *ddpa, dsl_pool_t *dp,
3322 static void promote_rele(dsl_dataset_promote_arg_t *ddpa, const void *tag);
3327 dsl_dataset_promote_arg_t *ddpa = arg;
3337 err = promote_hold(ddpa, dp, FTAG);
3341 hds = ddpa->ddpa_clone;
3342 max_snap_len = MAXNAMELEN - strlen(ddpa->ddpa_clonename) - 1;
3345 promote_rele(ddpa, FTAG);
3349 snap = list_head(&ddpa->shared_snaps);
3371 promote_rele(ddpa, FTAG);
3376 snap = list_tail(&ddpa->clone_snaps);
3382 &ddpa->unique, &unused, &unused);
3401 ddpa->used = dsl_dataset_phys(origin_ds)->ds_referenced_bytes;
3402 ddpa->comp = dsl_dataset_phys(origin_ds)->ds_compressed_bytes;
3403 ddpa->uncomp = dsl_dataset_phys(origin_ds)->ds_uncompressed_bytes;
3404 for (snap = list_head(&ddpa->shared_snaps); snap;
3405 snap = list_next(&ddpa->shared_snaps, snap)) {
3428 fnvlist_add_boolean(ddpa->err_ds,
3441 ddpa->used += dlused;
3442 ddpa->comp += dlcomp;
3443 ddpa->uncomp += dluncomp;
3459 err = dsl_bookmark_lookup_impl(ddpa->ddpa_clone,
3463 fnvlist_add_boolean(ddpa->err_ds, dbn->dbn_name);
3486 if (ddpa->origin_origin) {
3487 ddpa->used -=
3488 dsl_dataset_phys(ddpa->origin_origin)->ds_referenced_bytes;
3489 ddpa->comp -=
3490 dsl_dataset_phys(ddpa->origin_origin)->ds_compressed_bytes;
3491 ddpa->uncomp -=
3492 dsl_dataset_phys(ddpa->origin_origin)->
3498 0, ss_mv_cnt, ddpa->used, ddpa->cr, ddpa->proc);
3518 snap = list_head(&ddpa->origin_snaps);
3523 err = snaplist_space(&ddpa->shared_snaps,
3524 snap->ds->ds_dir->dd_origin_txg, &ddpa->cloneusedsnap);
3528 err = snaplist_space(&ddpa->clone_snaps,
3532 ddpa->cloneusedsnap += space;
3536 err = snaplist_space(&ddpa->origin_snaps,
3538 &ddpa->originusedsnap);
3544 promote_rele(ddpa, FTAG);
3551 dsl_dataset_promote_arg_t *ddpa = arg;
3562 ASSERT(nvlist_empty(ddpa->err_ds));
3564 VERIFY0(promote_hold(ddpa, dp, FTAG));
3565 hds = ddpa->ddpa_clone;
3569 snap = list_head(&ddpa->shared_snaps);
3573 snap = list_head(&ddpa->origin_snaps);
3588 snap = list_tail(&ddpa->clone_snaps);
3617 dsl_dir_phys(ddpa->origin_origin->ds_dir)->dd_clones,
3621 dsl_dir_phys(ddpa->origin_origin->ds_dir)->dd_clones,
3652 for (snap = list_head(&ddpa->shared_snaps); snap;
3653 snap = list_next(&ddpa->shared_snaps, snap)) {
3731 delta = ddpa->cloneusedsnap -
3734 ASSERT3U(ddpa->used, >=, delta);
3737 ddpa->used - delta, ddpa->comp, ddpa->uncomp, tx);
3739 delta = ddpa->originusedsnap -
3742 ASSERT3U(ddpa->used, >=, -delta);
3745 -ddpa->used - delta, -ddpa->comp, -ddpa->uncomp, tx);
3747 dsl_dataset_phys(origin_ds)->ds_unique_bytes = ddpa->unique;
3765 * calling promote_rele() on ddpa since we need to dereference
3774 promote_rele(ddpa, FTAG);
3845 promote_hold(dsl_dataset_promote_arg_t *ddpa, dsl_pool_t *dp, const void *tag)
3851 error = dsl_dataset_hold(dp, ddpa->ddpa_clonename, tag,
3852 &ddpa->ddpa_clone);
3855 dd = ddpa->ddpa_clone->ds_dir;
3857 if (ddpa->ddpa_clone->ds_is_snapshot ||
3859 dsl_dataset_rele(ddpa->ddpa_clone, tag);
3864 &ddpa->shared_snaps, tag);
3868 error = snaplist_make(dp, 0, ddpa->ddpa_clone->ds_object,
3869 &ddpa->clone_snaps, tag);
3873 snap = list_head(&ddpa->shared_snaps);
3877 &ddpa->origin_snaps, tag);
3884 tag, &ddpa->origin_origin);
3890 promote_rele(ddpa, tag);
3895 promote_rele(dsl_dataset_promote_arg_t *ddpa, const void *tag)
3897 snaplist_destroy(&ddpa->shared_snaps, tag);
3898 snaplist_destroy(&ddpa->clone_snaps, tag);
3899 snaplist_destroy(&ddpa->origin_snaps, tag);
3900 if (ddpa->origin_origin != NULL)
3901 dsl_dataset_rele(ddpa->origin_origin, tag);
3902 dsl_dataset_rele(ddpa->ddpa_clone, tag);
3914 dsl_dataset_promote_arg_t ddpa = { 0 };
3934 ddpa.ddpa_clonename = name;
3935 ddpa.err_ds = fnvlist_alloc();
3936 ddpa.cr = CRED();
3937 ddpa.proc = curproc;
3940 dsl_dataset_promote_sync, &ddpa,
3946 snap_pair = nvlist_next_nvpair(ddpa.err_ds, NULL);
3951 fnvlist_free(ddpa.err_ds);