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

Reply via email to