Lines Matching refs:dn

248 	dnode_t *dn;  in dbuf_find_bonus()  local
251 if (dnode_hold(os, object, FTAG, &dn) == 0) { in dbuf_find_bonus()
252 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dbuf_find_bonus()
253 if (dn->dn_bonus != NULL) { in dbuf_find_bonus()
254 db = dn->dn_bonus; in dbuf_find_bonus()
257 rw_exit(&dn->dn_struct_rwlock); in dbuf_find_bonus()
258 dnode_rele(dn, FTAG); in dbuf_find_bonus()
721 dnode_t *dn; in dbuf_verify() local
731 dn = DB_DNODE(db); in dbuf_verify()
732 if (dn == NULL) { in dbuf_verify()
736 ASSERT3U(db->db.db_object, ==, dn->dn_object); in dbuf_verify()
737 ASSERT3P(db->db_objset, ==, dn->dn_objset); in dbuf_verify()
738 ASSERT3U(db->db_level, <, dn->dn_nlevels); in dbuf_verify()
741 !avl_is_empty(&dn->dn_dbufs)); in dbuf_verify()
744 ASSERT(dn != NULL); in dbuf_verify()
745 ASSERT3U(db->db.db_size, >=, dn->dn_bonuslen); in dbuf_verify()
748 ASSERT(dn != NULL); in dbuf_verify()
776 if (db->db_parent == dn->dn_dbuf) { in dbuf_verify()
785 &dn->dn_phys->dn_blkptr[db->db_blkid]); in dbuf_verify()
807 db->db_state != DB_FILL && !dn->dn_free_txg) { in dbuf_verify()
954 dbuf_whichblock(dnode_t *dn, int64_t level, uint64_t offset) in dbuf_whichblock() argument
956 if (dn->dn_datablkshift != 0 && dn->dn_indblkshift != 0) { in dbuf_whichblock()
976 return (offset >> (dn->dn_datablkshift + level * in dbuf_whichblock()
977 (dn->dn_indblkshift - SPA_BLKPTRSHIFT))); in dbuf_whichblock()
979 ASSERT3U(offset, <, dn->dn_datablksz); in dbuf_whichblock()
1047 dnode_t *dn; in dbuf_read_verify_dnode_crypt() local
1057 dn = DB_DNODE(db); in dbuf_read_verify_dnode_crypt()
1058 dnode_abuf = (dn->dn_dbuf != NULL) ? dn->dn_dbuf->db_buf : NULL; in dbuf_read_verify_dnode_crypt()
1066 DMU_META_DNODE_OBJECT, 0, dn->dn_dbuf->db_blkid); in dbuf_read_verify_dnode_crypt()
1075 !DMU_OT_IS_ENCRYPTED(dn->dn_type)) || in dbuf_read_verify_dnode_crypt()
1077 !DMU_OT_IS_ENCRYPTED(dn->dn_bonustype)))) in dbuf_read_verify_dnode_crypt()
1093 dnode_t *dn; in dbuf_read_impl() local
1099 dn = DB_DNODE(db); in dbuf_read_impl()
1112 int bonuslen = MIN(dn->dn_bonuslen, dn->dn_phys->dn_bonuslen); in dbuf_read_impl()
1113 int max_bonuslen = DN_SLOTS_TO_BONUSLEN(dn->dn_num_slots); in dbuf_read_impl()
1129 bcopy(DN_BONUS(dn->dn_phys), db->db.db_data, bonuslen); in dbuf_read_impl()
1143 (db->db_level == 0 && (dnode_block_freed(dn, db->db_blkid) || in dbuf_read_impl()
1160 1 << dn->dn_indblkshift); in dbuf_read_impl()
1163 dn->dn_datablksz : in dbuf_read_impl()
1271 dnode_t *dn = DB_DNODE(db); in dbuf_fix_old_data() local
1272 int bonuslen = DN_SLOTS_TO_BONUSLEN(dn->dn_num_slots); in dbuf_fix_old_data()
1277 dnode_t *dn = DB_DNODE(db); in dbuf_fix_old_data() local
1293 dmu_objset_id(dn->dn_objset), byteorder, salt, iv, in dbuf_fix_old_data()
1294 mac, dn->dn_type, size, arc_buf_lsize(db->db_buf), in dbuf_fix_old_data()
1315 dnode_t *dn; in dbuf_read() local
1327 dn = DB_DNODE(db); in dbuf_read()
1330 (flags & DB_RF_NOPREFETCH) == 0 && dn != NULL && in dbuf_read()
1335 spa_t *spa = dn->dn_objset->os_spa; in dbuf_read()
1365 dmu_zfetch(&dn->dn_zfetch, db->db_blkid, 1, B_TRUE, in dbuf_read()
1370 spa_t *spa = dn->dn_objset->os_spa; in dbuf_read()
1386 dmu_zfetch(&dn->dn_zfetch, db->db_blkid, 1, B_TRUE, in dbuf_read()
1405 dmu_zfetch(&dn->dn_zfetch, db->db_blkid, 1, B_TRUE, in dbuf_read()
1501 dbuf_free_range(dnode_t *dn, uint64_t start_blkid, uint64_t end_blkid, in dbuf_free_range() argument
1509 if (end_blkid > dn->dn_maxblkid && in dbuf_free_range()
1511 end_blkid = dn->dn_maxblkid; in dbuf_free_range()
1512 dprintf_dnode(dn, "start=%llu end=%llu\n", start_blkid, end_blkid); in dbuf_free_range()
1518 mutex_enter(&dn->dn_dbufs_mtx); in dbuf_free_range()
1519 db = avl_find(&dn->dn_dbufs, &db_search, &where); in dbuf_free_range()
1522 db = avl_nearest(&dn->dn_dbufs, where, AVL_AFTER); in dbuf_free_range()
1525 db_next = AVL_NEXT(&dn->dn_dbufs, db); in dbuf_free_range()
1570 db->db_blkid > dn->dn_maxblkid) in dbuf_free_range()
1571 dn->dn_maxblkid = db->db_blkid; in dbuf_free_range()
1595 mutex_exit(&dn->dn_dbufs_mtx); in dbuf_free_range()
1604 dnode_t *dn; in dbuf_new_size() local
1609 dn = DB_DNODE(db); in dbuf_new_size()
1618 buf = arc_alloc_buf(dn->dn_objset->os_spa, db, type, size); in dbuf_new_size()
1638 dmu_objset_willuse_space(dn->dn_objset, size - osize, tx); in dbuf_new_size()
1684 dnode_t *dn; in dbuf_dirty() local
1695 dn = DB_DNODE(db); in dbuf_dirty()
1702 if (dn->dn_objset->os_dsl_dataset != NULL) { in dbuf_dirty()
1703 rrw_enter(&dn->dn_objset->os_dsl_dataset->ds_bp_rwlock, in dbuf_dirty()
1707 BP_IS_HOLE(dn->dn_objset->os_rootbp) || in dbuf_dirty()
1708 DMU_OBJECT_IS_SPECIAL(dn->dn_object) || in dbuf_dirty()
1709 dn->dn_objset->os_dsl_dataset == NULL); in dbuf_dirty()
1710 if (dn->dn_objset->os_dsl_dataset != NULL) in dbuf_dirty()
1711 rrw_exit(&dn->dn_objset->os_dsl_dataset->ds_bp_rwlock, FTAG); in dbuf_dirty()
1718 ASSERT(dn->dn_object == DMU_META_DNODE_OBJECT || in dbuf_dirty()
1719 dn->dn_dirtyctx == DN_UNDIRTIED || dn->dn_dirtyctx == in dbuf_dirty()
1732 mutex_enter(&dn->dn_mtx); in dbuf_dirty()
1737 if (dn->dn_dirtyctx == DN_UNDIRTIED) { in dbuf_dirty()
1738 if (dn->dn_objset->os_dsl_dataset != NULL) { in dbuf_dirty()
1739 rrw_enter(&dn->dn_objset->os_dsl_dataset->ds_bp_rwlock, in dbuf_dirty()
1742 if (!BP_IS_HOLE(dn->dn_objset->os_rootbp)) { in dbuf_dirty()
1743 dn->dn_dirtyctx = (dmu_tx_is_syncing(tx) ? in dbuf_dirty()
1745 ASSERT(dn->dn_dirtyctx_firstset == NULL); in dbuf_dirty()
1746 dn->dn_dirtyctx_firstset = kmem_alloc(1, KM_SLEEP); in dbuf_dirty()
1748 if (dn->dn_objset->os_dsl_dataset != NULL) { in dbuf_dirty()
1749 rrw_exit(&dn->dn_objset->os_dsl_dataset->ds_bp_rwlock, in dbuf_dirty()
1754 if (tx->tx_txg > dn->dn_dirty_txg) in dbuf_dirty()
1755 dn->dn_dirty_txg = tx->tx_txg; in dbuf_dirty()
1756 mutex_exit(&dn->dn_mtx); in dbuf_dirty()
1759 dn->dn_have_spill = B_TRUE; in dbuf_dirty()
1780 ASSERT(dn->dn_object == 0 || in dbuf_dirty()
1781 dn->dn_dirtyctx == DN_UNDIRTIED || dn->dn_dirtyctx == in dbuf_dirty()
1784 ASSERT3U(dn->dn_nlevels, >, db->db_level); in dbuf_dirty()
1793 os = dn->dn_objset; in dbuf_dirty()
1796 if (dn->dn_objset->os_dsl_dataset != NULL) in dbuf_dirty()
1798 ASSERT(!dmu_tx_is_syncing(tx) || DMU_OBJECT_IS_SPECIAL(dn->dn_object) || in dbuf_dirty()
1800 if (dn->dn_objset->os_dsl_dataset != NULL) in dbuf_dirty()
1861 mutex_enter(&dn->dn_mtx); in dbuf_dirty()
1862 if (dn->dn_free_ranges[txgoff] != NULL) { in dbuf_dirty()
1863 range_tree_clear(dn->dn_free_ranges[txgoff], in dbuf_dirty()
1866 mutex_exit(&dn->dn_mtx); in dbuf_dirty()
1881 mutex_enter(&dn->dn_mtx); in dbuf_dirty()
1883 list_insert_tail(&dn->dn_dirty_records[txgoff], dr); in dbuf_dirty()
1884 mutex_exit(&dn->dn_mtx); in dbuf_dirty()
1885 dnode_setdirty(dn, tx); in dbuf_dirty()
1890 if (!RW_WRITE_HELD(&dn->dn_struct_rwlock)) { in dbuf_dirty()
1891 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dbuf_dirty()
1911 ASSERT((dn->dn_phys->dn_nlevels == 0 && db->db_level == 0) || in dbuf_dirty()
1912 dn->dn_phys->dn_nlevels > db->db_level || in dbuf_dirty()
1913 dn->dn_next_nlevels[txgoff] > db->db_level || in dbuf_dirty()
1914 dn->dn_next_nlevels[(tx->tx_txg-1) & TXG_MASK] > db->db_level || in dbuf_dirty()
1915 dn->dn_next_nlevels[(tx->tx_txg-2) & TXG_MASK] > db->db_level); in dbuf_dirty()
1920 dn->dn_maxblkid >= db->db_blkid); in dbuf_dirty()
1921 dnode_new_blkid(dn, db->db_blkid, tx, in dbuf_dirty()
1923 ASSERT(dn->dn_maxblkid >= db->db_blkid); in dbuf_dirty()
1926 if (db->db_level+1 < dn->dn_nlevels) { in dbuf_dirty()
1931 if (db->db_parent == NULL || db->db_parent == dn->dn_dbuf) { in dbuf_dirty()
1932 int epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; in dbuf_dirty()
1933 parent = dbuf_hold_level(dn, db->db_level + 1, in dbuf_dirty()
1939 rw_exit(&dn->dn_struct_rwlock); in dbuf_dirty()
1951 dn->dn_object == DMU_META_DNODE_OBJECT) { in dbuf_dirty()
1961 ASSERT(db->db_level + 1 == dn->dn_nlevels); in dbuf_dirty()
1962 ASSERT(db->db_blkid < dn->dn_nblkptr); in dbuf_dirty()
1963 ASSERT(db->db_parent == NULL || db->db_parent == dn->dn_dbuf); in dbuf_dirty()
1964 mutex_enter(&dn->dn_mtx); in dbuf_dirty()
1966 list_insert_tail(&dn->dn_dirty_records[txgoff], dr); in dbuf_dirty()
1967 mutex_exit(&dn->dn_mtx); in dbuf_dirty()
1969 rw_exit(&dn->dn_struct_rwlock); in dbuf_dirty()
1972 dnode_setdirty(dn, tx); in dbuf_dirty()
1984 dnode_t *dn; in dbuf_undirty() local
2015 dn = DB_DNODE(db); in dbuf_undirty()
2021 dsl_pool_undirty_space(dmu_objset_pool(dn->dn_objset), in dbuf_undirty()
2037 db->db_level + 1 == dn->dn_nlevels) { in dbuf_undirty()
2038 ASSERT(db->db_blkptr == NULL || db->db_parent == dn->dn_dbuf); in dbuf_undirty()
2039 mutex_enter(&dn->dn_mtx); in dbuf_undirty()
2040 list_remove(&dn->dn_dirty_records[txg & TXG_MASK], dr); in dbuf_undirty()
2041 mutex_exit(&dn->dn_mtx); in dbuf_undirty()
2313 dnode_t *dn; in dbuf_destroy() local
2363 dn = DB_DNODE(db); in dbuf_destroy()
2364 dndb = dn->dn_dbuf; in dbuf_destroy()
2366 boolean_t needlock = !MUTEX_HELD(&dn->dn_dbufs_mtx); in dbuf_destroy()
2368 mutex_enter(&dn->dn_dbufs_mtx); in dbuf_destroy()
2369 avl_remove(&dn->dn_dbufs, db); in dbuf_destroy()
2370 atomic_dec_32(&dn->dn_dbufs_count); in dbuf_destroy()
2374 mutex_exit(&dn->dn_dbufs_mtx); in dbuf_destroy()
2383 mutex_enter(&dn->dn_mtx); in dbuf_destroy()
2384 dnode_rele_and_unlock(dn, db, B_TRUE); in dbuf_destroy()
2424 dbuf_findbp(dnode_t *dn, int level, uint64_t blkid, int fail_sparse, in dbuf_findbp() argument
2433 mutex_enter(&dn->dn_mtx); in dbuf_findbp()
2434 if (dn->dn_have_spill && in dbuf_findbp()
2435 (dn->dn_phys->dn_flags & DNODE_FLAG_SPILL_BLKPTR)) in dbuf_findbp()
2436 *bpp = DN_SPILL_BLKPTR(dn->dn_phys); in dbuf_findbp()
2439 dbuf_add_ref(dn->dn_dbuf, NULL); in dbuf_findbp()
2440 *parentp = dn->dn_dbuf; in dbuf_findbp()
2441 mutex_exit(&dn->dn_mtx); in dbuf_findbp()
2446 (dn->dn_phys->dn_nlevels == 0) ? 1 : dn->dn_phys->dn_nlevels; in dbuf_findbp()
2447 int epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT; in dbuf_findbp()
2450 ASSERT(RW_LOCK_HELD(&dn->dn_struct_rwlock)); in dbuf_findbp()
2468 highbit64(dn->dn_phys->dn_nblkptr) <= 64); in dbuf_findbp()
2470 blkid >= ((uint64_t)dn->dn_phys->dn_nblkptr << in dbuf_findbp()
2473 blkid > (dn->dn_phys->dn_maxblkid >> (level * epbs)))) { in dbuf_findbp()
2478 int err = dbuf_hold_impl(dn, level+1, in dbuf_findbp()
2492 if (blkid > (dn->dn_phys->dn_maxblkid >> (level * epbs))) in dbuf_findbp()
2499 ASSERT(dn->dn_phys->dn_nblkptr == 0 || in dbuf_findbp()
2500 blkid < dn->dn_phys->dn_nblkptr); in dbuf_findbp()
2501 if (dn->dn_dbuf) { in dbuf_findbp()
2502 dbuf_add_ref(dn->dn_dbuf, NULL); in dbuf_findbp()
2503 *parentp = dn->dn_dbuf; in dbuf_findbp()
2505 *bpp = &dn->dn_phys->dn_blkptr[blkid]; in dbuf_findbp()
2511 dbuf_create(dnode_t *dn, uint8_t level, uint64_t blkid, in dbuf_create() argument
2514 objset_t *os = dn->dn_objset; in dbuf_create()
2517 ASSERT(RW_LOCK_HELD(&dn->dn_struct_rwlock)); in dbuf_create()
2518 ASSERT(dn->dn_type != DMU_OT_NONE); in dbuf_create()
2523 db->db.db_object = dn->dn_object; in dbuf_create()
2528 db->db_dnode_handle = dn->dn_handle; in dbuf_create()
2538 ASSERT3P(parent, ==, dn->dn_dbuf); in dbuf_create()
2539 db->db.db_size = DN_SLOTS_TO_BONUSLEN(dn->dn_num_slots) - in dbuf_create()
2540 (dn->dn_nblkptr-1) * sizeof (blkptr_t); in dbuf_create()
2541 ASSERT3U(db->db.db_size, >=, dn->dn_bonuslen); in dbuf_create()
2554 db->db_level ? 1 << dn->dn_indblkshift : dn->dn_datablksz; in dbuf_create()
2566 mutex_enter(&dn->dn_dbufs_mtx); in dbuf_create()
2571 mutex_exit(&dn->dn_dbufs_mtx); in dbuf_create()
2574 avl_add(&dn->dn_dbufs, db); in dbuf_create()
2578 mutex_exit(&dn->dn_dbufs_mtx); in dbuf_create()
2581 if (parent && parent != dn->dn_dbuf) in dbuf_create()
2584 ASSERT(dn->dn_object == DMU_META_DNODE_OBJECT || in dbuf_create()
2585 zfs_refcount_count(&dn->dn_holds) > 0); in dbuf_create()
2586 (void) zfs_refcount_add(&dn->dn_holds, db); in dbuf_create()
2587 atomic_inc_32(&dn->dn_dbufs_count); in dbuf_create()
2750 dbuf_prefetch_impl(dnode_t *dn, int64_t level, uint64_t blkid, in dbuf_prefetch_impl() argument
2759 ASSERT(RW_LOCK_HELD(&dn->dn_struct_rwlock)); in dbuf_prefetch_impl()
2761 if (blkid > dn->dn_maxblkid) in dbuf_prefetch_impl()
2764 if (level == 0 && dnode_block_freed(dn, blkid)) in dbuf_prefetch_impl()
2771 nlevels = dn->dn_phys->dn_nlevels; in dbuf_prefetch_impl()
2772 if (level >= nlevels || dn->dn_phys->dn_nblkptr == 0) in dbuf_prefetch_impl()
2775 epbs = dn->dn_phys->dn_indblkshift - SPA_BLKPTRSHIFT; in dbuf_prefetch_impl()
2776 if (dn->dn_phys->dn_maxblkid < blkid << (epbs * level)) in dbuf_prefetch_impl()
2779 dmu_buf_impl_t *db = dbuf_find(dn->dn_objset, dn->dn_object, in dbuf_prefetch_impl()
2802 if (dbuf_hold_impl(dn, parent_level, parent_blkid, in dbuf_prefetch_impl()
2816 ASSERT3U(curblkid, <, dn->dn_phys->dn_nblkptr); in dbuf_prefetch_impl()
2817 bp = dn->dn_phys->dn_blkptr[curblkid]; in dbuf_prefetch_impl()
2824 zio_t *pio = zio_root(dmu_objset_spa(dn->dn_objset), NULL, NULL, in dbuf_prefetch_impl()
2828 dsl_dataset_t *ds = dn->dn_objset->os_dsl_dataset; in dbuf_prefetch_impl()
2830 dn->dn_object, level, blkid); in dbuf_prefetch_impl()
2834 dpa->dpa_spa = dn->dn_objset->os_spa; in dbuf_prefetch_impl()
2835 dpa->dpa_dnode = dn; in dbuf_prefetch_impl()
2842 if (DNODE_LEVEL_IS_L2CACHEABLE(dn, level)) in dbuf_prefetch_impl()
2860 if (DNODE_LEVEL_IS_L2CACHEABLE(dn, level)) in dbuf_prefetch_impl()
2864 dn->dn_object, curlevel, curblkid); in dbuf_prefetch_impl()
2883 dbuf_prefetch(dnode_t *dn, int64_t level, uint64_t blkid, zio_priority_t prio, in dbuf_prefetch() argument
2887 return (dbuf_prefetch_impl(dn, level, blkid, prio, aflags, NULL, NULL)); in dbuf_prefetch()
2899 dbuf_hold_copy(dnode_t *dn, dmu_buf_impl_t *db, dbuf_dirty_record_t *dr) in dbuf_hold_copy() argument
2911 dbuf_set_data(db, arc_alloc_raw_buf(dn->dn_objset->os_spa, db, in dbuf_hold_copy()
2912 dmu_objset_id(dn->dn_objset), byteorder, salt, iv, mac, in dbuf_hold_copy()
2913 dn->dn_type, arc_buf_size(data), arc_buf_lsize(data), in dbuf_hold_copy()
2917 dn->dn_objset->os_spa, db, arc_buf_size(data), in dbuf_hold_copy()
2920 dbuf_set_data(db, arc_alloc_buf(dn->dn_objset->os_spa, db, in dbuf_hold_copy()
2934 dbuf_hold_impl(dnode_t *dn, uint8_t level, uint64_t blkid, in dbuf_hold_impl() argument
2941 ASSERT(RW_LOCK_HELD(&dn->dn_struct_rwlock)); in dbuf_hold_impl()
2942 ASSERT3U(dn->dn_nlevels, >, level); in dbuf_hold_impl()
2947 db = dbuf_find(dn->dn_objset, dn->dn_object, level, blkid); in dbuf_hold_impl()
2957 err = dbuf_findbp(dn, level, blkid, fail_sparse, &parent, &bp); in dbuf_hold_impl()
2969 db = dbuf_create(dn, level, blkid, parent, bp); in dbuf_hold_impl()
2990 dn->dn_object != DMU_META_DNODE_OBJECT && in dbuf_hold_impl()
2994 dbuf_hold_copy(dn, db, dr); in dbuf_hold_impl()
3017 ASSERT3P(DB_DNODE(db), ==, dn); in dbuf_hold_impl()
3026 dbuf_hold(dnode_t *dn, uint64_t blkid, void *tag) in dbuf_hold() argument
3028 return (dbuf_hold_level(dn, 0, blkid, tag)); in dbuf_hold()
3032 dbuf_hold_level(dnode_t *dn, int level, uint64_t blkid, void *tag) in dbuf_hold_level() argument
3035 int err = dbuf_hold_impl(dn, level, blkid, FALSE, FALSE, tag, &db); in dbuf_hold_level()
3040 dbuf_create_bonus(dnode_t *dn) in dbuf_create_bonus() argument
3042 ASSERT(RW_WRITE_HELD(&dn->dn_struct_rwlock)); in dbuf_create_bonus()
3044 ASSERT(dn->dn_bonus == NULL); in dbuf_create_bonus()
3045 dn->dn_bonus = dbuf_create(dn, 0, DMU_BONUS_BLKID, dn->dn_dbuf, NULL); in dbuf_create_bonus()
3066 dbuf_rm_spill(dnode_t *dn, dmu_tx_t *tx) in dbuf_rm_spill() argument
3068 dbuf_free_range(dn, DMU_SPILL_BLKID, DMU_SPILL_BLKID, tx); in dbuf_rm_spill()
3167 dnode_t *dn; in dbuf_rele_and_unlock() local
3176 dn = DB_DNODE(db); in dbuf_rele_and_unlock()
3177 atomic_dec_32(&dn->dn_dbufs_count); in dbuf_rele_and_unlock()
3194 dnode_evict_bonus(dn); in dbuf_rele_and_unlock()
3196 dnode_rele(dn, db); in dbuf_rele_and_unlock()
3360 dbuf_check_blkptr(dnode_t *dn, dmu_buf_impl_t *db) in dbuf_check_blkptr() argument
3369 db->db_blkptr = DN_SPILL_BLKPTR(dn->dn_phys); in dbuf_check_blkptr()
3373 if (db->db_level == dn->dn_phys->dn_nlevels-1) { in dbuf_check_blkptr()
3379 ASSERT(db->db_blkid < dn->dn_phys->dn_nblkptr); in dbuf_check_blkptr()
3381 db->db_parent = dn->dn_dbuf; in dbuf_check_blkptr()
3382 db->db_blkptr = &dn->dn_phys->dn_blkptr[db->db_blkid]; in dbuf_check_blkptr()
3386 int epbs = dn->dn_phys->dn_indblkshift - SPA_BLKPTRSHIFT; in dbuf_check_blkptr()
3388 ASSERT(dn->dn_phys->dn_nlevels > 1); in dbuf_check_blkptr()
3391 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dbuf_check_blkptr()
3392 parent = dbuf_hold_level(dn, db->db_level + 1, in dbuf_check_blkptr()
3394 rw_exit(&dn->dn_struct_rwlock); in dbuf_check_blkptr()
3452 dnode_t *dn; in dbuf_sync_indirect() local
3474 dn = DB_DNODE(db); in dbuf_sync_indirect()
3476 ASSERT3U(db->db.db_size, ==, 1<<dn->dn_phys->dn_indblkshift); in dbuf_sync_indirect()
3477 dbuf_check_blkptr(dn, db); in dbuf_sync_indirect()
3500 dnode_t *dn; in dbuf_sync_leaf() local
3525 dn = DB_DNODE(db); in dbuf_sync_leaf()
3528 mutex_enter(&dn->dn_mtx); in dbuf_sync_leaf()
3529 dn->dn_phys->dn_flags |= DNODE_FLAG_SPILL_BLKPTR; in dbuf_sync_leaf()
3530 mutex_exit(&dn->dn_mtx); in dbuf_sync_leaf()
3544 ASSERT3U(DN_MAX_BONUS_LEN(dn->dn_phys), <=, in dbuf_sync_leaf()
3545 DN_SLOTS_TO_BONUSLEN(dn->dn_phys->dn_extra_slots + 1)); in dbuf_sync_leaf()
3546 bcopy(*datap, DN_BONUS(dn->dn_phys), in dbuf_sync_leaf()
3547 DN_MAX_BONUS_LEN(dn->dn_phys)); in dbuf_sync_leaf()
3570 os = dn->dn_objset; in dbuf_sync_leaf()
3578 dbuf_check_blkptr(dn, db); in dbuf_sync_leaf()
3585 ASSERT(dn->dn_object != DMU_META_DNODE_OBJECT); in dbuf_sync_leaf()
3594 if (os->os_encrypted && dn->dn_object == DMU_META_DNODE_OBJECT) in dbuf_sync_leaf()
3598 dn->dn_object != DMU_META_DNODE_OBJECT && in dbuf_sync_leaf()
3627 dn->dn_type, psize, lsize, compress_type); in dbuf_sync_leaf()
3644 if (dn->dn_object == DMU_META_DNODE_OBJECT) { in dbuf_sync_leaf()
3645 list_insert_tail(&dn->dn_dirty_records[txg&TXG_MASK], dr); in dbuf_sync_leaf()
3695 dnode_t *dn; in dbuf_write_ready() local
3707 dn = DB_DNODE(db); in dbuf_write_ready()
3709 dnode_diduse_space(dn, delta - zio->io_prev_space_delta); in dbuf_write_ready()
3714 BP_GET_TYPE(bp) == dn->dn_type) || in dbuf_write_ready()
3716 BP_GET_TYPE(bp) == dn->dn_bonustype) || in dbuf_write_ready()
3725 ASSERT(dn->dn_phys->dn_flags & DNODE_FLAG_SPILL_BLKPTR); in dbuf_write_ready()
3727 db->db_blkptr == DN_SPILL_BLKPTR(dn->dn_phys)); in dbuf_write_ready()
3732 mutex_enter(&dn->dn_mtx); in dbuf_write_ready()
3733 if (db->db_blkid > dn->dn_phys->dn_maxblkid && in dbuf_write_ready()
3736 dn->dn_phys->dn_maxblkid = db->db_blkid; in dbuf_write_ready()
3738 mutex_exit(&dn->dn_mtx); in dbuf_write_ready()
3740 if (dn->dn_type == DMU_OT_DNODE) { in dbuf_write_ready()
3762 ASSERT3U(db->db.db_size, ==, 1<<dn->dn_phys->dn_indblkshift); in dbuf_write_ready()
3793 dnode_t *dn; in dbuf_write_children_ready() local
3799 dn = DB_DNODE(db); in dbuf_write_children_ready()
3800 epbs = dn->dn_phys->dn_indblkshift - SPA_BLKPTRSHIFT; in dbuf_write_children_ready()
3898 dnode_t *dn; in dbuf_write_done() local
3901 dn = DB_DNODE(db); in dbuf_write_done()
3902 ASSERT(dn->dn_phys->dn_flags & DNODE_FLAG_SPILL_BLKPTR); in dbuf_write_done()
3904 db->db_blkptr == DN_SPILL_BLKPTR(dn->dn_phys)); in dbuf_write_done()
3917 dnode_t *dn; in dbuf_write_done() local
3920 dn = DB_DNODE(db); in dbuf_write_done()
3922 ASSERT3U(db->db.db_size, ==, 1 << dn->dn_phys->dn_indblkshift); in dbuf_write_done()
3925 dn->dn_phys->dn_indblkshift - SPA_BLKPTRSHIFT; in dbuf_write_done()
3927 dn->dn_phys->dn_maxblkid >> (db->db_level * epbs)); in dbuf_write_done()
4011 dbuf_remap_impl(dnode_t *dn, blkptr_t *bp, krwlock_t *rw, dmu_tx_t *tx) in dbuf_remap_impl() argument
4014 spa_t *spa = dmu_objset_spa(dn->dn_objset); in dbuf_remap_impl()
4019 drica.drica_os = dn->dn_objset; in dbuf_remap_impl()
4068 dnode_needs_remap(const dnode_t *dn) in dnode_needs_remap() argument
4070 spa_t *spa = dmu_objset_spa(dn->dn_objset); in dnode_needs_remap()
4073 if (dn->dn_phys->dn_nlevels == 0) { in dnode_needs_remap()
4080 for (int j = 0; j < dn->dn_phys->dn_nblkptr; j++) { in dnode_needs_remap()
4081 blkptr_t bp_copy = dn->dn_phys->dn_blkptr[j]; in dnode_needs_remap()
4096 dbuf_remap(dnode_t *dn, dmu_buf_impl_t *db, dmu_tx_t *tx) in dbuf_remap() argument
4107 dbuf_remap_impl(dn, &bp[i], &db->db_rwlock, tx); in dbuf_remap()
4115 krwlock_t *lock = (dn->dn_dbuf == NULL ? NULL : in dbuf_remap()
4116 &dn->dn_dbuf->db_rwlock); in dbuf_remap()
4117 dbuf_remap_impl(dn, &dnp[i].dn_blkptr[j], lock, in dbuf_remap()
4130 dnode_t *dn; in dbuf_write() local
4142 dn = DB_DNODE(db); in dbuf_write()
4143 os = dn->dn_objset; in dbuf_write()
4146 if (db->db_level > 0 || dn->dn_type == DMU_OT_DNODE) { in dbuf_write()
4158 dbuf_remap(dn, db, tx); in dbuf_write()
4162 if (parent != dn->dn_dbuf) { in dbuf_write()
4176 ASSERT((db->db_level == dn->dn_phys->dn_nlevels-1 && in dbuf_write()
4181 &dn->dn_phys->dn_blkptr[db->db_blkid]); in dbuf_write()
4182 zio = dn->dn_zio; in dbuf_write()
4197 dmu_write_policy(os, dn, db->db_level, wp_flag, &zp); in dbuf_write()