Lines Matching refs:snap

213 		/* if (bp->blk_birth > prev prev snap txg) prev unique += bs */
2004 dsl_dataset_modified_since_snap(dsl_dataset_t *ds, dsl_dataset_t *snap)
2010 if (snap == NULL)
2015 if (birth > dsl_dataset_phys(snap)->ds_creation_txg) {
2024 if (dmu_objset_from_ds(snap, &os_snap) != 0)
2268 * Check if the snap we are rolling back to uses more than
2379 struct promotenode *snap;
2407 snap = list_head(&ddpa->shared_snaps);
2408 origin_ds = snap->ds;
2411 snap = list_tail(&ddpa->clone_snaps);
2412 ASSERT3U(dsl_dataset_phys(snap->ds)->ds_prev_snap_obj, ==,
2414 dsl_deadlist_space_range(&snap->ds->ds_deadlist,
2437 for (snap = list_head(&ddpa->shared_snaps); snap;
2438 snap = list_next(&ddpa->shared_snaps, snap)) {
2440 dsl_dataset_t *ds = snap->ds;
2461 (void) strcpy(ddpa->err_ds, snap->ds->ds_snapname);
2515 snap = list_head(&ddpa->origin_snaps);
2517 snap->ds->ds_dir->dd_origin_txg, &ddpa->cloneusedsnap);
2522 snap->ds->ds_dir->dd_origin_txg, &space);
2547 struct promotenode *snap;
2560 snap = list_head(&ddpa->shared_snaps);
2561 origin_ds = snap->ds;
2564 snap = list_head(&ddpa->origin_snaps);
2565 origin_head = snap->ds;
2574 /* change origin's next snap */
2577 snap = list_tail(&ddpa->clone_snaps);
2578 ASSERT3U(dsl_dataset_phys(snap->ds)->ds_prev_snap_obj, ==,
2580 dsl_dataset_phys(origin_ds)->ds_next_snap_obj = snap->ds->ds_object;
2585 snap->ds->ds_object, tx);
2622 for (snap = list_head(&ddpa->shared_snaps); snap;
2623 snap = list_next(&ddpa->shared_snaps, snap)) {
2624 dsl_dataset_t *ds = snap->ds;
2636 /* move snap name entry */
2742 struct promotenode *snap;
2753 snap = kmem_alloc(sizeof (*snap), KM_SLEEP);
2754 snap->ds = ds;
2755 list_insert_tail(l, snap);
2765 struct promotenode *snap;
2768 for (snap = list_head(l); snap; snap = list_next(l, snap)) {
2770 dsl_deadlist_space_range(&snap->ds->ds_deadlist,
2780 struct promotenode *snap;
2785 while ((snap = list_tail(l)) != NULL) {
2786 list_remove(l, snap);
2787 dsl_dataset_rele(snap->ds, tag);
2788 kmem_free(snap, sizeof (*snap));
2798 struct promotenode *snap;
2822 snap = list_head(&ddpa->shared_snaps);
2823 ASSERT3U(snap->ds->ds_object, ==, dsl_dir_phys(dd)->dd_origin_obj);
2825 dsl_dir_phys(snap->ds->ds_dir)->dd_head_dataset_obj,
2830 if (dsl_dir_phys(snap->ds->ds_dir)->dd_origin_obj != 0) {
2832 dsl_dir_phys(snap->ds->ds_dir)->dd_origin_obj,
3462 dsl_dataset_t *snap;
3466 snap = new;
3468 err = dsl_dataset_hold_obj(dp, snapobj, FTAG, &snap);
3473 if (dsl_dataset_phys(snap)->ds_prev_snap_txg ==
3483 dsl_deadlist_space(&snap->ds_deadlist,
3486 dsl_deadlist_space_range(&snap->ds_deadlist,
3499 snapobj = dsl_dataset_phys(snap)->ds_prev_snap_obj;
3500 if (snap != new)
3501 dsl_dataset_rele(snap, FTAG);
3519 * This is the set of blocks that were born after the snap before firstsnap,
3520 * (birth > firstsnap->prev_snap_txg) and died before the snap after the
3521 * last snap (ie, is on lastsnap->ds_next->ds_deadlist or an earlier deadlist).
3522 * We calculate this by iterating over the relevant deadlists (from the snap
3523 * after lastsnap, backward to the snap after firstsnap), summing up the
3524 * space on the deadlist that was born after the snap before firstsnap.