With the merge of yamt-pagecache we have solid tracking of page dirtyness. 
Dirtyness tracking of the containing uvm_object/vnode is not so solid by
comparison.  For example you can call uvm_pagemarkdirty() on a vnode page,
but letting ioflush know about that is a separate step.  When the page &
uvm_object state aren't consistent we get panics.

I'd like to change it so that:

- the vnode/uvm_object gets put on the syncer worklist as soon as it gains a
  first dirty page, by having uvm_pagemarkdirty() do it.

- VI_WRMAPDIRTY is eliminated.  I think it was really only to stop dirty
  metadata buffers muddying the waters by implying dirty uvm_object, but the
  radix tree can be checked cheaply & directly now.

http://www.netbsd.org/~ad/2020/dirty.diff

Comments?

Thanks,
Andrew

Reply via email to