Lines Matching defs:dbn
333 dsl_bookmark_node_t *dbn = kmem_alloc(sizeof (*dbn), KM_SLEEP);
334 dbn->dbn_name = spa_strdup(shortname);
335 dbn->dbn_dirty = B_FALSE;
336 mutex_init(&dbn->dbn_lock, NULL, MUTEX_DEFAULT, NULL);
337 return (dbn);
388 * Add dsl_bookmark_node_t `dbn` to the given dataset and increment appropriate
392 dsl_bookmark_node_add(dsl_dataset_t *hds, dsl_bookmark_node_t *dbn,
411 avl_add(&hds->ds_bookmarks, dbn);
420 (dbn->dbn_phys.zbm_ivset_guid != 0 || dbn->dbn_phys.zbm_flags &
421 ZBM_FLAG_HAS_FBN || dbn->dbn_phys.zbm_redaction_obj != 0)) {
427 ASSERT0(memcmp(((char *)&dbn->dbn_phys) + bookmark_phys_size,
430 VERIFY0(zap_add(mos, hds->ds_bookmarks_obj, dbn->dbn_name,
432 &dbn->dbn_phys, tx));
456 dsl_bookmark_node_t *dbn = dsl_bookmark_node_alloc(shortname);
457 dsl_bookmark_set_phys(&dbn->dbn_phys, snapds);
472 dbn->dbn_phys.zbm_redaction_obj = dmu_object_alloc(mos,
483 dbn->dbn_phys.zbm_redaction_obj, tag, &local_rl));
513 if (dbn->dbn_phys.zbm_flags & ZBM_FLAG_HAS_FBN) {
518 dsl_bookmark_node_add(bmark_fs, dbn, tx);
522 shortname, (longlong_t)dbn->dbn_phys.zbm_creation_txg,
524 (longlong_t)dbn->dbn_phys.zbm_redaction_obj);
804 for (dsl_bookmark_node_t *dbn = avl_first(&ds->ds_bookmarks);
805 dbn != NULL; dbn = AVL_NEXT(&ds->ds_bookmarks, dbn)) {
808 dsl_bookmark_fetch_props(dp, &dbn->dbn_phys, props, out_props);
810 fnvlist_add_nvlist(outnvl, dbn->dbn_name, out_props);
879 dsl_bookmark_node_t *dbn =
883 dbn->dbn_name, &dbn->dbn_phys);
886 kmem_free(dbn, sizeof (*dbn));
889 avl_add(&ds->ds_bookmarks, dbn);
902 dsl_bookmark_node_t *dbn;
907 while ((dbn = avl_destroy_nodes(&ds->ds_bookmarks, &cookie)) != NULL) {
908 spa_strfree(dbn->dbn_name);
909 mutex_destroy(&dbn->dbn_lock);
910 kmem_free(dbn, sizeof (*dbn));
1019 dsl_bookmark_node_t *dbn = avl_find(&ds->ds_bookmarks, &search, NULL);
1020 ASSERT(dbn != NULL);
1022 if (dbn->dbn_phys.zbm_flags & ZBM_FLAG_HAS_FBN) {
1040 AVL_PREV(&ds->ds_bookmarks, dbn);
1042 AVL_NEXT(&ds->ds_bookmarks, dbn);
1046 dbn->dbn_phys.zbm_creation_txg &&
1049 dbn->dbn_phys.zbm_creation_txg &&
1052 if (!(dbn->dbn_phys.zbm_flags & ZBM_FLAG_SNAPSHOT_EXISTS) &&
1054 dbn->dbn_phys.zbm_creation_txg <
1057 dbn->dbn_phys.zbm_creation_txg, tx);
1059 dbn->dbn_phys.zbm_creation_txg, tx);
1066 if (dbn->dbn_phys.zbm_redaction_obj != 0) {
1069 dbn->dbn_phys.zbm_redaction_obj, FTAG, &rl));
1076 dbn->dbn_phys.zbm_redaction_obj, tx));
1081 avl_remove(&ds->ds_bookmarks, dbn);
1082 spa_strfree(dbn->dbn_name);
1083 mutex_destroy(&dbn->dbn_lock);
1084 kmem_free(dbn, sizeof (*dbn));
1336 dsl_bookmark_node_t *dbn =
1344 for (; dbn != NULL && dbn->dbn_phys.zbm_creation_txg <
1346 dbn = AVL_NEXT(&head->ds_bookmarks, dbn)) {
1347 if (!(dbn->dbn_phys.zbm_flags & ZBM_FLAG_HAS_FBN))
1359 0, dbn->dbn_phys.zbm_creation_txg,
1361 dbn->dbn_phys.zbm_referenced_freed_before_next_snap +=
1363 dbn->dbn_phys.zbm_compressed_freed_before_next_snap +=
1365 dbn->dbn_phys.zbm_uncompressed_freed_before_next_snap +=
1368 dbn->dbn_name, sizeof (uint64_t),
1370 &dbn->dbn_phys, tx));
1382 for (; dbn != NULL && dbn->dbn_phys.zbm_creation_txg ==
1384 dbn = AVL_NEXT(&head->ds_bookmarks, dbn)) {
1385 if (!(dbn->dbn_phys.zbm_flags & ZBM_FLAG_HAS_FBN)) {
1386 ASSERT(!(dbn->dbn_phys.zbm_flags &
1390 ASSERT(dbn->dbn_phys.zbm_flags & ZBM_FLAG_SNAPSHOT_EXISTS);
1391 dbn->dbn_phys.zbm_flags &= ~ZBM_FLAG_SNAPSHOT_EXISTS;
1393 dbn->dbn_name, sizeof (uint64_t),
1395 &dbn->dbn_phys, tx));
1416 for (dsl_bookmark_node_t *dbn = avl_last(&ds->ds_bookmarks);
1417 dbn != NULL && dbn->dbn_phys.zbm_creation_txg >
1419 dbn = AVL_PREV(&ds->ds_bookmarks, dbn)) {
1420 uint64_t creation_txg = dbn->dbn_phys.zbm_creation_txg;
1428 if ((dbn->dbn_phys.zbm_flags & ZBM_FLAG_HAS_FBN) &&
1463 dsl_bookmark_node_t *dbn =
1470 for (; dbn != NULL && dbn->dbn_phys.zbm_creation_txg ==
1472 (dbn->dbn_phys.zbm_flags & ZBM_FLAG_HAS_FBN);
1473 dbn = AVL_NEXT(&head->ds_bookmarks, dbn)) {
1481 ASSERT3U(dbn->dbn_phys.zbm_guid, ==,
1483 ASSERT3U(dbn->dbn_phys.zbm_referenced_bytes_refd, ==,
1485 ASSERT(dbn->dbn_phys.zbm_flags &
1492 dbn->dbn_phys.zbm_redaction_obj;
1493 dsl_bookmark_set_phys(&dbn->dbn_phys, origin);
1494 dbn->dbn_phys.zbm_redaction_obj = redaction_obj;
1497 dbn->dbn_name, sizeof (uint64_t),
1499 &dbn->dbn_phys, tx));
1517 for (dsl_bookmark_node_t *dbn = avl_last(&ds->ds_bookmarks);
1518 dbn != NULL && dbn->dbn_phys.zbm_creation_txg >=
1520 dbn = AVL_PREV(&ds->ds_bookmarks, dbn)) {
1526 dbn->dbn_phys.zbm_creation_txg &&
1527 (dbn->dbn_phys.zbm_flags & ZBM_FLAG_HAS_FBN)) {
1528 mutex_enter(&dbn->dbn_lock);
1529 dbn->dbn_phys.zbm_referenced_freed_before_next_snap +=
1531 dbn->dbn_phys.zbm_compressed_freed_before_next_snap +=
1533 dbn->dbn_phys.zbm_uncompressed_freed_before_next_snap +=
1543 dbn->dbn_dirty = B_TRUE;
1544 mutex_exit(&dbn->dbn_lock);
1563 for (dsl_bookmark_node_t *dbn = avl_last(&ds->ds_bookmarks);
1564 dbn != NULL && dbn->dbn_phys.zbm_creation_txg >=
1566 dbn = AVL_PREV(&ds->ds_bookmarks, dbn)) {
1567 if (dbn->dbn_dirty) {
1572 ASSERT(dbn->dbn_phys.zbm_flags & ZBM_FLAG_HAS_FBN);
1575 dbn->dbn_name, sizeof (uint64_t),
1577 &dbn->dbn_phys, tx));
1578 dbn->dbn_dirty = B_FALSE;
1582 for (dsl_bookmark_node_t *dbn = avl_first(&ds->ds_bookmarks);
1583 dbn != NULL; dbn = AVL_NEXT(&ds->ds_bookmarks, dbn)) {
1584 ASSERT(!dbn->dbn_dirty);
1596 dsl_bookmark_node_t *dbn = avl_last(&ds->ds_bookmarks);
1597 if (dbn == NULL)
1599 return (dbn->dbn_phys.zbm_creation_txg);