postgres.git / summary / log / commit / refs

commit    34402ae351e71f852a6c2fee7861a66d0dbeb24c
Author:   Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date:     Thu Nov 13 15:54:20 2014 +0000
First released in: 9.5.0

    Fix XLogReadBufferForRedoExtended to get cleanup lock when asked to do so.


src/backend/access/transam/xlogutils.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/backend/access/transam/xlogutils.c b/src/backend/access/transam/xlogutils.c index 1a21dac8538..da0e45bfcc6 100644 --- a/src/backend/access/transam/xlogutils.c +++ b/src/backend/access/transam/xlogutils.c @@ -312,7 +312,10 @@ XLogReadBufferForRedoExtended(XLogRecPtr lsn, XLogRecord *record, *buf = XLogReadBufferExtended(rnode, forkno, blkno, mode); if (BufferIsValid(*buf)) { - LockBuffer(*buf, BUFFER_LOCK_EXCLUSIVE); + if (get_cleanup_lock) + LockBufferForCleanup(*buf); + else + LockBuffer(*buf, BUFFER_LOCK_EXCLUSIVE); if (lsn <= PageGetLSN(BufferGetPage(*buf))) return BLK_DONE; else [parent: c291503b1c82]