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

This commit is contained in:
Heikki Linnakangas 2014-11-13 17:54:20 +02:00
parent c291503b1c
commit 34402ae351

View File

@ -312,7 +312,10 @@ XLogReadBufferForRedoExtended(XLogRecPtr lsn, XLogRecord *record,
*buf = XLogReadBufferExtended(rnode, forkno, blkno, mode); *buf = XLogReadBufferExtended(rnode, forkno, blkno, mode);
if (BufferIsValid(*buf)) 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))) if (lsn <= PageGetLSN(BufferGetPage(*buf)))
return BLK_DONE; return BLK_DONE;
else else