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