Richard Huxton <dev@archonet.com> writes:
> However, one thing you can say is that if block B hasn't been written to
> since you last checked, then any blocks older than that haven't been
> written to either.
[ itch... ] Can you? I don't recall exactly when a block gets pushed
up the ARC list during a ReadBuffer/WriteBuffer cycle, but at the very
least I'd have to say that this assumption is vulnerable to race
conditions.
Also, the cntxDirty mechanism allows a block to be dirtied without
changing the ARC state at all. I am not very clear on whether Vadim
added that mechanism just for performance or because there were
fundamental deadlock issues without it; but in either case we'd have
to think long and hard about taking it out for the bgwriter's benefit.
regards, tom lane