mirror of
https://github.com/postgres/postgres.git
synced 2025-08-21 10:42:50 +03:00
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.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -284,7 +284,7 @@ restart:
|
||||
exclusive_lock_held = true;
|
||||
}
|
||||
fsm_rebuild_page(page);
|
||||
MarkBufferDirtyHint(buf);
|
||||
MarkBufferDirtyHint(buf, false);
|
||||
goto restart;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user