Lines Matching defs:dn
133 dnode_t *dn;
138 err = dnode_hold(os, object, FTAG, &dn);
141 blkid = dbuf_whichblock(dn, 0, offset);
142 rw_enter(&dn->dn_struct_rwlock, RW_READER);
143 db = dbuf_hold(dn, blkid, tag);
144 rw_exit(&dn->dn_struct_rwlock);
145 dnode_rele(dn, FTAG);
189 dnode_t *dn;
193 dn = DB_DNODE(db);
195 if (dn->dn_bonus != db) {
200 dnode_setbonuslen(dn, newsize, tx);
212 dnode_t *dn;
216 dn = DB_DNODE(db);
220 } else if (dn->dn_bonus != db) {
223 dnode_setbonus_type(dn, type, tx);
235 dnode_t *dn;
239 dn = DB_DNODE(db);
240 type = dn->dn_bonustype;
249 dnode_t *dn;
252 error = dnode_hold(os, object, FTAG, &dn);
253 dbuf_rm_spill(dn, tx);
254 rw_enter(&dn->dn_struct_rwlock, RW_WRITER);
255 dnode_rm_spill(dn, tx);
256 rw_exit(&dn->dn_struct_rwlock);
257 dnode_rele(dn, FTAG);
267 dnode_t *dn;
271 error = dnode_hold(os, object, FTAG, &dn);
275 rw_enter(&dn->dn_struct_rwlock, RW_READER);
276 if (dn->dn_bonus == NULL) {
277 rw_exit(&dn->dn_struct_rwlock);
278 rw_enter(&dn->dn_struct_rwlock, RW_WRITER);
279 if (dn->dn_bonus == NULL)
280 dbuf_create_bonus(dn);
282 db = dn->dn_bonus;
286 VERIFY(dnode_add_ref(dn, db));
287 atomic_inc_32(&dn->dn_dbufs_count);
295 rw_exit(&dn->dn_struct_rwlock);
297 dnode_rele(dn, FTAG);
315 dmu_spill_hold_by_dnode(dnode_t *dn, uint32_t flags, void *tag, dmu_buf_t **dbp)
321 rw_enter(&dn->dn_struct_rwlock, RW_READER);
323 db = dbuf_hold(dn, DMU_SPILL_BLKID, tag);
326 rw_exit(&dn->dn_struct_rwlock);
341 dnode_t *dn;
345 dn = DB_DNODE(db);
347 if (spa_version(dn->dn_objset->os_spa) < SPA_VERSION_SA) {
350 rw_enter(&dn->dn_struct_rwlock, RW_READER);
352 if (!dn->dn_have_spill) {
355 err = dmu_spill_hold_by_dnode(dn,
359 rw_exit(&dn->dn_struct_rwlock);
370 dnode_t *dn;
374 dn = DB_DNODE(db);
375 err = dmu_spill_hold_by_dnode(dn, DB_RF_CANFAIL, tag, dbp);
388 dmu_buf_hold_array_by_dnode(dnode_t *dn, uint64_t offset, uint64_t length,
407 rw_enter(&dn->dn_struct_rwlock, RW_READER);
408 if (dn->dn_datablkshift) {
409 int blkshift = dn->dn_datablkshift;
413 if (offset + length > dn->dn_datablksz) {
416 (longlong_t)dn->dn_objset->
418 (longlong_t)dn->dn_object, dn->dn_datablksz,
420 rw_exit(&dn->dn_struct_rwlock);
427 zio = zio_root(dn->dn_objset->os_spa, NULL, NULL, ZIO_FLAG_CANFAIL);
428 blkid = dbuf_whichblock(dn, 0, offset);
430 dmu_buf_impl_t *db = dbuf_hold(dn, blkid + i, tag);
432 rw_exit(&dn->dn_struct_rwlock);
446 dmu_zfetch(&dn->dn_zfetch, blkid, nblks);
448 rw_exit(&dn->dn_struct_rwlock);
484 dnode_t *dn;
487 err = dnode_hold(os, object, FTAG, &dn);
491 err = dmu_buf_hold_array_by_dnode(dn, offset, length, read, tag,
494 dnode_rele(dn, FTAG);
505 dnode_t *dn;
509 dn = DB_DNODE(db);
510 err = dmu_buf_hold_array_by_dnode(dn, offset, length, read, tag,
546 dnode_t *dn;
551 dn = DMU_META_DNODE(os);
556 rw_enter(&dn->dn_struct_rwlock, RW_READER);
557 blkid = dbuf_whichblock(dn, level,
559 dbuf_prefetch(dn, level, blkid, pri, 0);
560 rw_exit(&dn->dn_struct_rwlock);
569 err = dnode_hold(os, object, FTAG, &dn);
573 rw_enter(&dn->dn_struct_rwlock, RW_READER);
576 * is the first. Then dbuf_whichblk(dn, level, off + len - 1) is the
577 * last block we want to prefetch, and dbuf_whichblock(dn, level,
581 if (level > 0 || dn->dn_datablkshift != 0) {
582 nblks = dbuf_whichblock(dn, level, offset + len - 1) -
583 dbuf_whichblock(dn, level, offset) + 1;
585 nblks = (offset < dn->dn_datablksz);
589 blkid = dbuf_whichblock(dn, level, offset);
591 dbuf_prefetch(dn, level, blkid + i, pri, 0);
594 rw_exit(&dn->dn_struct_rwlock);
596 dnode_rele(dn, FTAG);
610 get_next_chunk(dnode_t *dn, uint64_t *start, uint64_t minimum)
612 uint64_t maxblks = DMU_MAX_ACCESS >> (dn->dn_indblkshift + 1);
615 dn->dn_datablksz * EPB(dn->dn_indblkshift, SPA_BLKPTRSHIFT);
635 err = dnode_next_offset(dn,
655 dmu_free_long_range_impl(objset_t *os, dnode_t *dn, uint64_t offset,
658 uint64_t object_size = (dn->dn_maxblkid + 1) * dn->dn_datablksz;
673 err = get_next_chunk(dn, &chunk_begin, offset);
680 dmu_tx_hold_free(tx, dn->dn_object,
693 dnode_free_range(dn, chunk_begin, chunk_end - chunk_begin, tx);
705 dnode_t *dn;
708 err = dnode_hold(os, object, FTAG, &dn);
711 err = dmu_free_long_range_impl(os, dn, offset, length);
720 dn->dn_maxblkid = 0;
722 dnode_rele(dn, FTAG);
755 dnode_t *dn;
756 int err = dnode_hold(os, object, FTAG, &dn);
761 dnode_free_range(dn, offset, size, tx);
762 dnode_rele(dn, FTAG);
770 dnode_t *dn;
774 err = dnode_hold(os, object, FTAG, &dn);
783 if (dn->dn_maxblkid == 0) {
784 int newsz = offset > dn->dn_datablksz ? 0 :
785 MIN(size, dn->dn_datablksz - offset);
798 err = dmu_buf_hold_array_by_dnode(dn, offset, mylen,
821 dnode_rele(dn, FTAG);
1032 dmu_read_uio_dnode(dnode_t *dn, uio_t *uio, uint64_t size)
1042 err = dmu_buf_hold_array_by_dnode(dn, uio->uio_loffset, size,
1101 dnode_t *dn;
1108 dn = DB_DNODE(db);
1109 err = dmu_read_uio_dnode(dn, uio, size);
1123 dnode_t *dn;
1129 err = dnode_hold(os, object, FTAG, &dn);
1133 err = dmu_read_uio_dnode(dn, uio, size);
1135 dnode_rele(dn, FTAG);
1141 dmu_write_uio_dnode(dnode_t *dn, uio_t *uio, uint64_t size, dmu_tx_t *tx)
1148 err = dmu_buf_hold_array_by_dnode(dn, uio->uio_loffset, size,
1206 dnode_t *dn;
1213 dn = DB_DNODE(db);
1214 err = dmu_write_uio_dnode(dn, uio, size, tx);
1229 dnode_t *dn;
1235 err = dnode_hold(os, object, FTAG, &dn);
1239 err = dmu_write_uio_dnode(dn, uio, size, tx);
1241 dnode_rele(dn, FTAG);
1333 dnode_t *dn;
1339 dn = DB_DNODE(dbuf);
1340 rw_enter(&dn->dn_struct_rwlock, RW_READER);
1341 blkid = dbuf_whichblock(dn, 0, offset);
1342 VERIFY((db = dbuf_hold(dn, blkid, FTAG)) != NULL);
1343 rw_exit(&dn->dn_struct_rwlock);
1361 dn = DB_DNODE(dbuf);
1362 os = dn->dn_objset;
1363 object = dn->dn_object;
1553 dnode_t *dn;
1562 dn = DB_DNODE(db);
1563 dmu_write_policy(os, dn, db->db_level, WP_DMU_SYNC, &zp);
1635 dn = DB_DNODE(db);
1636 if (dr->dr_next != NULL || dnode_block_freed(dn, db->db_blkid))
1675 dnode_t *dn;
1678 err = dnode_hold(os, object, FTAG, &dn);
1681 err = dnode_set_blksz(dn, size, ibs, tx);
1682 dnode_rele(dn, FTAG);
1690 dnode_t *dn;
1699 VERIFY0(dnode_hold(os, object, FTAG, &dn));
1701 dn->dn_checksum = checksum;
1702 dnode_setdirty(dn, tx);
1703 dnode_rele(dn, FTAG);
1710 dnode_t *dn;
1719 VERIFY0(dnode_hold(os, object, FTAG, &dn));
1720 dn->dn_compress = compress;
1721 dnode_setdirty(dn, tx);
1722 dnode_rele(dn, FTAG);
1734 dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, zio_prop_t *zp)
1736 dmu_object_type_t type = dn ? dn->dn_type : DMU_OT_OBJSET;
1798 compress = zio_compress_select(os->os_spa, dn->dn_compress,
1802 zio_checksum_select(dn->dn_checksum, checksum) :
1834 zp->zp_type = (wp & WP_SPILL) ? dn->dn_bonustype : type;
1845 dnode_t *dn;
1857 err = dnode_hold(os, object, FTAG, &dn);
1862 err = dnode_next_offset(dn, (hole ? DNODE_FIND_HOLE : 0), off, 1, 1, 0);
1863 dnode_rele(dn, FTAG);
1878 dnode_t *dn;
1881 error = dnode_hold(os, object, FTAG, &dn);
1887 if (list_link_active(&dn->dn_dirty_link[i])) {
1891 dnode_rele(dn, FTAG);
1900 dmu_object_info_from_dnode(dnode_t *dn, dmu_object_info_t *doi)
1904 rw_enter(&dn->dn_struct_rwlock, RW_READER);
1905 mutex_enter(&dn->dn_mtx);
1907 dnp = dn->dn_phys;
1909 doi->doi_data_block_size = dn->dn_datablksz;
1910 doi->doi_metadata_block_size = dn->dn_indblkshift ?
1911 1ULL << dn->dn_indblkshift : 0;
1912 doi->doi_type = dn->dn_type;
1913 doi->doi_bonus_type = dn->dn_bonustype;
1914 doi->doi_bonus_size = dn->dn_bonuslen;
1915 doi->doi_indirection = dn->dn_nlevels;
1916 doi->doi_checksum = dn->dn_checksum;
1917 doi->doi_compress = dn->dn_compress;
1918 doi->doi_nblkptr = dn->dn_nblkptr;
1920 doi->doi_max_offset = (dn->dn_maxblkid + 1) * dn->dn_datablksz;
1925 mutex_exit(&dn->dn_mtx);
1926 rw_exit(&dn->dn_struct_rwlock);
1936 dnode_t *dn;
1937 int err = dnode_hold(os, object, FTAG, &dn);
1943 dmu_object_info_from_dnode(dn, doi);
1945 dnode_rele(dn, FTAG);
1971 dnode_t *dn;
1974 dn = DB_DNODE(db);
1976 *blksize = dn->dn_datablksz;
1978 *nblk512 = ((DN_USED_BYTES(dn->dn_phys) + SPA_MINBLOCKSIZE/2) >>