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
407 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_buf_hold_array_by_dnode()
408 if (dn->dn_datablkshift) { in dmu_buf_hold_array_by_dnode()
409 int blkshift = dn->dn_datablkshift; in dmu_buf_hold_array_by_dnode()
413 if (offset + length > dn->dn_datablksz) { in dmu_buf_hold_array_by_dnode()
416 (longlong_t)dn->dn_objset-> in dmu_buf_hold_array_by_dnode()
418 (longlong_t)dn->dn_object, dn->dn_datablksz, in dmu_buf_hold_array_by_dnode()
420 rw_exit(&dn->dn_struct_rwlock); in dmu_buf_hold_array_by_dnode()
427 zio = zio_root(dn->dn_objset->os_spa, NULL, NULL, ZIO_FLAG_CANFAIL); in dmu_buf_hold_array_by_dnode()
428 blkid = dbuf_whichblock(dn, 0, offset); in dmu_buf_hold_array_by_dnode()
430 dmu_buf_impl_t *db = dbuf_hold(dn, blkid + i, tag); in dmu_buf_hold_array_by_dnode()
432 rw_exit(&dn->dn_struct_rwlock); in dmu_buf_hold_array_by_dnode()
446 dmu_zfetch(&dn->dn_zfetch, blkid, nblks); in dmu_buf_hold_array_by_dnode()
448 rw_exit(&dn->dn_struct_rwlock); in dmu_buf_hold_array_by_dnode()
484 dnode_t *dn; in dmu_buf_hold_array() local
487 err = dnode_hold(os, object, FTAG, &dn); in dmu_buf_hold_array()
491 err = dmu_buf_hold_array_by_dnode(dn, offset, length, read, tag, in dmu_buf_hold_array()
494 dnode_rele(dn, FTAG); in dmu_buf_hold_array()
505 dnode_t *dn; in dmu_buf_hold_array_by_bonus() local
509 dn = DB_DNODE(db); in dmu_buf_hold_array_by_bonus()
510 err = dmu_buf_hold_array_by_dnode(dn, offset, length, read, tag, in dmu_buf_hold_array_by_bonus()
546 dnode_t *dn; in dmu_prefetch() local
551 dn = DMU_META_DNODE(os); in dmu_prefetch()
556 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_prefetch()
557 blkid = dbuf_whichblock(dn, level, in dmu_prefetch()
559 dbuf_prefetch(dn, level, blkid, pri, 0); in dmu_prefetch()
560 rw_exit(&dn->dn_struct_rwlock); in dmu_prefetch()
569 err = dnode_hold(os, object, FTAG, &dn); in dmu_prefetch()
573 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_prefetch()
581 if (level > 0 || dn->dn_datablkshift != 0) { in dmu_prefetch()
582 nblks = dbuf_whichblock(dn, level, offset + len - 1) - in dmu_prefetch()
583 dbuf_whichblock(dn, level, offset) + 1; in dmu_prefetch()
585 nblks = (offset < dn->dn_datablksz); in dmu_prefetch()
589 blkid = dbuf_whichblock(dn, level, offset); in dmu_prefetch()
591 dbuf_prefetch(dn, level, blkid + i, pri, 0); in dmu_prefetch()
594 rw_exit(&dn->dn_struct_rwlock); in dmu_prefetch()
596 dnode_rele(dn, FTAG); in dmu_prefetch()
610 get_next_chunk(dnode_t *dn, uint64_t *start, uint64_t minimum) in get_next_chunk() argument
612 uint64_t maxblks = DMU_MAX_ACCESS >> (dn->dn_indblkshift + 1); in get_next_chunk()
615 dn->dn_datablksz * EPB(dn->dn_indblkshift, SPA_BLKPTRSHIFT); in get_next_chunk()
635 err = dnode_next_offset(dn, in get_next_chunk()
655 dmu_free_long_range_impl(objset_t *os, dnode_t *dn, uint64_t offset, in dmu_free_long_range_impl() argument
658 uint64_t object_size = (dn->dn_maxblkid + 1) * dn->dn_datablksz; in dmu_free_long_range_impl()
673 err = get_next_chunk(dn, &chunk_begin, offset); in dmu_free_long_range_impl()
680 dmu_tx_hold_free(tx, dn->dn_object, in dmu_free_long_range_impl()
693 dnode_free_range(dn, chunk_begin, chunk_end - chunk_begin, tx); in dmu_free_long_range_impl()
705 dnode_t *dn; in dmu_free_long_range() local
708 err = dnode_hold(os, object, FTAG, &dn); in dmu_free_long_range()
711 err = dmu_free_long_range_impl(os, dn, offset, length); in dmu_free_long_range()
720 dn->dn_maxblkid = 0; in dmu_free_long_range()
722 dnode_rele(dn, FTAG); in dmu_free_long_range()
755 dnode_t *dn; in dmu_free_range() local
756 int err = dnode_hold(os, object, FTAG, &dn); in dmu_free_range()
761 dnode_free_range(dn, offset, size, tx); in dmu_free_range()
762 dnode_rele(dn, FTAG); in dmu_free_range()
770 dnode_t *dn; in dmu_read() local
774 err = dnode_hold(os, object, FTAG, &dn); in dmu_read()
783 if (dn->dn_maxblkid == 0) { in dmu_read()
784 int newsz = offset > dn->dn_datablksz ? 0 : in dmu_read()
785 MIN(size, dn->dn_datablksz - offset); in dmu_read()
798 err = dmu_buf_hold_array_by_dnode(dn, offset, mylen, in dmu_read()
821 dnode_rele(dn, FTAG); in dmu_read()
1032 dmu_read_uio_dnode(dnode_t *dn, uio_t *uio, uint64_t size) in dmu_read_uio_dnode() argument
1042 err = dmu_buf_hold_array_by_dnode(dn, uio->uio_loffset, size, in dmu_read_uio_dnode()
1101 dnode_t *dn; in dmu_read_uio_dbuf() local
1108 dn = DB_DNODE(db); in dmu_read_uio_dbuf()
1109 err = dmu_read_uio_dnode(dn, uio, size); in dmu_read_uio_dbuf()
1123 dnode_t *dn; in dmu_read_uio() local
1129 err = dnode_hold(os, object, FTAG, &dn); in dmu_read_uio()
1133 err = dmu_read_uio_dnode(dn, uio, size); in dmu_read_uio()
1135 dnode_rele(dn, FTAG); in dmu_read_uio()
1141 dmu_write_uio_dnode(dnode_t *dn, uio_t *uio, uint64_t size, dmu_tx_t *tx) in dmu_write_uio_dnode() argument
1148 err = dmu_buf_hold_array_by_dnode(dn, uio->uio_loffset, size, in dmu_write_uio_dnode()
1206 dnode_t *dn; in dmu_write_uio_dbuf() local
1213 dn = DB_DNODE(db); in dmu_write_uio_dbuf()
1214 err = dmu_write_uio_dnode(dn, uio, size, tx); in dmu_write_uio_dbuf()
1229 dnode_t *dn; in dmu_write_uio() local
1235 err = dnode_hold(os, object, FTAG, &dn); in dmu_write_uio()
1239 err = dmu_write_uio_dnode(dn, uio, size, tx); in dmu_write_uio()
1241 dnode_rele(dn, FTAG); in dmu_write_uio()
1333 dnode_t *dn; in dmu_assign_arcbuf() local
1339 dn = DB_DNODE(dbuf); in dmu_assign_arcbuf()
1340 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_assign_arcbuf()
1341 blkid = dbuf_whichblock(dn, 0, offset); in dmu_assign_arcbuf()
1342 VERIFY((db = dbuf_hold(dn, blkid, FTAG)) != NULL); in dmu_assign_arcbuf()
1343 rw_exit(&dn->dn_struct_rwlock); in dmu_assign_arcbuf()
1361 dn = DB_DNODE(dbuf); in dmu_assign_arcbuf()
1362 os = dn->dn_objset; in dmu_assign_arcbuf()
1363 object = dn->dn_object; in dmu_assign_arcbuf()
1553 dnode_t *dn; in dmu_sync() local
1562 dn = DB_DNODE(db); in dmu_sync()
1563 dmu_write_policy(os, dn, db->db_level, WP_DMU_SYNC, &zp); in dmu_sync()
1635 dn = DB_DNODE(db); in dmu_sync()
1636 if (dr->dr_next != NULL || dnode_block_freed(dn, db->db_blkid)) in dmu_sync()
1675 dnode_t *dn; in dmu_object_set_blocksize() local
1678 err = dnode_hold(os, object, FTAG, &dn); in dmu_object_set_blocksize()
1681 err = dnode_set_blksz(dn, size, ibs, tx); in dmu_object_set_blocksize()
1682 dnode_rele(dn, FTAG); in dmu_object_set_blocksize()
1690 dnode_t *dn; in dmu_object_set_checksum() local
1699 VERIFY0(dnode_hold(os, object, FTAG, &dn)); in dmu_object_set_checksum()
1701 dn->dn_checksum = checksum; in dmu_object_set_checksum()
1702 dnode_setdirty(dn, tx); in dmu_object_set_checksum()
1703 dnode_rele(dn, FTAG); in dmu_object_set_checksum()
1710 dnode_t *dn; in dmu_object_set_compress() local
1719 VERIFY0(dnode_hold(os, object, FTAG, &dn)); in dmu_object_set_compress()
1720 dn->dn_compress = compress; in dmu_object_set_compress()
1721 dnode_setdirty(dn, tx); in dmu_object_set_compress()
1722 dnode_rele(dn, FTAG); in dmu_object_set_compress()
1734 dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, zio_prop_t *zp) in dmu_write_policy() argument
1736 dmu_object_type_t type = dn ? dn->dn_type : DMU_OT_OBJSET; in dmu_write_policy()
1798 compress = zio_compress_select(os->os_spa, dn->dn_compress, in dmu_write_policy()
1802 zio_checksum_select(dn->dn_checksum, checksum) : in dmu_write_policy()
1834 zp->zp_type = (wp & WP_SPILL) ? dn->dn_bonustype : type; in dmu_write_policy()
1845 dnode_t *dn; in dmu_offset_next() local
1857 err = dnode_hold(os, object, FTAG, &dn); in dmu_offset_next()
1862 err = dnode_next_offset(dn, (hole ? DNODE_FIND_HOLE : 0), off, 1, 1, 0); in dmu_offset_next()
1863 dnode_rele(dn, FTAG); in dmu_offset_next()
1878 dnode_t *dn; in dmu_object_wait_synced() local
1881 error = dnode_hold(os, object, FTAG, &dn); in dmu_object_wait_synced()
1887 if (list_link_active(&dn->dn_dirty_link[i])) { in dmu_object_wait_synced()
1891 dnode_rele(dn, FTAG); in dmu_object_wait_synced()
1900 dmu_object_info_from_dnode(dnode_t *dn, dmu_object_info_t *doi) in dmu_object_info_from_dnode() argument
1904 rw_enter(&dn->dn_struct_rwlock, RW_READER); in dmu_object_info_from_dnode()
1905 mutex_enter(&dn->dn_mtx); in dmu_object_info_from_dnode()
1907 dnp = dn->dn_phys; in dmu_object_info_from_dnode()
1909 doi->doi_data_block_size = dn->dn_datablksz; in dmu_object_info_from_dnode()
1910 doi->doi_metadata_block_size = dn->dn_indblkshift ? in dmu_object_info_from_dnode()
1911 1ULL << dn->dn_indblkshift : 0; in dmu_object_info_from_dnode()
1912 doi->doi_type = dn->dn_type; in dmu_object_info_from_dnode()
1913 doi->doi_bonus_type = dn->dn_bonustype; in dmu_object_info_from_dnode()
1914 doi->doi_bonus_size = dn->dn_bonuslen; in dmu_object_info_from_dnode()
1915 doi->doi_indirection = dn->dn_nlevels; in dmu_object_info_from_dnode()
1916 doi->doi_checksum = dn->dn_checksum; in dmu_object_info_from_dnode()
1917 doi->doi_compress = dn->dn_compress; in dmu_object_info_from_dnode()
1918 doi->doi_nblkptr = dn->dn_nblkptr; in dmu_object_info_from_dnode()
1920 doi->doi_max_offset = (dn->dn_maxblkid + 1) * dn->dn_datablksz; in dmu_object_info_from_dnode()
1925 mutex_exit(&dn->dn_mtx); in dmu_object_info_from_dnode()
1926 rw_exit(&dn->dn_struct_rwlock); in dmu_object_info_from_dnode()
1936 dnode_t *dn; in dmu_object_info() local
1937 int err = dnode_hold(os, object, FTAG, &dn); in dmu_object_info()
1943 dmu_object_info_from_dnode(dn, doi); in dmu_object_info()
1945 dnode_rele(dn, FTAG); in dmu_object_info()
1971 dnode_t *dn; in dmu_object_size_from_db() local
1974 dn = DB_DNODE(db); in dmu_object_size_from_db()
1976 *blksize = dn->dn_datablksz; in dmu_object_size_from_db()
1978 *nblk512 = ((DN_USED_BYTES(dn->dn_phys) + SPA_MINBLOCKSIZE/2) >> in dmu_object_size_from_db()