Lines Matching refs:dr
55 static void dbuf_write(dbuf_dirty_record_t *dr, arc_buf_t *data, dmu_tx_t *tx);
722 dbuf_dirty_record_t *dr; in dbuf_verify() local
754 for (dr = db->db_data_pending; dr != NULL; dr = dr->dr_next) in dbuf_verify()
755 ASSERT(dr->dr_dbuf == db); in dbuf_verify()
757 for (dr = db->db_last_dirty; dr != NULL; dr = dr->dr_next) in dbuf_verify()
758 ASSERT(dr->dr_dbuf == db); in dbuf_verify()
766 dr = db->db_data_pending; in dbuf_verify()
771 ASSERT(dr == NULL || dr->dt.dl.dr_data == db->db_buf); in dbuf_verify()
1249 dbuf_dirty_record_t *dr = db->db_last_dirty; in dbuf_fix_old_data() local
1256 if (dr == NULL || in dbuf_fix_old_data()
1257 (dr->dt.dl.dr_data != in dbuf_fix_old_data()
1268 ASSERT3U(dr->dr_txg, >=, txg - 2); in dbuf_fix_old_data()
1273 dr->dt.dl.dr_data = zio_buf_alloc(bonuslen); in dbuf_fix_old_data()
1275 bcopy(db->db.db_data, dr->dt.dl.dr_data, bonuslen); in dbuf_fix_old_data()
1292 dr->dt.dl.dr_data = arc_alloc_raw_buf(spa, db, in dbuf_fix_old_data()
1298 dr->dt.dl.dr_data = arc_alloc_compressed_buf(spa, db, in dbuf_fix_old_data()
1301 dr->dt.dl.dr_data = arc_alloc_buf(spa, db, type, size); in dbuf_fix_old_data()
1303 bcopy(db->db.db_data, dr->dt.dl.dr_data->b_data, size); in dbuf_fix_old_data()
1455 dbuf_unoverride(dbuf_dirty_record_t *dr) in dbuf_unoverride() argument
1457 dmu_buf_impl_t *db = dr->dr_dbuf; in dbuf_unoverride()
1458 blkptr_t *bp = &dr->dt.dl.dr_overridden_by; in dbuf_unoverride()
1459 uint64_t txg = dr->dr_txg; in dbuf_unoverride()
1467 ASSERT(dr->dt.dl.dr_override_state != DR_IN_DMU_SYNC); in dbuf_unoverride()
1471 dr->dt.dl.dr_override_state == DR_NOT_OVERRIDDEN) in dbuf_unoverride()
1474 ASSERT(db->db_data_pending != dr); in dbuf_unoverride()
1477 if (!BP_IS_HOLE(bp) && !dr->dt.dl.dr_nopwrite) in dbuf_unoverride()
1480 dr->dt.dl.dr_override_state = DR_NOT_OVERRIDDEN; in dbuf_unoverride()
1481 dr->dt.dl.dr_nopwrite = B_FALSE; in dbuf_unoverride()
1482 dr->dt.dl.dr_has_raw_params = B_FALSE; in dbuf_unoverride()
1492 arc_release(dr->dt.dl.dr_data, db); in dbuf_unoverride()
1561 dbuf_dirty_record_t *dr = db->db_last_dirty; in dbuf_free_range() local
1563 if (dr->dr_txg == txg) { in dbuf_free_range()
1572 dbuf_unoverride(dr); in dbuf_free_range()
1660 dbuf_redirty(dbuf_dirty_record_t *dr) in dbuf_redirty() argument
1662 dmu_buf_impl_t *db = dr->dr_dbuf; in dbuf_redirty()
1671 dbuf_unoverride(dr); in dbuf_redirty()
1686 dbuf_dirty_record_t **drp, *dr; in dbuf_dirty() local
1767 while ((dr = *drp) != NULL && dr->dr_txg > tx->tx_txg) in dbuf_dirty()
1768 drp = &dr->dr_next; in dbuf_dirty()
1769 if (dr && dr->dr_txg == tx->tx_txg) { in dbuf_dirty()
1772 dbuf_redirty(dr); in dbuf_dirty()
1774 return (dr); in dbuf_dirty()
1816 dr = kmem_zalloc(sizeof (dbuf_dirty_record_t), KM_SLEEP); in dbuf_dirty()
1840 dr->dt.dl.dr_data = data_old; in dbuf_dirty()
1842 mutex_init(&dr->dt.di.dr_mtx, NULL, MUTEX_DEFAULT, NULL); in dbuf_dirty()
1843 list_create(&dr->dt.di.dr_children, in dbuf_dirty()
1848 dr->dr_accounted = db->db.db_size; in dbuf_dirty()
1849 dr->dr_dbuf = db; in dbuf_dirty()
1850 dr->dr_txg = tx->tx_txg; in dbuf_dirty()
1851 dr->dr_next = *drp; in dbuf_dirty()
1852 *drp = dr; in dbuf_dirty()
1882 ASSERT(!list_link_active(&dr->dr_dirty_node)); in dbuf_dirty()
1883 list_insert_tail(&dn->dn_dirty_records[txgoff], dr); in dbuf_dirty()
1887 return (dr); in dbuf_dirty()
1950 if (db->db_last_dirty == dr || in dbuf_dirty()
1954 ASSERT(!list_link_active(&dr->dr_dirty_node)); in dbuf_dirty()
1955 list_insert_tail(&di->dt.di.dr_children, dr); in dbuf_dirty()
1957 dr->dr_parent = di; in dbuf_dirty()
1965 ASSERT(!list_link_active(&dr->dr_dirty_node)); in dbuf_dirty()
1966 list_insert_tail(&dn->dn_dirty_records[txgoff], dr); in dbuf_dirty()
1974 return (dr); in dbuf_dirty()
1986 dbuf_dirty_record_t *dr, **drp; in dbuf_undirty() local
2006 for (drp = &db->db_last_dirty; (dr = *drp) != NULL; drp = &dr->dr_next) in dbuf_undirty()
2007 if (dr->dr_txg <= txg) in dbuf_undirty()
2009 if (dr == NULL || dr->dr_txg < txg) in dbuf_undirty()
2011 ASSERT(dr->dr_txg == txg); in dbuf_undirty()
2012 ASSERT(dr->dr_dbuf == db); in dbuf_undirty()
2022 dr->dr_accounted, txg); in dbuf_undirty()
2024 *drp = dr->dr_next; in dbuf_undirty()
2032 if (dr->dr_parent) { in dbuf_undirty()
2033 mutex_enter(&dr->dr_parent->dt.di.dr_mtx); in dbuf_undirty()
2034 list_remove(&dr->dr_parent->dt.di.dr_children, dr); in dbuf_undirty()
2035 mutex_exit(&dr->dr_parent->dt.di.dr_mtx); in dbuf_undirty()
2040 list_remove(&dn->dn_dirty_records[txg & TXG_MASK], dr); in dbuf_undirty()
2046 dbuf_unoverride(dr); in dbuf_undirty()
2049 ASSERT(dr->dt.dl.dr_data != NULL); in dbuf_undirty()
2050 if (dr->dt.dl.dr_data != db->db_buf) in dbuf_undirty()
2051 arc_buf_destroy(dr->dt.dl.dr_data, db); in dbuf_undirty()
2054 kmem_free(dr, sizeof (dbuf_dirty_record_t)); in dbuf_undirty()
2083 dbuf_dirty_record_t *dr; in dmu_buf_will_dirty_impl() local
2084 for (dr = db->db_last_dirty; in dmu_buf_will_dirty_impl()
2085 dr != NULL && dr->dr_txg >= tx->tx_txg; dr = dr->dr_next) { in dmu_buf_will_dirty_impl()
2091 if (dr->dr_txg == tx->tx_txg && db->db_state == DB_CACHED) { in dmu_buf_will_dirty_impl()
2093 dbuf_redirty(dr); in dmu_buf_will_dirty_impl()
2154 dbuf_dirty_record_t *dr; in dmu_buf_set_crypt_params() local
2166 dr = db->db_last_dirty; in dmu_buf_set_crypt_params()
2167 while (dr != NULL && dr->dr_txg > tx->tx_txg) in dmu_buf_set_crypt_params()
2168 dr = dr->dr_next; in dmu_buf_set_crypt_params()
2170 ASSERT3P(dr, !=, NULL); in dmu_buf_set_crypt_params()
2171 ASSERT3U(dr->dr_txg, ==, tx->tx_txg); in dmu_buf_set_crypt_params()
2173 dr->dt.dl.dr_has_raw_params = B_TRUE; in dmu_buf_set_crypt_params()
2174 dr->dt.dl.dr_byteorder = byteorder; in dmu_buf_set_crypt_params()
2175 bcopy(salt, dr->dt.dl.dr_salt, ZIO_DATA_SALT_LEN); in dmu_buf_set_crypt_params()
2176 bcopy(iv, dr->dt.dl.dr_iv, ZIO_DATA_IV_LEN); in dmu_buf_set_crypt_params()
2177 bcopy(mac, dr->dt.dl.dr_mac, ZIO_DATA_MAC_LEN); in dmu_buf_set_crypt_params()
2283 dbuf_dirty_record_t *dr = db->db_last_dirty; in dbuf_assign_arcbuf() local
2286 if (dr != NULL && dr->dr_txg == tx->tx_txg) { in dbuf_assign_arcbuf()
2287 ASSERT(dr->dt.dl.dr_data == db->db_buf); in dbuf_assign_arcbuf()
2290 ASSERT(dr->dt.dl.dr_override_state == in dbuf_assign_arcbuf()
2294 dr->dt.dl.dr_data = buf; in dbuf_assign_arcbuf()
2296 } else if (dr == NULL || dr->dt.dl.dr_data != db->db_buf) { in dbuf_assign_arcbuf()
2899 dbuf_hold_copy(dnode_t *dn, dmu_buf_impl_t *db, dbuf_dirty_record_t *dr) in dbuf_hold_copy() argument
2901 arc_buf_t *data = dr->dt.dl.dr_data; in dbuf_hold_copy()
2992 dbuf_dirty_record_t *dr = db->db_data_pending; in dbuf_hold_impl() local
2993 if (dr->dt.dl.dr_data == db->db_buf) in dbuf_hold_impl()
2994 dbuf_hold_copy(dn, db, dr); in dbuf_hold_impl()
3414 dbuf_prepare_encrypted_dnode_leaf(dbuf_dirty_record_t *dr) in dbuf_prepare_encrypted_dnode_leaf() argument
3417 dmu_buf_impl_t *db = dr->dr_dbuf; in dbuf_prepare_encrypted_dnode_leaf()
3439 } else if (dr->dt.dl.dr_has_raw_params) { in dbuf_prepare_encrypted_dnode_leaf()
3440 (void) arc_release(dr->dt.dl.dr_data, db); in dbuf_prepare_encrypted_dnode_leaf()
3441 arc_convert_to_raw(dr->dt.dl.dr_data, in dbuf_prepare_encrypted_dnode_leaf()
3443 dr->dt.dl.dr_byteorder, DMU_OT_DNODE, in dbuf_prepare_encrypted_dnode_leaf()
3444 dr->dt.dl.dr_salt, dr->dt.dl.dr_iv, dr->dt.dl.dr_mac); in dbuf_prepare_encrypted_dnode_leaf()
3449 dbuf_sync_indirect(dbuf_dirty_record_t *dr, dmu_tx_t *tx) in dbuf_sync_indirect() argument
3451 dmu_buf_impl_t *db = dr->dr_dbuf; in dbuf_sync_indirect()
3481 db->db_data_pending = dr; in dbuf_sync_indirect()
3485 dbuf_write(dr, db->db_buf, tx); in dbuf_sync_indirect()
3487 zio = dr->dr_zio; in dbuf_sync_indirect()
3488 mutex_enter(&dr->dt.di.dr_mtx); in dbuf_sync_indirect()
3489 dbuf_sync_list(&dr->dt.di.dr_children, db->db_level - 1, tx); in dbuf_sync_indirect()
3490 ASSERT(list_head(&dr->dt.di.dr_children) == NULL); in dbuf_sync_indirect()
3491 mutex_exit(&dr->dt.di.dr_mtx); in dbuf_sync_indirect()
3496 dbuf_sync_leaf(dbuf_dirty_record_t *dr, dmu_tx_t *tx) in dbuf_sync_leaf() argument
3498 arc_buf_t **datap = &dr->dt.dl.dr_data; in dbuf_sync_leaf()
3499 dmu_buf_impl_t *db = dr->dr_dbuf; in dbuf_sync_leaf()
3518 ASSERT(db->db.db_data != dr->dt.dl.dr_data); in dbuf_sync_leaf()
3558 while (*drp != dr) in dbuf_sync_leaf()
3560 ASSERT(dr->dr_next == NULL); in dbuf_sync_leaf()
3561 ASSERT(dr->dr_dbuf == db); in dbuf_sync_leaf()
3562 *drp = dr->dr_next; in dbuf_sync_leaf()
3563 kmem_free(dr, sizeof (dbuf_dirty_record_t)); in dbuf_sync_leaf()
3584 while (dr->dt.dl.dr_override_state == DR_IN_DMU_SYNC) { in dbuf_sync_leaf()
3587 ASSERT(dr->dt.dl.dr_override_state != DR_NOT_OVERRIDDEN); in dbuf_sync_leaf()
3595 dbuf_prepare_encrypted_dnode_leaf(dr); in dbuf_sync_leaf()
3600 dr->dt.dl.dr_override_state != DR_OVERRIDDEN && in dbuf_sync_leaf()
3637 db->db_data_pending = dr; in dbuf_sync_leaf()
3641 dbuf_write(dr, *datap, tx); in dbuf_sync_leaf()
3643 ASSERT(!list_link_active(&dr->dr_dirty_node)); in dbuf_sync_leaf()
3645 list_insert_tail(&dn->dn_dirty_records[txg&TXG_MASK], dr); in dbuf_sync_leaf()
3656 zio_nowait(dr->dr_zio); in dbuf_sync_leaf()
3663 dbuf_dirty_record_t *dr; in dbuf_sync_list() local
3665 while (dr = list_head(list)) { in dbuf_sync_list()
3666 if (dr->dr_zio != NULL) { in dbuf_sync_list()
3674 ASSERT3U(dr->dr_dbuf->db.db_object, ==, in dbuf_sync_list()
3678 if (dr->dr_dbuf->db_blkid != DMU_BONUS_BLKID && in dbuf_sync_list()
3679 dr->dr_dbuf->db_blkid != DMU_SPILL_BLKID) { in dbuf_sync_list()
3680 VERIFY3U(dr->dr_dbuf->db_level, ==, level); in dbuf_sync_list()
3682 list_remove(list, dr); in dbuf_sync_list()
3683 if (dr->dr_dbuf->db_level > 0) in dbuf_sync_list()
3684 dbuf_sync_indirect(dr, tx); in dbuf_sync_list()
3686 dbuf_sync_leaf(dr, tx); in dbuf_sync_list()
3842 dbuf_dirty_record_t *dr; in dbuf_write_physdone() local
3845 dr = db->db_data_pending; in dbuf_write_physdone()
3846 ASSERT3U(dr->dr_txg, ==, zio->io_txg); in dbuf_write_physdone()
3854 delta = dr->dr_accounted / zio->io_phys_children; in dbuf_write_physdone()
3867 dbuf_dirty_record_t **drp, *dr; in dbuf_write_done() local
3889 while ((dr = *drp) != db->db_data_pending) in dbuf_write_done()
3890 drp = &dr->dr_next; in dbuf_write_done()
3891 ASSERT(!list_link_active(&dr->dr_dirty_node)); in dbuf_write_done()
3892 ASSERT(dr->dr_dbuf == db); in dbuf_write_done()
3893 ASSERT(dr->dr_next == NULL); in dbuf_write_done()
3894 *drp = dr->dr_next; in dbuf_write_done()
3911 ASSERT(dr->dt.dl.dr_override_state == DR_NOT_OVERRIDDEN); in dbuf_write_done()
3913 if (dr->dt.dl.dr_data != db->db_buf) in dbuf_write_done()
3914 arc_buf_destroy(dr->dt.dl.dr_data, db); in dbuf_write_done()
3921 ASSERT(list_head(&dr->dt.di.dr_children) == NULL); in dbuf_write_done()
3932 mutex_destroy(&dr->dt.di.dr_mtx); in dbuf_write_done()
3933 list_destroy(&dr->dt.di.dr_children); in dbuf_write_done()
3935 kmem_free(dr, sizeof (dbuf_dirty_record_t)); in dbuf_write_done()
3959 dbuf_dirty_record_t *dr = zio->io_private; in dbuf_write_override_ready() local
3960 dmu_buf_impl_t *db = dr->dr_dbuf; in dbuf_write_override_ready()
3968 dbuf_dirty_record_t *dr = zio->io_private; in dbuf_write_override_done() local
3969 dmu_buf_impl_t *db = dr->dr_dbuf; in dbuf_write_override_done()
3970 blkptr_t *obp = &dr->dt.dl.dr_overridden_by; in dbuf_write_override_done()
3976 arc_release(dr->dt.dl.dr_data, db); in dbuf_write_override_done()
4127 dbuf_write(dbuf_dirty_record_t *dr, arc_buf_t *data, dmu_tx_t *tx) in dbuf_write() argument
4129 dmu_buf_impl_t *db = dr->dr_dbuf; in dbuf_write()
4207 dr->dr_bp_copy = *db->db_blkptr; in dbuf_write()
4210 dr->dt.dl.dr_override_state == DR_OVERRIDDEN) { in dbuf_write()
4218 dr->dr_zio = zio_write(zio, os->os_spa, txg, &dr->dr_bp_copy, in dbuf_write()
4222 dr, ZIO_PRIORITY_ASYNC_WRITE, ZIO_FLAG_MUSTSUCCEED, &zb); in dbuf_write()
4224 dr->dt.dl.dr_override_state = DR_NOT_OVERRIDDEN; in dbuf_write()
4225 zio_write_override(dr->dr_zio, &dr->dt.dl.dr_overridden_by, in dbuf_write()
4226 dr->dt.dl.dr_copies, dr->dt.dl.dr_nopwrite); in dbuf_write()
4231 dr->dr_zio = zio_write(zio, os->os_spa, txg, in dbuf_write()
4232 &dr->dr_bp_copy, NULL, db->db.db_size, db->db.db_size, &zp, in dbuf_write()
4249 dr->dr_zio = arc_write(zio, os->os_spa, txg, in dbuf_write()
4250 &dr->dr_bp_copy, data, DBUF_IS_L2CACHEABLE(db), in dbuf_write()