Attached v12 fixes a variety of buglets I found throughout the patch set.
I've also done quite a bit of refactoring. The scope of the
refactoring varies from inlining some helpers to introducing new input
argument structs.
0001 is independently valuable as it optimizes StrategyRejectBuffer()
a bit and makes GetVictimBuffer() cleaner
0002-0007 were largely present in older versions of the patch set
0008 is new -- it is an early version of batching for normal backends
flushing a buffer to obtain a clean one. Right now, it checks if the
two blocks succeeding the target block are in shared buffers and
dirty, and, if so, writes them out with the target buffer. I haven't
started testing or benchmarking it because I need to convert bgwriter
to use write combining to be able to benchmark it effectively. But I
thought I would get the code out there sooner rather than later.
It's a lot harder with my current code structure to add the target
block's predecessor if it is dirty and read to write out. I wonder how
important this is vs just the two succeeding blocks.
- Melanie