diff options
Diffstat (limited to 'src/backend/storage/buffer/bufmgr.c')
-rw-r--r-- | src/backend/storage/buffer/bufmgr.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index b40b0b0e045..5331ab3fbe2 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.10 1997/01/23 19:43:23 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.11 1997/03/28 07:05:03 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -848,6 +848,10 @@ ReleaseAndReadBuffer(Buffer buffer, AddBufferToFreelist(bufHdr); bufHdr->flags |= BM_FREE; } + if(CommitInfoNeedsSave[buffer - 1]) { + bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); + CommitInfoNeedsSave[buffer - 1] = 0; + } retbuf = ReadBufferWithBufferLock(relation, blockNum, true); return retbuf; } @@ -1083,6 +1087,7 @@ ResetBufferPool() { register int i; for (i=1; i<=NBuffers; i++) { + CommitInfoNeedsSave[i - 1] = 0; if (BufferIsValid(i)) { while(PrivateRefCount[i - 1] > 0) { ReleaseBuffer(i); @@ -1498,6 +1503,10 @@ ReleaseBuffer(Buffer buffer) AddBufferToFreelist(bufHdr); bufHdr->flags |= BM_FREE; } + if(CommitInfoNeedsSave[buffer - 1]) { + bufHdr->flags |= (BM_DIRTY | BM_JUST_DIRTIED); + CommitInfoNeedsSave[buffer - 1] = 0; + } SpinRelease(BufMgrLock); } @@ -1734,3 +1743,8 @@ int SetBufferWriteMode (int mode) WriteMode = mode; return (old); } + +void SetBufferCommitInfoNeedsSave(Buffer buffer) +{ + CommitInfoNeedsSave[buffer - 1]++; +} |