| 1717 | } |
| 1718 | |
| 1719 | static void |
| 1720 | dbuf_noread(dmu_buf_impl_t *db) |
| 1721 | { |
| 1722 | ASSERT(!zfs_refcount_is_zero(&db->db_holds)); |
| 1723 | ASSERT(db->db_blkid != DMU_BONUS_BLKID); |
| 1724 | mutex_enter(&db->db_mtx); |
| 1725 | while (db->db_state == DB_READ || db->db_state == DB_FILL) |
| 1726 | cv_wait(&db->db_changed, &db->db_mtx); |
| 1727 | if (db->db_state == DB_UNCACHED) { |
| 1728 | ASSERT(db->db_buf == NULL); |
| 1729 | ASSERT(db->db.db_data == NULL); |
| 1730 | dbuf_set_data(db, dbuf_alloc_arcbuf(db)); |
| 1731 | db->db_state = DB_FILL; |
| 1732 | DTRACE_SET_STATE(db, "assigning filled buffer"); |
| 1733 | } else if (db->db_state == DB_NOFILL) { |
| 1734 | dbuf_clear_data(db); |
| 1735 | } else { |
| 1736 | ASSERT3U(db->db_state, ==, DB_CACHED); |
| 1737 | } |
| 1738 | mutex_exit(&db->db_mtx); |
| 1739 | } |
| 1740 | |
| 1741 | void |
| 1742 | dbuf_unoverride(dbuf_dirty_record_t *dr) |
no test coverage detected