Print this page
patch nuke-the-dbuf-hash


 161         dmu_buf_t db;
 162 
 163         /* the objset we belong to */
 164         struct objset *db_objset;
 165 
 166         /*
 167          * handle to safely access the dnode we belong to (NULL when evicted)
 168          */
 169         struct dnode_handle *db_dnode_handle;
 170 
 171         /*
 172          * our parent buffer; if the dnode points to us directly,
 173          * db_parent == db_dnode_handle->dnh_dnode->dn_dbuf
 174          * only accessed by sync thread ???
 175          * (NULL when evicted)
 176          * May change from NULL to non-NULL under the protection of db_mtx
 177          * (see dbuf_check_blkptr())
 178          */
 179         struct dmu_buf_impl *db_parent;
 180 
 181         /*
 182          * link for hash table of all dmu_buf_impl_t's
 183          */
 184         struct dmu_buf_impl *db_hash_next;
 185 
 186         /* our block number */
 187         uint64_t db_blkid;
 188 
 189         /*
 190          * Pointer to the blkptr_t which points to us. May be NULL if we
 191          * don't have one yet. (NULL when evicted)
 192          */
 193         blkptr_t *db_blkptr;
 194 
 195         /*
 196          * Our indirection level.  Data buffers have db_level==0.
 197          * Indirect buffers which point to data buffers have
 198          * db_level==1. etc.  Buffers which contain dnodes have
 199          * db_level==0, since the dnodes are stored in a file.
 200          */
 201         uint8_t db_level;
 202 
 203         /* db_mtx protects the members below */
 204         kmutex_t db_mtx;
 205 




 161         dmu_buf_t db;
 162 
 163         /* the objset we belong to */
 164         struct objset *db_objset;
 165 
 166         /*
 167          * handle to safely access the dnode we belong to (NULL when evicted)
 168          */
 169         struct dnode_handle *db_dnode_handle;
 170 
 171         /*
 172          * our parent buffer; if the dnode points to us directly,
 173          * db_parent == db_dnode_handle->dnh_dnode->dn_dbuf
 174          * only accessed by sync thread ???
 175          * (NULL when evicted)
 176          * May change from NULL to non-NULL under the protection of db_mtx
 177          * (see dbuf_check_blkptr())
 178          */
 179         struct dmu_buf_impl *db_parent;
 180 





 181         /* our block number */
 182         uint64_t db_blkid;
 183 
 184         /*
 185          * Pointer to the blkptr_t which points to us. May be NULL if we
 186          * don't have one yet. (NULL when evicted)
 187          */
 188         blkptr_t *db_blkptr;
 189 
 190         /*
 191          * Our indirection level.  Data buffers have db_level==0.
 192          * Indirect buffers which point to data buffers have
 193          * db_level==1. etc.  Buffers which contain dnodes have
 194          * db_level==0, since the dnodes are stored in a file.
 195          */
 196         uint8_t db_level;
 197 
 198         /* db_mtx protects the members below */
 199         kmutex_t db_mtx;
 200