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