Lines Matching defs:dspp

1953 setup_featureflags(struct dmu_send_params *dspp, objset_t *os,
1956 dsl_dataset_t *to_ds = dspp->to_ds;
1957 dsl_pool_t *dp = dspp->dp;
1969 if ((dspp->rawok || dspp->large_block_ok) &&
1975 if ((dspp->embedok || dspp->rawok) && !os->os_encrypted &&
1981 if (dspp->compressok || dspp->rawok)
1984 if (dspp->rawok && os->os_encrypted)
2005 if (dspp->resumeobj != 0 || dspp->resumeoff != 0) {
2009 if (dspp->redactbook != NULL) {
2035 create_begin_record(struct dmu_send_params *dspp, objset_t *os,
2043 dsl_dataset_t *to_ds = dspp->to_ds;
2049 drrb->drr_fromguid = dspp->ancestor_zb.zbm_guid;
2054 if (dspp->is_clone)
2056 if (dsl_dataset_phys(dspp->to_ds)->ds_flags & DS_FLAG_CI_DATASET)
2062 if (dspp->savedok) {
2063 drrb->drr_toguid = dspp->saved_guid;
2064 strlcpy(drrb->drr_toname, dspp->saved_toname,
2119 struct dmu_send_params *dspp, redaction_list_t *rl, dmu_sendstatus_t *dssp)
2121 if (dspp->redactbook == NULL)
2139 struct dmu_send_params *dspp, struct redact_list_thread_arg *from_arg,
2150 if (dspp->redactbook != NULL)
2160 struct dmu_send_params *dspp, struct send_merge_thread_arg *smt_arg,
2167 srt_arg->issue_reads = !dspp->dso->dso_dryrun;
2174 setup_resume_points(struct dmu_send_params *dspp,
2181 dsl_dataset_t *to_ds = dspp->to_ds;
2187 obj = dspp->resumeobj;
2193 blkid = dspp->resumeoff / to_doi.doi_data_block_size;
2205 uint64_t objset = dspp->ancestor_zb.zbm_redaction_obj;
2224 fnvlist_add_uint64(nvl, BEGINNV_RESUME_OBJECT, dspp->resumeobj);
2225 fnvlist_add_uint64(nvl, BEGINNV_RESUME_OFFSET, dspp->resumeoff);
2231 setup_send_progress(struct dmu_send_params *dspp)
2234 dssp->dss_outfd = dspp->outfd;
2235 dssp->dss_off = dspp->off;
2237 mutex_enter(&dspp->to_ds->ds_sendstream_lock);
2238 list_insert_head(&dspp->to_ds->ds_sendstreams, dssp);
2239 mutex_exit(&dspp->to_ds->ds_sendstream_lock);
2362 dmu_send_impl(struct dmu_send_params *dspp)
2369 uint64_t fromtxg = dspp->ancestor_zb.zbm_creation_txg;
2379 boolean_t resuming = (dspp->resumeobj != 0 || dspp->resumeoff != 0);
2382 dsl_dataset_t *to_ds = dspp->to_ds;
2383 zfs_bookmark_phys_t *ancestor_zb = &dspp->ancestor_zb;
2384 dsl_pool_t *dp = dspp->dp;
2385 const void *tag = dspp->tag;
2399 if (!dspp->rawok && os->os_encrypted &&
2415 if ((err = setup_featureflags(dspp, os, &featureflags)) != 0) {
2423 if (dspp->redactbook != NULL) {
2425 dspp->redactbook->zbm_redaction_obj, FTAG,
2460 drr = create_begin_record(dspp, os, featureflags);
2461 dssp = setup_send_progress(dspp);
2464 dsc.dsc_dso = dspp->dso;
2466 dsc.dsc_off = dspp->off;
2471 dsc.dsc_resume_object = dspp->resumeobj;
2472 dsc.dsc_resume_offset = dspp->resumeoff;
2487 if (dspp->redactbook != NULL) {
2515 if (dspp->numfromredactsnaps != NUM_SNAPS_NOT_REDACTED) {
2518 dspp->fromredactsnaps, (uint_t)dspp->numfromredactsnaps);
2519 if (dspp->numfromredactsnaps > 0) {
2520 kmem_free(dspp->fromredactsnaps,
2521 dspp->numfromredactsnaps * sizeof (uint64_t));
2522 dspp->fromredactsnaps = NULL;
2527 err = setup_resume_points(dspp, to_arg, from_arg,
2562 setup_to_thread(to_arg, os, dssp, fromtxg, dspp->rawok);
2564 setup_redact_list_thread(rlt_arg, dspp, redact_rl, dssp);
2565 setup_merge_thread(smt_arg, dspp, from_arg, to_arg, rlt_arg, os);
2566 setup_reader_thread(srt_arg, dspp, smt_arg, featureflags);
2592 if (dspp->redactbook != NULL)
2618 if (!dspp->savedok) {
2633 (dsc.dsc_sent_end || dspp->savedok)));
2665 struct dmu_send_params dspp = {0};
2666 dspp.embedok = embedok;
2667 dspp.large_block_ok = large_block_ok;
2668 dspp.compressok = compressok;
2669 dspp.outfd = outfd;
2670 dspp.off = off;
2671 dspp.dso = dsop;
2672 dspp.tag = FTAG;
2673 dspp.rawok = rawok;
2674 dspp.savedok = savedok;
2677 err = dsl_pool_hold(pool, FTAG, &dspp.dp);
2681 err = dsl_dataset_hold_obj_flags(dspp.dp, tosnap, dsflags, FTAG,
2682 &dspp.to_ds);
2684 dsl_pool_rele(dspp.dp, FTAG);
2689 err = dsl_dataset_hold_obj_flags(dspp.dp, fromsnap, dsflags,
2692 dsl_dataset_rele_flags(dspp.to_ds, dsflags, FTAG);
2693 dsl_pool_rele(dspp.dp, FTAG);
2696 dspp.ancestor_zb.zbm_guid = dsl_dataset_phys(fromds)->ds_guid;
2697 dspp.ancestor_zb.zbm_creation_txg =
2699 dspp.ancestor_zb.zbm_creation_time =
2703 (void) zap_lookup(dspp.dp->dp_meta_objset,
2705 &dspp.ancestor_zb.zbm_ivset_guid);
2713 &dspp.numfromredactsnaps,
2715 dspp.numfromredactsnaps = NUM_SNAPS_NOT_REDACTED;
2716 } else if (dspp.numfromredactsnaps > 0) {
2717 uint64_t size = dspp.numfromredactsnaps *
2719 dspp.fromredactsnaps = kmem_zalloc(size, KM_SLEEP);
2720 memcpy(dspp.fromredactsnaps, fromredact, size);
2724 dsl_dataset_is_before(dspp.to_ds, fromds, 0);
2725 dspp.is_clone = (dspp.to_ds->ds_dir !=
2729 dsl_pool_rele(dspp.dp, FTAG);
2732 err = dmu_send_impl(&dspp);
2735 dspp.numfromredactsnaps = NUM_SNAPS_NOT_REDACTED;
2736 err = dmu_send_impl(&dspp);
2738 if (dspp.fromredactsnaps)
2739 kmem_free(dspp.fromredactsnaps,
2740 dspp.numfromredactsnaps * sizeof (uint64_t));
2742 dsl_dataset_rele(dspp.to_ds, FTAG);
2758 struct dmu_send_params dspp = {0};
2761 dspp.tosnap = tosnap;
2762 dspp.embedok = embedok;
2763 dspp.large_block_ok = large_block_ok;
2764 dspp.compressok = compressok;
2765 dspp.outfd = outfd;
2766 dspp.off = off;
2767 dspp.dso = dsop;
2768 dspp.tag = FTAG;
2769 dspp.resumeobj = resumeobj;
2770 dspp.resumeoff = resumeoff;
2771 dspp.rawok = rawok;
2772 dspp.savedok = savedok;
2777 err = dsl_pool_hold(tosnap, FTAG, &dspp.dp);
2781 if (strchr(tosnap, '@') == NULL && spa_writeable(dspp.dp->dp_spa)) {
2802 err = dsl_dataset_own_force(dspp.dp, name, dsflags,
2803 FTAG, &dspp.to_ds);
2805 err = dsl_dataset_own_force(dspp.dp, tosnap,
2806 dsflags, FTAG, &dspp.to_ds);
2811 err = zap_lookup(dspp.dp->dp_meta_objset,
2812 dspp.to_ds->ds_object,
2814 &dspp.saved_guid);
2818 err = zap_lookup(dspp.dp->dp_meta_objset,
2819 dspp.to_ds->ds_object,
2821 sizeof (dspp.saved_toname),
2822 dspp.saved_toname);
2826 dsl_dataset_disown(dspp.to_ds, dsflags, FTAG);
2830 err = dsl_dataset_own(dspp.dp, tosnap, dsflags,
2831 FTAG, &dspp.to_ds);
2836 err = dsl_dataset_hold_flags(dspp.dp, tosnap, dsflags, FTAG,
2837 &dspp.to_ds);
2842 dsl_pool_rele(dspp.dp, FTAG);
2855 err = dsl_bookmark_lookup(dspp.dp, path,
2857 dspp.redactbook = &book;
2862 dsl_pool_rele(dspp.dp, FTAG);
2864 dsl_dataset_disown(dspp.to_ds, dsflags, FTAG);
2866 dsl_dataset_rele_flags(dspp.to_ds, dsflags, FTAG);
2871 zfs_bookmark_phys_t *zb = &dspp.ancestor_zb;
2885 dspp.is_clone = B_TRUE;
2889 err = dsl_dataset_hold(dspp.dp, fromsnap, FTAG,
2903 &dspp.numfromredactsnaps,
2905 dspp.numfromredactsnaps =
2907 } else if (dspp.numfromredactsnaps > 0) {
2909 dspp.numfromredactsnaps *
2911 dspp.fromredactsnaps = kmem_zalloc(size,
2913 memcpy(dspp.fromredactsnaps, fromredact,
2916 if (!dsl_dataset_is_before(dspp.to_ds, fromds,
2932 dspp.dp->dp_meta_objset,
2941 dspp.numfromredactsnaps = NUM_SNAPS_NOT_REDACTED;
2942 err = dsl_bookmark_lookup(dspp.dp, fromsnap, dspp.to_ds,
2946 dsl_dataset_phys(dspp.to_ds)->ds_guid)
2952 err = dmu_send_impl(&dspp);
2954 if (dspp.fromredactsnaps)
2955 kmem_free(dspp.fromredactsnaps,
2956 dspp.numfromredactsnaps *
2958 dsl_pool_rele(dspp.dp, FTAG);
2961 dspp.numfromredactsnaps = NUM_SNAPS_NOT_REDACTED;
2962 err = dmu_send_impl(&dspp);
2965 dsl_dataset_disown(dspp.to_ds, dsflags, FTAG);
2967 dsl_dataset_rele_flags(dspp.to_ds, dsflags, FTAG);