Lines Matching defs:snap
345 /* if (logical birth > prev prev snap txg) prev unique += bs */
996 /* add '@' if ds is a snap */
2688 * 'snap' should be a buffer of size ZFS_MAX_DATASET_NAME_LEN.
2691 dsl_get_prev_snap(dsl_dataset_t *ds, char *snap)
2695 dsl_dataset_name(ds->ds_prev, snap);
2929 dsl_dataset_modified_since_snap(dsl_dataset_t *ds, dsl_dataset_t *snap)
2935 if (snap == NULL)
2940 if (birth > dsl_dataset_phys(snap)->ds_creation_txg) {
2949 if (dmu_objset_from_ds(snap, &os_snap) != 0)
3227 * Check if the snap we are rolling back to uses more than
3330 struct promotenode *snap;
3349 snap = list_head(&ddpa->shared_snaps);
3350 if (snap == NULL) {
3354 dsl_dataset_t *const origin_ds = snap->ds;
3376 snap = list_tail(&ddpa->clone_snaps);
3377 ASSERT(snap != NULL);
3378 ASSERT3U(dsl_dataset_phys(snap->ds)->ds_prev_snap_obj, ==,
3380 dsl_deadlist_space_range(&snap->ds->ds_deadlist,
3404 for (snap = list_head(&ddpa->shared_snaps); snap;
3405 snap = list_next(&ddpa->shared_snaps, snap)) {
3407 dsl_dataset_t *ds = snap->ds;
3429 snap->ds->ds_snapname);
3518 snap = list_head(&ddpa->origin_snaps);
3519 if (snap == NULL) {
3524 snap->ds->ds_dir->dd_origin_txg, &ddpa->cloneusedsnap);
3529 snap->ds->ds_dir->dd_origin_txg, &space);
3554 struct promotenode *snap;
3569 snap = list_head(&ddpa->shared_snaps);
3570 origin_ds = snap->ds;
3573 snap = list_head(&ddpa->origin_snaps);
3574 origin_head = snap->ds;
3585 /* change origin's next snap */
3588 snap = list_tail(&ddpa->clone_snaps);
3589 ASSERT3U(dsl_dataset_phys(snap->ds)->ds_prev_snap_obj, ==,
3591 dsl_dataset_phys(origin_ds)->ds_next_snap_obj = snap->ds->ds_object;
3596 snap->ds->ds_object, tx);
3652 for (snap = list_head(&ddpa->shared_snaps); snap;
3653 snap = list_next(&ddpa->shared_snaps, snap)) {
3654 dsl_dataset_t *ds = snap->ds;
3666 /* move snap name entry */
3794 struct promotenode *snap;
3805 snap = kmem_alloc(sizeof (*snap), KM_SLEEP);
3806 snap->ds = ds;
3807 list_insert_tail(l, snap);
3817 struct promotenode *snap;
3820 for (snap = list_head(l); snap; snap = list_next(l, snap)) {
3822 dsl_deadlist_space_range(&snap->ds->ds_deadlist,
3832 struct promotenode *snap;
3837 while ((snap = list_remove_tail(l)) != NULL) {
3838 dsl_dataset_rele(snap->ds, tag);
3839 kmem_free(snap, sizeof (*snap));
3849 struct promotenode *snap;
3873 snap = list_head(&ddpa->shared_snaps);
3874 ASSERT3U(snap->ds->ds_object, ==, dsl_dir_phys(dd)->dd_origin_obj);
3876 dsl_dir_phys(snap->ds->ds_dir)->dd_head_dataset_obj,
3881 if (dsl_dir_phys(snap->ds->ds_dir)->dd_origin_obj != 0) {
3883 dsl_dir_phys(snap->ds->ds_dir)->dd_origin_obj,
4653 dsl_dataset_t *snap = new;
4655 while (dsl_dataset_phys(snap)->ds_prev_snap_txg >
4659 dsl_deadlist_space_range(&snap->ds_deadlist,
4666 uint64_t snapobj = dsl_dataset_phys(snap)->ds_prev_snap_obj;
4667 if (snap != new)
4668 dsl_dataset_rele(snap, FTAG);
4669 err = dsl_dataset_hold_obj(dp, snapobj, FTAG, &snap);
4684 ASSERT3U(dsl_dataset_phys(snap)->ds_prev_snap_txg, ==,
4687 dsl_deadlist_space(&snap->ds_deadlist, &used, &comp, &uncomp);
4692 if (snap != new)
4693 dsl_dataset_rele(snap, FTAG);
4754 * This is the set of blocks that were born after the snap before firstsnap,
4755 * (birth > firstsnap->prev_snap_txg) and died before the snap after the
4756 * last snap (ie, is on lastsnap->ds_next->ds_deadlist or an earlier deadlist).
4757 * We calculate this by iterating over the relevant deadlists (from the snap
4758 * after lastsnap, backward to the snap after firstsnap), summing up the
4759 * space on the deadlist that was born after the snap before firstsnap.