On Tue, 2004-12-21 at 15:26, Tom Lane wrote:
> 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.
>
An intriguing idea: after some thought this would only be true if all
block accesses were writes. A block can be re-read (but not written),
causing it to move to the MRU of T2, thus moving it ahead of other dirty
buffers.
Forgive me: the conveyor belt analogy only applies when blocks on the
buffer list haven't been touched *at all*. i.e. if they are hit only
once (on T1) or twice (T2) they then just move down towards the LRU and
roll off when they get there.
--
Best Regards, Simon Riggs