On Tue, Jan 12, 2021 at 01:15:44PM -0500, Bruce Momjian wrote:
> On Tue, Jan 12, 2021 at 01:11:29PM -0500, Stephen Frost wrote:
> > I don't think there's any doubt that we need to make sure that the IV is
> > distinct and advancing the LSN to get a new one when needed for this
> > case seems like it's probably the way to do that. Hint bit change
> > visibility to users isn't really at issue here- we can't use the same IV
> > multiple times. The two options that we have are to either not actually
> > update the hint bit in such a case, or to make sure to change the
> > LSN/IV. Another option would be to, if we're able to make a hole to put
> > the GCM tag on to the page somewhere, further widen that hole to include
> > an additional space for a counter that would be mixed into the IV, to
> > avoid having to do an XLOG NOOP.
>
> Well, we have eight unused bits in the IV, so we could just increment
> that for every hint bit change that uses the same LSN, and then force a
> dummy WAL record when that 8-bit counter overflows --- that seems
> simpler than logging hint bits.
Sorry, I was incorrect. The IV is 16 bytes, made up of the LSN (8
bytes), and the page number (4 bytes). That leaves 4 bytes unused or
2^32 values for hint bit changes before we have to generate a dummy LSN
record.
--
Bruce Momjian <bruce@momjian.us> https://momjian.us
EnterpriseDB https://enterprisedb.com
The usefulness of a cup is in its emptiness, Bruce Lee