zfs: fixes for a full stream received into an existing dataset
- this should fail early unless the force flag is set - if the force flag is set then any local modifications including snapshots should be undone See: https://www.illumos.org/issues/5912 See: https://reviews.csiden.org/r/220/ Reviewed by: mahrens, Paul Dagnelie <pcd@delphix.com> MFC after: 15 days Sponsored by: ClusterHQ
This commit is contained in:
parent
e80d8b4b7c
commit
4b040d9513
@ -983,10 +983,12 @@ recv_begin_check_existing_impl(dmu_recv_begin_arg_t *drba, dsl_dataset_t *ds,
|
||||
|
||||
dsl_dataset_rele(snap, FTAG);
|
||||
} else {
|
||||
/* if full, most recent snapshot must be $ORIGIN */
|
||||
if (dsl_dataset_phys(ds)->ds_prev_snap_txg >= TXG_INITIAL)
|
||||
return (SET_ERROR(ENODEV));
|
||||
drba->drba_snapobj = dsl_dataset_phys(ds)->ds_prev_snap_obj;
|
||||
/* if full, then must be forced */
|
||||
if (!drba->drba_cookie->drc_force)
|
||||
return (SET_ERROR(EEXIST));
|
||||
/* start from $ORIGIN@$ORIGIN, if supported */
|
||||
drba->drba_snapobj = dp->dp_origin_snap != NULL ?
|
||||
dp->dp_origin_snap->ds_object : 0;
|
||||
}
|
||||
|
||||
return (0);
|
||||
|
Loading…
Reference in New Issue
Block a user