I wrote:
> Simon Riggs <simon@2ndQuadrant.com> writes:
>> Avoid marking buffer dirty when VACUUM has no work to do.
>> When wal_level = 'hot_standby' we touched the last page of the
>> relation during a VACUUM, even if nothing else had happened.
>> That would alter the LSN of the last block and set the mtime
>> of the relation file unnecessarily. Noted by Thom Brown.
> This doesn't look right to me --- you have not accounted for the
> possibility that btpo_cycleid or BTP_HAS_GARBAGE is changed.
> Also, I'm confused about the business of not setting the LSN. Thom
> claimed that he was seeing the page not change at all (or at least
> md5sum of the file didn't change) despite mtime changing. If we'd
> been plastering a new LSN on the page each time, then that should
> certainly not have been possible. So I now think maybe we've
> mis-analyzed what was happening in his example.
> I think this requires more careful analysis.
Ping? If you don't respond, I'm going to take it on my own authority to
revert this patch, because it's definitely broken as-is, and I don't
think the consequences of not updating the page LSN have been thought
through either.
regards, tom lane