mirror of
https://github.com/postgres/postgres.git
synced 2025-11-19 13:42:17 +03:00
Let caller of PageIsVerified() control ignore_checksum_failure
For AIO the completion of a read into shared buffers (i.e. verifying the page including the checksum, updating the BufferDesc to reflect the IO) can happen in a different backend than the backend that started the IO. As ignore_checksum_failure can differ between backends, we need to allow the caller of PageIsVerified() control whether to ignore checksum failures. The commit leaves a gap in the PIV_* values, as an upcoming commit, which depends on this commit, will add PIV_LOG_LOG, which better fits just after PIV_LOG_WARNING. Reviewed-by: Noah Misch <noah@leadboat.com> Discussion: https://postgr.es/m/20250329212929.a6.nmisch@google.com
This commit is contained in:
@@ -1569,6 +1569,7 @@ WaitReadBuffers(ReadBuffersOperation *operation)
|
||||
{
|
||||
BufferDesc *bufHdr;
|
||||
Block bufBlock;
|
||||
int piv_flags;
|
||||
bool verified;
|
||||
bool checksum_failure;
|
||||
|
||||
@@ -1584,8 +1585,11 @@ WaitReadBuffers(ReadBuffersOperation *operation)
|
||||
}
|
||||
|
||||
/* check for garbage data */
|
||||
piv_flags = PIV_LOG_WARNING;
|
||||
if (ignore_checksum_failure)
|
||||
piv_flags |= PIV_IGNORE_CHECKSUM_FAILURE;
|
||||
verified = PageIsVerified((Page) bufBlock, io_first_block + j,
|
||||
PIV_LOG_WARNING, &checksum_failure);
|
||||
piv_flags, &checksum_failure);
|
||||
if (checksum_failure)
|
||||
{
|
||||
RelFileLocatorBackend rloc = operation->smgr->smgr_rlocator;
|
||||
|
||||
Reference in New Issue
Block a user