Lines Matching defs:bre
718 brt_vdev_addref(spa_t *spa, brt_vdev_t *brtvd, const brt_entry_t *bre,
728 if (bre->bre_count > 0)
733 idx = BRE_OFFSET(bre) / spa->spa_brt_rangesize;
751 brt_vdev_decref(spa_t *spa, brt_vdev_t *brtvd, const brt_entry_t *bre,
762 if (bre->bre_count > 0)
767 idx = BRE_OFFSET(bre) / spa->spa_brt_rangesize;
847 brt_entry_fill(const blkptr_t *bp, brt_entry_t *bre, uint64_t *vdevidp)
850 bre->bre_bp = *bp;
851 bre->bre_count = 0;
852 bre->bre_pcount = 0;
858 brt_entry_lookup(brt_vdev_t *brtvd, brt_entry_t *bre)
860 uint64_t off = BRE_OFFSET(bre);
866 &off, BRT_KEY_WORDS, 1, sizeof (bre->bre_count), &bre->bre_count));
1036 brt_entry_t *bre, *racebre;
1049 bre = avl_find(&brtvd->bv_tree, &bre_search, NULL);
1050 if (bre != NULL) {
1071 bre = racebre;
1076 bre = kmem_cache_alloc(brt_entry_cache, KM_SLEEP);
1077 bre->bre_bp = bre_search.bre_bp;
1078 bre->bre_count = bre_search.bre_count;
1079 bre->bre_pcount = 0;
1080 avl_insert(&brtvd->bv_tree, bre, where);
1083 if (bre->bre_count == 0) {
1089 bre->bre_pcount--;
1090 ASSERT(bre->bre_count > 0);
1091 bre->bre_count--;
1092 if (bre->bre_count == 0)
1096 brt_vdev_decref(spa, brtvd, bre, bp_get_dsize_sync(spa, bp));
1106 brt_entry_t bre_search, *bre;
1117 bre = avl_find(&brtvd->bv_tree, &bre_search, NULL);
1118 if (bre == NULL) {
1128 refcnt = bre->bre_count;
1163 brt_entry_t *bre, *newbre;
1180 bre = avl_find(pending_tree, newbre, &where);
1181 if (bre == NULL) {
1185 bre->bre_pcount++;
1190 ASSERT(bre != NULL);
1191 ASSERT(bre != newbre);
1194 ASSERT0P(bre);
1204 brt_entry_t *bre, bre_search;
1218 bre = avl_find(pending_tree, &bre_search, NULL);
1219 ASSERT(bre != NULL);
1220 ASSERT(bre->bre_pcount > 0);
1221 bre->bre_pcount--;
1222 if (bre->bre_pcount == 0)
1223 avl_remove(pending_tree, bre);
1225 bre = NULL;
1228 if (bre)
1229 kmem_cache_free(brt_entry_cache, bre);
1235 brt_entry_t *bre, *nbre;
1244 for (bre = avl_first(&brtvd->bv_tree); bre; bre = nbre) {
1245 nbre = AVL_NEXT(&brtvd->bv_tree, bre);
1252 if (BP_GET_DEDUP(&bre->bre_bp)) {
1253 while (bre->bre_pcount > 0) {
1254 if (!ddt_addref(spa, &bre->bre_bp))
1256 bre->bre_pcount--;
1258 if (bre->bre_pcount == 0) {
1259 avl_remove(&brtvd->bv_tree, bre);
1260 kmem_cache_free(brt_entry_cache, bre);
1269 uint64_t off = BRE_OFFSET(bre);
1274 BRT_KEY_WORDS, 1, sizeof (bre->bre_count),
1275 &bre->bre_count);
1303 for (bre = avl_first(&brtvd->bv_tree); bre;
1304 bre = AVL_NEXT(&brtvd->bv_tree, bre)) {
1305 brt_vdev_addref(spa, brtvd, bre,
1306 bp_get_dsize(spa, &bre->bre_bp), bre->bre_pcount);
1307 bre->bre_count += bre->bre_pcount;
1328 brt_sync_entry(dnode_t *dn, brt_entry_t *bre, dmu_tx_t *tx)
1330 uint64_t off = BRE_OFFSET(bre);
1332 if (bre->bre_pcount == 0) {
1334 } else if (bre->bre_count == 0) {
1340 BRT_KEY_WORDS, 1, sizeof (bre->bre_count),
1341 &bre->bre_count, tx));
1348 brt_entry_t *bre;
1369 while ((bre = avl_destroy_nodes(&brtvd->bv_tree, &c)) != NULL) {
1370 brt_sync_entry(brtvd->bv_mos_entries_dnode, bre, tx);
1371 kmem_cache_free(brt_entry_cache, bre);