Thanks for the explanation. > .... a dirty > buffer goes onto the > list corresponding to the txg it belongs to.
Ok. I see that all dirty buffers are put on a per txg list. This is for easy synchronization, makes sense. The per dmu_buf_impl_t details are a bit fuzzy. I see there can be more than one dirty buffers per dmu_buf_impl_t. Are these multiple "edited versions" of the same buffer that occurred in the same txg? Looks like the dirty buffer (leaf) records point to an arc_buf_t, which is presumably yet un-cached (until it is synched out). db_data_pending points to the most current of these. Seems that db_data_pending always points to the last (newest) dirty buffer for the dmu buffer. A the moment, the purpose of maintaining the per-dbuf dirty list eludes me. (Maybe to dispose of these except for the latest one, which will be written out to disk) Also: what is BP_IS_HOLE? I see it has no birth_txg. -- This message posted from opensolaris.org