Hello I think this is going too far. The new function BootStrapSlruPage() now is being used for things other than bootstrapping, and that doesn't seem appropriate to me. I think we should leave the things that aren't bootstrap out of this patch. For instance, ExtendCLOG was more understandable before this patch than after. Same with ExtendMultiXact{Offset,Member}, ExtendSUBTRANS, etc.
By removing these changes, you can remove the third argument to BootStrapSlruPage (the function pointer), since you don't need it. I'm also very suspicious of the use of the new function in the redo routines also, because those are not bootstrapping anything. I'd rather have another routine, say SimpleLruRedoZeroPage() which only handles the zeroing of a page from a WAL record. It would be very similar to BootstrapSlruPage, and maybe they can share an internal "workhorse" function for the bits that are common. I don't have faith in the function name XLogInsertInt64(). The datatype has no role there. I liked my proposal better. -- Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/