Lines Matching refs:dn
133 dnode_t *dn; in dmu_buf_hold_noread() local
138 err = dnode_hold(os, object, FTAG, &dn); in dmu_buf_hold_noread()
141 blkid = dbuf_whichblock(dn, 0, offset); in dmu_buf_hold_noread()
142 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_buf_hold_noread()
143 db = dbuf_hold(dn, blkid, tag); in dmu_buf_hold_noread()
144 rw_exit(&dn->dn_struct_rwlock); in dmu_buf_hold_noread()
145 dnode_rele(dn, FTAG); in dmu_buf_hold_noread()
189 dnode_t *dn; in dmu_set_bonus() local
193 dn = DB_DNODE(db); in dmu_set_bonus()
195 if (dn->dn_bonus != db) { in dmu_set_bonus()
200 dnode_setbonuslen(dn, newsize, tx); in dmu_set_bonus()
212 dnode_t *dn; in dmu_set_bonustype() local
216 dn = DB_DNODE(db); in dmu_set_bonustype()
220 } else if (dn->dn_bonus != db) { in dmu_set_bonustype()
223 dnode_setbonus_type(dn, type, tx); in dmu_set_bonustype()
235 dnode_t *dn; in dmu_get_bonustype() local
239 dn = DB_DNODE(db); in dmu_get_bonustype()
240 type = dn->dn_bonustype; in dmu_get_bonustype()
249 dnode_t *dn; in dmu_rm_spill() local
252 error = dnode_hold(os, object, FTAG, &dn); in dmu_rm_spill()
253 dbuf_rm_spill(dn, tx); in dmu_rm_spill()
254 rw_enter(&dn->dn_struct_rwlock, RW_WRITER); in dmu_rm_spill()
255 dnode_rm_spill(dn, tx); in dmu_rm_spill()
256 rw_exit(&dn->dn_struct_rwlock); in dmu_rm_spill()
257 dnode_rele(dn, FTAG); in dmu_rm_spill()
267 dnode_t *dn; in dmu_bonus_hold() local
271 error = dnode_hold(os, object, FTAG, &dn); in dmu_bonus_hold()
275 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_bonus_hold()
276 if (dn->dn_bonus == NULL) { in dmu_bonus_hold()
277 rw_exit(&dn->dn_struct_rwlock); in dmu_bonus_hold()
278 rw_enter(&dn->dn_struct_rwlock, RW_WRITER); in dmu_bonus_hold()
279 if (dn->dn_bonus == NULL) in dmu_bonus_hold()
280 dbuf_create_bonus(dn); in dmu_bonus_hold()
282 db = dn->dn_bonus; in dmu_bonus_hold()
286 VERIFY(dnode_add_ref(dn, db)); in dmu_bonus_hold()
287 atomic_inc_32(&dn->dn_dbufs_count); in dmu_bonus_hold()
295 rw_exit(&dn->dn_struct_rwlock); in dmu_bonus_hold()
297 dnode_rele(dn, FTAG); in dmu_bonus_hold()
315 dmu_spill_hold_by_dnode(dnode_t *dn, uint32_t flags, void *tag, dmu_buf_t **dbp) in dmu_spill_hold_by_dnode() argument
321 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_spill_hold_by_dnode()
323 db = dbuf_hold(dn, DMU_SPILL_BLKID, tag); in dmu_spill_hold_by_dnode()
326 rw_exit(&dn->dn_struct_rwlock); in dmu_spill_hold_by_dnode()
341 dnode_t *dn; in dmu_spill_hold_existing() local
345 dn = DB_DNODE(db); in dmu_spill_hold_existing()
347 if (spa_version(dn->dn_objset->os_spa) < SPA_VERSION_SA) { in dmu_spill_hold_existing()
350 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_spill_hold_existing()
352 if (!dn->dn_have_spill) { in dmu_spill_hold_existing()
355 err = dmu_spill_hold_by_dnode(dn, in dmu_spill_hold_existing()
359 rw_exit(&dn->dn_struct_rwlock); in dmu_spill_hold_existing()
370 dnode_t *dn; in dmu_spill_hold_by_bonus() local
374 dn = DB_DNODE(db); in dmu_spill_hold_by_bonus()
375 err = dmu_spill_hold_by_dnode(dn, DB_RF_CANFAIL, tag, dbp); in dmu_spill_hold_by_bonus()
388 dmu_buf_hold_array_by_dnode(dnode_t *dn, uint64_t offset, uint64_t length, in dmu_buf_hold_array_by_dnode() argument
403 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_buf_hold_array_by_dnode()
404 if (dn->dn_datablkshift) { in dmu_buf_hold_array_by_dnode()
405 int blkshift = dn->dn_datablkshift; in dmu_buf_hold_array_by_dnode()
409 if (offset + length > dn->dn_datablksz) { in dmu_buf_hold_array_by_dnode()
412 (longlong_t)dn->dn_objset-> in dmu_buf_hold_array_by_dnode()
414 (longlong_t)dn->dn_object, dn->dn_datablksz, in dmu_buf_hold_array_by_dnode()
416 rw_exit(&dn->dn_struct_rwlock); in dmu_buf_hold_array_by_dnode()
423 zio = zio_root(dn->dn_objset->os_spa, NULL, NULL, ZIO_FLAG_CANFAIL); in dmu_buf_hold_array_by_dnode()
424 blkid = dbuf_whichblock(dn, 0, offset); in dmu_buf_hold_array_by_dnode()
426 dmu_buf_impl_t *db = dbuf_hold(dn, blkid+i, tag); in dmu_buf_hold_array_by_dnode()
428 rw_exit(&dn->dn_struct_rwlock); in dmu_buf_hold_array_by_dnode()
439 rw_exit(&dn->dn_struct_rwlock); in dmu_buf_hold_array_by_dnode()
475 dnode_t *dn; in dmu_buf_hold_array() local
478 err = dnode_hold(os, object, FTAG, &dn); in dmu_buf_hold_array()
482 err = dmu_buf_hold_array_by_dnode(dn, offset, length, read, tag, in dmu_buf_hold_array()
485 dnode_rele(dn, FTAG); in dmu_buf_hold_array()
495 dnode_t *dn; in dmu_buf_hold_array_by_bonus() local
499 dn = DB_DNODE(db); in dmu_buf_hold_array_by_bonus()
500 err = dmu_buf_hold_array_by_dnode(dn, offset, length, read, tag, in dmu_buf_hold_array_by_bonus()
536 dnode_t *dn; in dmu_prefetch() local
544 dn = DMU_META_DNODE(os); in dmu_prefetch()
549 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_prefetch()
550 blkid = dbuf_whichblock(dn, level, in dmu_prefetch()
552 dbuf_prefetch(dn, level, blkid, pri, 0); in dmu_prefetch()
553 rw_exit(&dn->dn_struct_rwlock); in dmu_prefetch()
562 err = dnode_hold(os, object, FTAG, &dn); in dmu_prefetch()
566 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_prefetch()
574 if (level > 0 || dn->dn_datablkshift != 0) { in dmu_prefetch()
575 nblks = dbuf_whichblock(dn, level, offset + len - 1) - in dmu_prefetch()
576 dbuf_whichblock(dn, level, offset) + 1; in dmu_prefetch()
578 nblks = (offset < dn->dn_datablksz); in dmu_prefetch()
582 blkid = dbuf_whichblock(dn, level, offset); in dmu_prefetch()
584 dbuf_prefetch(dn, level, blkid + i, pri, 0); in dmu_prefetch()
587 rw_exit(&dn->dn_struct_rwlock); in dmu_prefetch()
589 dnode_rele(dn, FTAG); in dmu_prefetch()
603 get_next_chunk(dnode_t *dn, uint64_t *start, uint64_t minimum) in get_next_chunk() argument
605 uint64_t maxblks = DMU_MAX_ACCESS >> (dn->dn_indblkshift + 1); in get_next_chunk()
608 dn->dn_datablksz * EPB(dn->dn_indblkshift, SPA_BLKPTRSHIFT); in get_next_chunk()
628 err = dnode_next_offset(dn, in get_next_chunk()
648 dmu_free_long_range_impl(objset_t *os, dnode_t *dn, uint64_t offset, in dmu_free_long_range_impl() argument
651 uint64_t object_size = (dn->dn_maxblkid + 1) * dn->dn_datablksz; in dmu_free_long_range_impl()
666 err = get_next_chunk(dn, &chunk_begin, offset); in dmu_free_long_range_impl()
673 dmu_tx_hold_free(tx, dn->dn_object, in dmu_free_long_range_impl()
686 dnode_free_range(dn, chunk_begin, chunk_end - chunk_begin, tx); in dmu_free_long_range_impl()
698 dnode_t *dn; in dmu_free_long_range() local
701 err = dnode_hold(os, object, FTAG, &dn); in dmu_free_long_range()
704 err = dmu_free_long_range_impl(os, dn, offset, length); in dmu_free_long_range()
713 dn->dn_maxblkid = 0; in dmu_free_long_range()
715 dnode_rele(dn, FTAG); in dmu_free_long_range()
748 dnode_t *dn; in dmu_free_range() local
749 int err = dnode_hold(os, object, FTAG, &dn); in dmu_free_range()
754 dnode_free_range(dn, offset, size, tx); in dmu_free_range()
755 dnode_rele(dn, FTAG); in dmu_free_range()
763 dnode_t *dn; in dmu_read() local
767 err = dnode_hold(os, object, FTAG, &dn); in dmu_read()
776 if (dn->dn_maxblkid == 0) { in dmu_read()
777 int newsz = offset > dn->dn_datablksz ? 0 : in dmu_read()
778 MIN(size, dn->dn_datablksz - offset); in dmu_read()
791 err = dmu_buf_hold_array_by_dnode(dn, offset, mylen, in dmu_read()
814 dnode_rele(dn, FTAG); in dmu_read()
1025 dmu_read_uio_dnode(dnode_t *dn, uio_t *uio, uint64_t size) in dmu_read_uio_dnode() argument
1035 err = dmu_buf_hold_array_by_dnode(dn, uio->uio_loffset, size, in dmu_read_uio_dnode()
1094 dnode_t *dn; in dmu_read_uio_dbuf() local
1101 dn = DB_DNODE(db); in dmu_read_uio_dbuf()
1102 err = dmu_read_uio_dnode(dn, uio, size); in dmu_read_uio_dbuf()
1116 dnode_t *dn; in dmu_read_uio() local
1122 err = dnode_hold(os, object, FTAG, &dn); in dmu_read_uio()
1126 err = dmu_read_uio_dnode(dn, uio, size); in dmu_read_uio()
1128 dnode_rele(dn, FTAG); in dmu_read_uio()
1134 dmu_write_uio_dnode(dnode_t *dn, uio_t *uio, uint64_t size, dmu_tx_t *tx) in dmu_write_uio_dnode() argument
1141 err = dmu_buf_hold_array_by_dnode(dn, uio->uio_loffset, size, in dmu_write_uio_dnode()
1199 dnode_t *dn; in dmu_write_uio_dbuf() local
1206 dn = DB_DNODE(db); in dmu_write_uio_dbuf()
1207 err = dmu_write_uio_dnode(dn, uio, size, tx); in dmu_write_uio_dbuf()
1222 dnode_t *dn; in dmu_write_uio() local
1228 err = dnode_hold(os, object, FTAG, &dn); in dmu_write_uio()
1232 err = dmu_write_uio_dnode(dn, uio, size, tx); in dmu_write_uio()
1234 dnode_rele(dn, FTAG); in dmu_write_uio()
1326 dnode_t *dn; in dmu_assign_arcbuf() local
1332 dn = DB_DNODE(dbuf); in dmu_assign_arcbuf()
1333 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_assign_arcbuf()
1334 blkid = dbuf_whichblock(dn, 0, offset); in dmu_assign_arcbuf()
1335 VERIFY((db = dbuf_hold(dn, blkid, FTAG)) != NULL); in dmu_assign_arcbuf()
1336 rw_exit(&dn->dn_struct_rwlock); in dmu_assign_arcbuf()
1354 dn = DB_DNODE(dbuf); in dmu_assign_arcbuf()
1355 os = dn->dn_objset; in dmu_assign_arcbuf()
1356 object = dn->dn_object; in dmu_assign_arcbuf()
1545 dnode_t *dn; in dmu_sync() local
1554 dn = DB_DNODE(db); in dmu_sync()
1555 dmu_write_policy(os, dn, db->db_level, WP_DMU_SYNC, &zp); in dmu_sync()
1627 dn = DB_DNODE(db); in dmu_sync()
1628 if (dr->dr_next != NULL || dnode_block_freed(dn, db->db_blkid)) in dmu_sync()
1667 dnode_t *dn; in dmu_object_set_blocksize() local
1670 err = dnode_hold(os, object, FTAG, &dn); in dmu_object_set_blocksize()
1673 err = dnode_set_blksz(dn, size, ibs, tx); in dmu_object_set_blocksize()
1674 dnode_rele(dn, FTAG); in dmu_object_set_blocksize()
1682 dnode_t *dn; in dmu_object_set_checksum() local
1691 VERIFY0(dnode_hold(os, object, FTAG, &dn)); in dmu_object_set_checksum()
1693 dn->dn_checksum = checksum; in dmu_object_set_checksum()
1694 dnode_setdirty(dn, tx); in dmu_object_set_checksum()
1695 dnode_rele(dn, FTAG); in dmu_object_set_checksum()
1702 dnode_t *dn; in dmu_object_set_compress() local
1711 VERIFY0(dnode_hold(os, object, FTAG, &dn)); in dmu_object_set_compress()
1712 dn->dn_compress = compress; in dmu_object_set_compress()
1713 dnode_setdirty(dn, tx); in dmu_object_set_compress()
1714 dnode_rele(dn, FTAG); in dmu_object_set_compress()
1726 dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, zio_prop_t *zp) in dmu_write_policy() argument
1728 dmu_object_type_t type = dn ? dn->dn_type : DMU_OT_OBJSET; in dmu_write_policy()
1788 compress = zio_compress_select(os->os_spa, dn->dn_compress, in dmu_write_policy()
1792 zio_checksum_select(dn->dn_checksum, checksum) : in dmu_write_policy()
1821 zp->zp_type = (wp & WP_SPILL) ? dn->dn_bonustype : type; in dmu_write_policy()
1832 dnode_t *dn; in dmu_offset_next() local
1844 err = dnode_hold(os, object, FTAG, &dn); in dmu_offset_next()
1849 err = dnode_next_offset(dn, (hole ? DNODE_FIND_HOLE : 0), off, 1, 1, 0); in dmu_offset_next()
1850 dnode_rele(dn, FTAG); in dmu_offset_next()
1864 dnode_t *dn; in dmu_object_wait_synced() local
1867 error = dnode_hold(os, object, FTAG, &dn); in dmu_object_wait_synced()
1873 if (list_link_active(&dn->dn_dirty_link[i])) { in dmu_object_wait_synced()
1877 dnode_rele(dn, FTAG); in dmu_object_wait_synced()
1886 dmu_object_info_from_dnode(dnode_t *dn, dmu_object_info_t *doi) in dmu_object_info_from_dnode() argument
1890 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_object_info_from_dnode()
1891 mutex_enter(&dn->dn_mtx); in dmu_object_info_from_dnode()
1893 dnp = dn->dn_phys; in dmu_object_info_from_dnode()
1895 doi->doi_data_block_size = dn->dn_datablksz; in dmu_object_info_from_dnode()
1896 doi->doi_metadata_block_size = dn->dn_indblkshift ? in dmu_object_info_from_dnode()
1897 1ULL << dn->dn_indblkshift : 0; in dmu_object_info_from_dnode()
1898 doi->doi_type = dn->dn_type; in dmu_object_info_from_dnode()
1899 doi->doi_bonus_type = dn->dn_bonustype; in dmu_object_info_from_dnode()
1900 doi->doi_bonus_size = dn->dn_bonuslen; in dmu_object_info_from_dnode()
1901 doi->doi_indirection = dn->dn_nlevels; in dmu_object_info_from_dnode()
1902 doi->doi_checksum = dn->dn_checksum; in dmu_object_info_from_dnode()
1903 doi->doi_compress = dn->dn_compress; in dmu_object_info_from_dnode()
1904 doi->doi_nblkptr = dn->dn_nblkptr; in dmu_object_info_from_dnode()
1906 doi->doi_max_offset = (dn->dn_maxblkid + 1) * dn->dn_datablksz; in dmu_object_info_from_dnode()
1911 mutex_exit(&dn->dn_mtx); in dmu_object_info_from_dnode()
1912 rw_exit(&dn->dn_struct_rwlock); in dmu_object_info_from_dnode()
1922 dnode_t *dn; in dmu_object_info() local
1923 int err = dnode_hold(os, object, FTAG, &dn); in dmu_object_info()
1929 dmu_object_info_from_dnode(dn, doi); in dmu_object_info()
1931 dnode_rele(dn, FTAG); in dmu_object_info()
1957 dnode_t *dn; in dmu_object_size_from_db() local
1960 dn = DB_DNODE(db); in dmu_object_size_from_db()
1962 *blksize = dn->dn_datablksz; in dmu_object_size_from_db()
1964 *nblk512 = ((DN_USED_BYTES(dn->dn_phys) + SPA_MINBLOCKSIZE/2) >> in dmu_object_size_from_db()