diff --git a/src/gausskernel/storage/access/redo/redo_xlogutils.cpp b/src/gausskernel/storage/access/redo/redo_xlogutils.cpp index e5bf4901f..6fb630b60 100644 --- a/src/gausskernel/storage/access/redo/redo_xlogutils.cpp +++ b/src/gausskernel/storage/access/redo/redo_xlogutils.cpp @@ -1712,10 +1712,11 @@ void ExtremeRtoFlushBuffer(RedoBufferInfo *bufferinfo, bool updateFsm) } else { if (bufferinfo->pageinfo.page != NULL) { BufferDesc *bufDesc = GetBufferDescriptor(bufferinfo->buf - 1); - /* backends may mark buffer dirty already */ - if (!(bufDesc->state & BM_DIRTY) && - (bufferinfo->dirtyflag || XLByteLT(bufDesc->extra->lsn_on_disk, PageGetLSN(bufferinfo->pageinfo.page)))) { - MarkBufferDirty(bufferinfo->buf); + if (bufferinfo->dirtyflag || XLByteLT(bufDesc->extra->lsn_on_disk, PageGetLSN(bufferinfo->pageinfo.page))) { + /* backends may mark buffer dirty already */ + if (!(bufDesc->state & BM_DIRTY)) { + MarkBufferDirty(bufferinfo->buf); + } if (!bufferinfo->dirtyflag && bufferinfo->blockinfo.forknum == MAIN_FORKNUM) { int mode = WARNING; #ifdef USE_ASSERT_CHECKING