Lines Matching refs:snap

217 		/* if (bp->blk_birth > prev prev snap txg) prev unique += bs */
1984 dsl_dataset_modified_since_snap(dsl_dataset_t *ds, dsl_dataset_t *snap)
1989 if (snap == NULL)
1992 dsl_dataset_phys(snap)->ds_creation_txg) {
2001 if (dmu_objset_from_ds(snap, &os_snap) != 0)
2253 * Check if the snap we are rolling back to uses more than
2364 struct promotenode *snap;
2392 snap = list_head(&ddpa->shared_snaps);
2393 origin_ds = snap->ds;
2396 snap = list_tail(&ddpa->clone_snaps);
2397 ASSERT3U(dsl_dataset_phys(snap->ds)->ds_prev_snap_obj, ==,
2399 dsl_deadlist_space_range(&snap->ds->ds_deadlist,
2422 for (snap = list_head(&ddpa->shared_snaps); snap;
2423 snap = list_next(&ddpa->shared_snaps, snap)) {
2425 dsl_dataset_t *ds = snap->ds;
2446 (void) strcpy(ddpa->err_ds, snap->ds->ds_snapname);
2500 snap = list_head(&ddpa->origin_snaps);
2502 snap->ds->ds_dir->dd_origin_txg, &ddpa->cloneusedsnap);
2507 snap->ds->ds_dir->dd_origin_txg, &space);
2532 struct promotenode *snap;
2548 snap = list_head(&ddpa->shared_snaps);
2549 origin_ds = snap->ds;
2552 snap = list_head(&ddpa->origin_snaps);
2553 origin_head = snap->ds;
2562 /* change origin's next snap */
2565 snap = list_tail(&ddpa->clone_snaps);
2566 ASSERT3U(dsl_dataset_phys(snap->ds)->ds_prev_snap_obj, ==,
2568 dsl_dataset_phys(origin_ds)->ds_next_snap_obj = snap->ds->ds_object;
2573 snap->ds->ds_object, tx);
2618 for (snap = list_head(&ddpa->shared_snaps); snap;
2619 snap = list_next(&ddpa->shared_snaps, snap)) {
2620 dsl_dataset_t *ds = snap->ds;
2632 /* move snap name entry */
2750 struct promotenode *snap;
2761 snap = kmem_alloc(sizeof (*snap), KM_SLEEP);
2762 snap->ds = ds;
2763 list_insert_tail(l, snap);
2773 struct promotenode *snap;
2776 for (snap = list_head(l); snap; snap = list_next(l, snap)) {
2778 dsl_deadlist_space_range(&snap->ds->ds_deadlist,
2788 struct promotenode *snap;
2793 while ((snap = list_tail(l)) != NULL) {
2794 list_remove(l, snap);
2795 dsl_dataset_rele(snap->ds, tag);
2796 kmem_free(snap, sizeof (*snap));
2806 struct promotenode *snap;
2830 snap = list_head(&ddpa->shared_snaps);
2831 ASSERT3U(snap->ds->ds_object, ==, dsl_dir_phys(dd)->dd_origin_obj);
2833 dsl_dir_phys(snap->ds->ds_dir)->dd_head_dataset_obj,
2838 if (dsl_dir_phys(snap->ds->ds_dir)->dd_origin_obj != 0) {
2840 dsl_dir_phys(snap->ds->ds_dir)->dd_origin_obj,
3466 dsl_dataset_t *snap;
3470 snap = new;
3472 err = dsl_dataset_hold_obj(dp, snapobj, FTAG, &snap);
3477 if (dsl_dataset_phys(snap)->ds_prev_snap_txg ==
3487 dsl_deadlist_space(&snap->ds_deadlist,
3490 dsl_deadlist_space_range(&snap->ds_deadlist,
3503 snapobj = dsl_dataset_phys(snap)->ds_prev_snap_obj;
3504 if (snap != new)
3505 dsl_dataset_rele(snap, FTAG);
3523 * This is the set of blocks that were born after the snap before firstsnap,
3524 * (birth > firstsnap->prev_snap_txg) and died before the snap after the
3525 * last snap (ie, is on lastsnap->ds_next->ds_deadlist or an earlier deadlist).
3526 * We calculate this by iterating over the relevant deadlists (from the snap
3527 * after lastsnap, backward to the snap after firstsnap), summing up the
3528 * space on the deadlist that was born after the snap before firstsnap.