diff options
author | Jeff Davis <jdavis@postgresql.org> | 2013-06-17 08:02:12 -0700 |
---|---|---|
committer | Jeff Davis <jdavis@postgresql.org> | 2013-06-17 08:02:12 -0700 |
commit | b8fd1a09f382f04c41128fded4d56da2127ce92d (patch) | |
tree | e84773ab67d8daf81c5260e36086e727cdeec707 /src/backend/storage | |
parent | 2bc4ab4f9c2ed8d94c22c41fce05f97838f2fc42 (diff) | |
download | postgresql-b8fd1a09f382f04c41128fded4d56da2127ce92d.tar.gz postgresql-b8fd1a09f382f04c41128fded4d56da2127ce92d.zip |
Add buffer_std flag to MarkBufferDirtyHint().
MarkBufferDirtyHint() writes WAL, and should know if it's got a
standard buffer or not. Currently, the only callers where buffer_std
is false are related to the FSM.
In passing, rename XLOG_HINT to XLOG_FPI, which is more descriptive.
Back-patch to 9.3.
Diffstat (limited to 'src/backend/storage')
-rw-r--r-- | src/backend/storage/buffer/bufmgr.c | 4 | ||||
-rw-r--r-- | src/backend/storage/freespace/freespace.c | 8 | ||||
-rw-r--r-- | src/backend/storage/freespace/fsmpage.c | 2 |
3 files changed, 7 insertions, 7 deletions
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index c6b033cf417..8079226864d 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -2587,7 +2587,7 @@ IncrBufferRefCount(Buffer buffer) * (due to a race condition), so it cannot be used for important changes. */ void -MarkBufferDirtyHint(Buffer buffer) +MarkBufferDirtyHint(Buffer buffer, bool buffer_std) { volatile BufferDesc *bufHdr; Page page = BufferGetPage(buffer); @@ -2671,7 +2671,7 @@ MarkBufferDirtyHint(Buffer buffer) * rather than full transactionids. */ MyPgXact->delayChkpt = delayChkpt = true; - lsn = XLogSaveBufferForHint(buffer); + lsn = XLogSaveBufferForHint(buffer, buffer_std); } LockBufHdr(bufHdr); diff --git a/src/backend/storage/freespace/freespace.c b/src/backend/storage/freespace/freespace.c index b76bf9be6b4..b15cf8fe452 100644 --- a/src/backend/storage/freespace/freespace.c +++ b/src/backend/storage/freespace/freespace.c @@ -216,7 +216,7 @@ XLogRecordPageWithFreeSpace(RelFileNode rnode, BlockNumber heapBlk, PageInit(page, BLCKSZ, 0); if (fsm_set_avail(page, slot, new_cat)) - MarkBufferDirtyHint(buf); + MarkBufferDirtyHint(buf, false); UnlockReleaseBuffer(buf); } @@ -286,7 +286,7 @@ FreeSpaceMapTruncateRel(Relation rel, BlockNumber nblocks) return; /* nothing to do; the FSM was already smaller */ LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); fsm_truncate_avail(BufferGetPage(buf), first_removed_slot); - MarkBufferDirtyHint(buf); + MarkBufferDirtyHint(buf, false); UnlockReleaseBuffer(buf); new_nfsmblocks = fsm_logical_to_physical(first_removed_address) + 1; @@ -619,7 +619,7 @@ fsm_set_and_search(Relation rel, FSMAddress addr, uint16 slot, page = BufferGetPage(buf); if (fsm_set_avail(page, slot, newValue)) - MarkBufferDirtyHint(buf); + MarkBufferDirtyHint(buf, false); if (minValue != 0) { @@ -770,7 +770,7 @@ fsm_vacuum_page(Relation rel, FSMAddress addr, bool *eof_p) { LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); fsm_set_avail(BufferGetPage(buf), slot, child_avail); - MarkBufferDirtyHint(buf); + MarkBufferDirtyHint(buf, false); LockBuffer(buf, BUFFER_LOCK_UNLOCK); } } diff --git a/src/backend/storage/freespace/fsmpage.c b/src/backend/storage/freespace/fsmpage.c index 19c8e09148b..8376a7fc0f8 100644 --- a/src/backend/storage/freespace/fsmpage.c +++ b/src/backend/storage/freespace/fsmpage.c @@ -284,7 +284,7 @@ restart: exclusive_lock_held = true; } fsm_rebuild_page(page); - MarkBufferDirtyHint(buf); + MarkBufferDirtyHint(buf, false); goto restart; } } |