Lines Matching refs:db

44 	dmu_buf_impl_t *db;  in dnode_increase_indirection()  local
57 db = dbuf_hold_level(dn, dn->dn_phys->dn_nlevels, 0, FTAG); in dnode_increase_indirection()
58 ASSERT(db != NULL); in dnode_increase_indirection()
78 (void) dbuf_read(db, NULL, DB_RF_MUST_SUCCEED|DB_RF_HAVESTRUCT); in dnode_increase_indirection()
81 rw_enter(&db->db_rwlock, RW_WRITER); in dnode_increase_indirection()
82 ASSERT(db->db.db_data); in dnode_increase_indirection()
83 ASSERT(arc_released(db->db_buf)); in dnode_increase_indirection()
84 ASSERT3U(sizeof (blkptr_t) * nblkptr, <=, db->db.db_size); in dnode_increase_indirection()
85 bcopy(dn->dn_phys->dn_blkptr, db->db.db_data, in dnode_increase_indirection()
87 arc_buf_freeze(db->db_buf); in dnode_increase_indirection()
101 ASSERT(child->db_parent->db_level == db->db_level); in dnode_increase_indirection()
110 child->db_parent = db; in dnode_increase_indirection()
111 dbuf_add_ref(db, child); in dnode_increase_indirection()
112 if (db->db.db_data) in dnode_increase_indirection()
113 child->db_blkptr = (blkptr_t *)db->db.db_data + i; in dnode_increase_indirection()
124 rw_exit(&db->db_rwlock); in dnode_increase_indirection()
128 dbuf_rele(db, FTAG); in dnode_increase_indirection()
175 free_verify(dmu_buf_impl_t *db, uint64_t start, uint64_t end, dmu_tx_t *tx) in free_verify() argument
182 DB_DNODE_ENTER(db); in free_verify()
183 dn = DB_DNODE(db); in free_verify()
185 off = start - (db->db_blkid * 1<<epbs); in free_verify()
190 ASSERT3U(db->db_level, >, 0); in free_verify()
191 ASSERT3U(db->db.db_size, ==, 1 << dn->dn_phys->dn_indblkshift); in free_verify()
192 ASSERT3U(off+num, <=, db->db.db_size >> SPA_BLKPTRSHIFT); in free_verify()
193 ASSERT(db->db_blkptr != NULL); in free_verify()
201 ASSERT(db->db_level == 1); in free_verify()
204 err = dbuf_hold_impl(dn, db->db_level - 1, in free_verify()
205 (db->db_blkid << epbs) + i, TRUE, FALSE, FTAG, &child); in free_verify()
219 for (j = 0; j < child->db.db_size >> 3; j++) { in free_verify()
233 buf = child->db.db_data; in free_verify()
236 for (j = 0; j < child->db.db_size >> 3; j++) { in free_verify()
248 DB_DNODE_EXIT(db); in free_verify()
268 free_children(dmu_buf_impl_t *db, uint64_t blkid, uint64_t nblks, in free_children() argument
283 if (db->db_state != DB_CACHED) in free_children()
284 (void) dbuf_read(db, NULL, DB_RF_MUST_SUCCEED); in free_children()
302 db_lock_type_t dblt = dmu_buf_lock_parent(db, RW_READER, FTAG); in free_children()
303 VERIFY(BP_GET_FILL(db->db_blkptr) == 0 || db->db_dirtycnt > 0); in free_children()
304 dmu_buf_unlock_parent(db, dblt, FTAG); in free_children()
306 dbuf_release_bp(db); in free_children()
307 bp = db->db.db_data; in free_children()
309 DB_DNODE_ENTER(db); in free_children()
310 dn = DB_DNODE(db); in free_children()
313 shift = (db->db_level - 1) * epbs; in free_children()
314 dbstart = db->db_blkid << epbs; in free_children()
321 dbend = ((db->db_blkid + 1) << epbs) - 1; in free_children()
328 if (db->db_level == 1) { in free_children()
329 FREE_VERIFY(db, start, end, tx); in free_children()
330 rw_enter(&db->db_rwlock, RW_WRITER); in free_children()
332 rw_exit(&db->db_rwlock); in free_children()
338 VERIFY0(dbuf_hold_impl(dn, db->db_level - 1, in free_children()
349 rw_enter(&db->db_rwlock, RW_WRITER); in free_children()
350 for (i = 0, bp = db->db.db_data; i < 1 << epbs; i++, bp++) in free_children()
352 bzero(db->db.db_data, db->db.db_size); in free_children()
353 free_blocks(dn, db->db_blkptr, 1, tx); in free_children()
354 rw_exit(&db->db_rwlock); in free_children()
357 DB_DNODE_EXIT(db); in free_children()
358 arc_buf_freeze(db->db_buf); in free_children()
395 dmu_buf_impl_t *db; in dnode_sync_free_range_impl() local
404 TRUE, FALSE, FTAG, &db)); in dnode_sync_free_range_impl()
406 free_children(db, blkid, nblks, free_indirects, tx); in dnode_sync_free_range_impl()
407 dbuf_rele(db, FTAG); in dnode_sync_free_range_impl()
461 dmu_buf_impl_t *db, *db_next; in dnode_evict_dbufs() local
464 for (db = avl_first(&dn->dn_dbufs); db != NULL; db = db_next) { in dnode_evict_dbufs()
467 DB_DNODE_ENTER(db); in dnode_evict_dbufs()
468 ASSERT3P(DB_DNODE(db), ==, dn); in dnode_evict_dbufs()
469 DB_DNODE_EXIT(db); in dnode_evict_dbufs()
472 mutex_enter(&db->db_mtx); in dnode_evict_dbufs()
473 if (db->db_state != DB_EVICTING && in dnode_evict_dbufs()
474 zfs_refcount_is_zero(&db->db_holds)) { in dnode_evict_dbufs()
475 db_marker.db_level = db->db_level; in dnode_evict_dbufs()
476 db_marker.db_blkid = db->db_blkid; in dnode_evict_dbufs()
478 avl_insert_here(&dn->dn_dbufs, &db_marker, db, in dnode_evict_dbufs()
494 dbuf_destroy(db); in dnode_evict_dbufs()
499 db->db_pending_evict = TRUE; in dnode_evict_dbufs()
500 mutex_exit(&db->db_mtx); in dnode_evict_dbufs()
501 db_next = AVL_NEXT(&dn->dn_dbufs, db); in dnode_evict_dbufs()
531 dmu_buf_impl_t *db = dr->dr_dbuf; in dnode_undirty_dbufs() local
534 if (db->db_level != 0) in dnode_undirty_dbufs()
537 mutex_enter(&db->db_mtx); in dnode_undirty_dbufs()
540 ASSERT(db->db_last_dirty == dr); in dnode_undirty_dbufs()
541 db->db_last_dirty = NULL; in dnode_undirty_dbufs()
542 db->db_dirtycnt -= 1; in dnode_undirty_dbufs()
543 if (db->db_level == 0) { in dnode_undirty_dbufs()
544 ASSERT(db->db_blkid == DMU_BONUS_BLKID || in dnode_undirty_dbufs()
545 dr->dt.dl.dr_data == db->db_buf); in dnode_undirty_dbufs()
552 dbuf_rele_and_unlock(db, (void *)(uintptr_t)txg, B_FALSE); in dnode_undirty_dbufs()
595 dmu_buf_will_dirty(&dn->dn_dbuf->db, tx); in dnode_sync_free()