|
FreeBSD ZFS
The Zettabyte File System
|
#include <dbuf.h>

Data Fields | |
| dmu_buf_t | db |
| the publicly visible structure | |
| struct objset * | db_objset |
| the objset we belong to | |
| struct dnode_handle * | db_dnode_handle |
| handle to safely access the dnode we belong to (NULL when evicted) | |
| struct dmu_buf_impl * | db_parent |
| our parent buffer; if the dnode points to us directly, db_parent == db_dnode_handle->dnh_dnode->dn_dbuf only accessed by sync thread ??? (NULL when evicted) May change from NULL to non-NULL under the protection of db_mtx (see dbuf_check_blkptr()) | |
| struct dmu_buf_impl * | db_hash_next |
| link for hash table of all dmu_buf_impl_t's | |
| uint64_t | db_blkid |
| our block number | |
| blkptr_t * | db_blkptr |
| Pointer to the blkptr_t which points to us. | |
| uint8_t | db_level |
| Our indirection level. | |
| kmutex_t | db_mtx |
| db_mtx protects the members below | |
| dbuf_states_t | db_state |
| Current state of the buffer. | |
| refcount_t | db_holds |
| Refcount accessed by dmu_buf_{hold,rele}. | |
| arc_buf_t * | db_buf |
| buffer holding our data | |
| kcondvar_t | db_changed |
| dbuf_dirty_record_t * | db_data_pending |
| dbuf_dirty_record_t * | db_last_dirty |
| pointer to most recent dirty record for this buffer | |
| list_node_t | db_link |
| Our link on the owner dnodes's dn_dbufs list. | |
| void * | db_user_ptr |
| Data which is unique to data (leaf) blocks: | |
| void ** | db_user_data_ptr_ptr |
| dmu_buf_evict_func_t * | db_evict_func |
| uint8_t | db_immediate_evict |
| uint8_t | db_freed_in_flight |
| uint8_t | db_dirtycnt |
| uint64_t dmu_buf_impl::db_blkid |
| kcondvar_t dmu_buf_impl::db_changed |
| uint8_t dmu_buf_impl::db_dirtycnt |
| uint8_t dmu_buf_impl::db_freed_in_flight |
| uint8_t dmu_buf_impl::db_immediate_evict |
| uint8_t dmu_buf_impl::db_level |
| list_node_t dmu_buf_impl::db_link |
| kmutex_t dmu_buf_impl::db_mtx |
| struct objset* dmu_buf_impl::db_objset |
| struct dmu_buf_impl* dmu_buf_impl::db_parent |
our parent buffer; if the dnode points to us directly, db_parent == db_dnode_handle->dnh_dnode->dn_dbuf only accessed by sync thread ??? (NULL when evicted) May change from NULL to non-NULL under the protection of db_mtx (see dbuf_check_blkptr())
1.7.3