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
|