On Wed, May 26, 2021 at 04:40:48PM -0400, Bruce Momjian wrote: > On Wed, May 26, 2021 at 01:56:38PM -0400, Robert Haas wrote: > > However, I believe that if we store the nonce in the page explicitly, > > as proposed here, rather trying to derive it from the LSN, then we > > don't need to worry about this kind of masking, which I think is > > better from both a security perspective and a performance perspective. > > You are saying that by using a non-LSN nonce, you can write out the page > with a new nonce, but the same LSN, and also discard the page during > crash recovery and use the WAL copy? > > I am confused why checksums, which are widely used, acceptably require > wal_log_hints, but there is concern that file encryption, which is > heavier, cannot acceptably require wal_log_hints. I must be missing > something. > > Why can't checksums also throw away hint bit changes like you want to do > for file encryption and not require wal_log_hints?
One detail might be this extra hint bit FPW case: https://github.com/postgres/postgres/compare/bmomjian:cfe-01-doc..bmomjian:_cfe-02-internaldoc.patch However, if a hint-bit-modified page is written to the file system during a checkpoint, and there is a later hint bit change switching the same page from clean to dirty during the same checkpoint, we need a new LSN, and wal_log_hints doesn't give us a new LSN here. The fix for this is to update the page LSN by writing a dummy WAL record via xloginsert.c::LSNForEncryption() in such cases. Is this how file encryption is different from checksum wal_log_hints, and the big concern? -- Bruce Momjian <br...@momjian.us> https://momjian.us EDB https://enterprisedb.com If only the physical world exists, free will is an illusion.