Lines Matching defs:drc

1729     boolean_t force, boolean_t resumable, char *origin, dmu_recv_cookie_t *drc)
1733 bzero(drc, sizeof (dmu_recv_cookie_t));
1734 drc->drc_drr_begin = drr_begin;
1735 drc->drc_drrb = &drr_begin->drr_u.drr_begin;
1736 drc->drc_tosnap = tosnap;
1737 drc->drc_tofs = tofs;
1738 drc->drc_force = force;
1739 drc->drc_resumable = resumable;
1740 drc->drc_cred = CRED();
1742 if (drc->drc_drrb->drr_magic == BSWAP_64(DMU_BACKUP_MAGIC)) {
1743 drc->drc_byteswap = B_TRUE;
1745 sizeof (dmu_replay_record_t), &drc->drc_cksum);
1747 } else if (drc->drc_drrb->drr_magic == DMU_BACKUP_MAGIC) {
1749 sizeof (dmu_replay_record_t), &drc->drc_cksum);
1755 drba.drba_cookie = drc;
1758 if (DMU_GET_FEATUREFLAGS(drc->drc_drrb->drr_versioninfo) &
2403 dmu_recv_cleanup_ds(dmu_recv_cookie_t *drc)
2405 if (drc->drc_resumable) {
2407 txg_wait_synced(drc->drc_ds->ds_dir->dd_pool, 0);
2408 dsl_dataset_disown(drc->drc_ds, dmu_recv_tag);
2411 dsl_dataset_name(drc->drc_ds, name);
2412 dsl_dataset_disown(drc->drc_ds, dmu_recv_tag);
2859 dmu_recv_stream(dmu_recv_cookie_t *drc, vnode_t *vp, offset_t *voffp,
2868 ra.byteswap = drc->drc_byteswap;
2869 ra.cksum = drc->drc_cksum;
2873 if (dsl_dataset_is_zapified(drc->drc_ds)) {
2874 (void) zap_lookup(drc->drc_ds->ds_dir->dd_pool->dp_meta_objset,
2875 drc->drc_ds->ds_object, DS_FIELD_RESUME_BYTES,
2882 ASSERT3U(DMU_GET_STREAM_HDRTYPE(drc->drc_drrb->drr_versioninfo), ==,
2884 ASSERT3U(drc->drc_drrb->drr_type, <, DMU_OST_NUMTYPES);
2889 VERIFY0(dmu_objset_from_ds(drc->drc_ds, &ra.os));
2891 ASSERT(dsl_dataset_phys(drc->drc_ds)->ds_flags & DS_FLAG_INCONSISTENT);
2893 featureflags = DMU_GET_FEATUREFLAGS(drc->drc_drrb->drr_versioninfo);
2927 drc->drc_guid_to_ds_map = rwa.guid_to_ds_map;
2930 uint32_t payloadlen = drc->drc_drr_begin->drr_payloadlen;
2959 rwa.byteswap = drc->drc_byteswap;
2960 rwa.resumable = drc->drc_resumable;
3029 dmu_recv_cleanup_ds(drc);
3040 dmu_recv_cookie_t *drc = arg;
3044 ASSERT3P(drc->drc_ds->ds_owner, ==, dmu_recv_tag);
3046 if (!drc->drc_newfs) {
3049 error = dsl_dataset_hold(dp, drc->drc_tofs, FTAG, &origin_head);
3052 if (drc->drc_force) {
3063 dsl_dataset_phys(drc->drc_ds)->ds_prev_snap_obj) {
3085 error = dsl_dataset_clone_swap_check_impl(drc->drc_ds,
3086 origin_head, drc->drc_force, drc->drc_owner, tx);
3092 drc->drc_tosnap, tx, B_TRUE, 1, drc->drc_cred);
3097 error = dsl_destroy_head_check_impl(drc->drc_ds, 1);
3099 error = dsl_dataset_snapshot_check_impl(drc->drc_ds,
3100 drc->drc_tosnap, tx, B_TRUE, 1, drc->drc_cred);
3108 dmu_recv_cookie_t *drc = arg;
3111 spa_history_log_internal_ds(drc->drc_ds, "finish receiving",
3112 tx, "snap=%s", drc->drc_tosnap);
3114 if (!drc->drc_newfs) {
3117 VERIFY0(dsl_dataset_hold(dp, drc->drc_tofs, FTAG,
3120 if (drc->drc_force) {
3129 dsl_dataset_phys(drc->drc_ds)->ds_prev_snap_obj) {
3140 VERIFY3P(drc->drc_ds->ds_prev, ==,
3143 dsl_dataset_clone_swap_sync_impl(drc->drc_ds,
3146 drc->drc_tosnap, tx);
3151 drc->drc_drrb->drr_creation_time;
3153 drc->drc_drrb->drr_toguid;
3161 drc->drc_newsnapobj =
3165 dsl_destroy_head_sync_impl(drc->drc_ds, tx);
3167 if (drc->drc_owner != NULL)
3168 VERIFY3P(origin_head->ds_owner, ==, drc->drc_owner);
3170 dsl_dataset_t *ds = drc->drc_ds;
3172 dsl_dataset_snapshot_sync_impl(ds, drc->drc_tosnap, tx);
3177 drc->drc_drrb->drr_creation_time;
3179 drc->drc_drrb->drr_toguid;
3199 drc->drc_newsnapobj =
3200 dsl_dataset_phys(drc->drc_ds)->ds_prev_snap_obj;
3207 dsl_dataset_disown(drc->drc_ds, dmu_recv_tag);
3208 drc->drc_ds = NULL;
3242 dmu_recv_existing_end(dmu_recv_cookie_t *drc)
3250 dsl_dataset_name(drc->drc_ds, name);
3254 return (dsl_sync_task(drc->drc_tofs,
3255 dmu_recv_end_check, dmu_recv_end_sync, drc,
3260 dmu_recv_new_end(dmu_recv_cookie_t *drc)
3262 return (dsl_sync_task(drc->drc_tofs,
3263 dmu_recv_end_check, dmu_recv_end_sync, drc,
3268 dmu_recv_end(dmu_recv_cookie_t *drc, void *owner)
3272 drc->drc_owner = owner;
3274 if (drc->drc_newfs)
3275 error = dmu_recv_new_end(drc);
3277 error = dmu_recv_existing_end(drc);
3280 dmu_recv_cleanup_ds(drc);
3281 } else if (drc->drc_guid_to_ds_map != NULL) {
3282 (void) add_ds_to_guidmap(drc->drc_tofs,
3283 drc->drc_guid_to_ds_map,
3284 drc->drc_newsnapobj);