This comment in UpdateFullPageWrites() seems to be inaccurate: * It's safe to check the shared full_page_writes without the lock, * because we assume that there is no concurrently running process which * can update it.
That assumption does not hold on any sane SMP system. I think the real reason is that we assume that read/write to an integer is atomic, like we do for TransactionId variables: heapam.c: "TransactionId read/write is assumed atomic anyway." Best regards, PS: As usual, I hope I am not missing something very obvious. -- Gurjeet Singh http://gurjeet.singh.im/