> The change of the checksum state is WAL logged with a new xlog record. All > the buffers written by the background worker are forcibly enabled full page > writes to make sure the checksum is fully updated on the standby even if no > actual contents of the buffer changed.
Hm. That doesn't sound necessary to me. If you generate a checkpoint (or just wait until a new checkpoint has started) then go through and do a normal xlog record for every page (any xlog record, a noop record even) then the normal logic for full page writes ought to be sufficient. If the noop record doesn't need a full page write it's because someone else has already come in and done one and that one will set the checksum. In fact if any page has an lsn > the checkpoint start lsn for the checkpoint after the flag was flipped then you wouldn't need to issue any record at all.