80 #define DEFAULT_EFFECTIVE_IO_CONCURRENCY 1
81 #define DEFAULT_MAINTENANCE_IO_CONCURRENCY 10
83 #define DEFAULT_EFFECTIVE_IO_CONCURRENCY 0
84 #define DEFAULT_MAINTENANCE_IO_CONCURRENCY 0
102 #define MAX_IO_CONCURRENCY 1000
105 #define P_NEW InvalidBlockNumber
110 #define BUFFER_LOCK_UNLOCK 0
111 #define BUFFER_LOCK_SHARE 1
112 #define BUFFER_LOCK_EXCLUSIVE 2
161 #define RelationGetNumberOfBlocks(reln) \
162 RelationGetNumberOfBlocksInFork(reln, MAIN_FORKNUM)
168 extern void PrintPinnedBufs(
void);
273 return (
Size) BLCKSZ;
312 && (snapshot) != NULL
#define BufferIsLocal(buffer)
void IncrBufferRefCount(Buffer buffer)
void DropDatabaseBuffers(Oid dbid)
bool BgBufferSync(struct WritebackContext *wb_context)
PGDLLIMPORT int effective_io_concurrency
BlockNumber BufferGetBlockNumber(Buffer buffer)
void DropRelationBuffers(struct SMgrRelationData *smgr_reln, ForkNumber *forkNum, int nforks, BlockNumber *firstDelBlock)
Buffer ReleaseAndReadBuffer(Buffer buffer, Relation relation, BlockNumber blockNum)
PrefetchBufferResult PrefetchBuffer(Relation reln, ForkNumber forkNum, BlockNumber blockNum)
PGDLLIMPORT int bgwriter_flush_after
Size BufferShmemSize(void)
PGDLLIMPORT bool zero_damaged_pages
PGDLLIMPORT Block * LocalBufferBlockPointers
bool IsBufferCleanupOK(Buffer buffer)
PGDLLIMPORT int bgwriter_lru_maxpages
static Page BufferGetPage(Buffer buffer)
void AtEOXact_Buffers(bool isCommit)
BufferAccessStrategy GetAccessStrategy(BufferAccessStrategyType btype)
struct PrefetchBufferResult PrefetchBufferResult
static Block BufferGetBlock(Buffer buffer)
void CreateAndCopyRelationData(RelFileLocator src_rlocator, RelFileLocator dst_rlocator, bool permanent)
PGDLLIMPORT int maintenance_io_concurrency
void TestForOldSnapshot_impl(Snapshot snapshot, Relation relation)
void AtProcExit_LocalBuffers(void)
PGDLLIMPORT bool track_io_timing
void BufferGetTag(Buffer buffer, RelFileLocator *rlocator, ForkNumber *forknum, BlockNumber *blknum)
void InitBufferPool(void)
void CheckPointBuffers(int flags)
void DropRelationsAllBuffers(struct SMgrRelationData **smgr_reln, int nlocators)
bool BufferIsPermanent(Buffer buffer)
static Size BufferGetPageSize(Buffer buffer)
bool ConditionalLockBuffer(Buffer buffer)
BlockNumber RelationGetNumberOfBlocksInFork(Relation relation, ForkNumber forkNum)
void ReleaseBuffer(Buffer buffer)
void FreeAccessStrategy(BufferAccessStrategy strategy)
PGDLLIMPORT int32 * LocalRefCount
XLogRecPtr BufferGetLSNAtomic(Buffer buffer)
bool HoldingBufferPinThatDelaysRecovery(void)
void UnlockReleaseBuffer(Buffer buffer)
PrefetchBufferResult PrefetchSharedBuffer(struct SMgrRelationData *smgr_reln, ForkNumber forkNum, BlockNumber blockNum)
void MarkBufferDirty(Buffer buffer)
void InitBufferPoolAccess(void)
PGDLLIMPORT int NLocBuffer
void PrintBufferLeakWarning(Buffer buffer)
void LockBufferForCleanup(Buffer buffer)
void LockBuffer(Buffer buffer, int mode)
void MarkBufferDirtyHint(Buffer buffer, bool buffer_std)
void FlushRelationBuffers(Relation rel)
Buffer ReadBufferWithoutRelcache(RelFileLocator rlocator, ForkNumber forkNum, BlockNumber blockNum, ReadBufferMode mode, BufferAccessStrategy strategy, bool permanent)
PGDLLIMPORT int backend_flush_after
PGDLLIMPORT double bgwriter_lru_multiplier
bool ReadRecentBuffer(RelFileLocator rlocator, ForkNumber forkNum, BlockNumber blockNum, Buffer recent_buffer)
void FlushDatabaseBuffers(Oid dbid)
void FlushRelationsAllBuffers(struct SMgrRelationData **smgrs, int nrels)
PGDLLIMPORT int checkpoint_flush_after
Buffer ReadBufferExtended(Relation reln, ForkNumber forkNum, BlockNumber blockNum, ReadBufferMode mode, BufferAccessStrategy strategy)
static void TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page)
PGDLLIMPORT char * BufferBlocks
Buffer ReadBuffer(Relation reln, BlockNumber blockNum)
@ RBM_ZERO_AND_CLEANUP_LOCK
bool ConditionalLockBufferForCleanup(Buffer buffer)
void FlushOneBuffer(Buffer buffer)
static bool BufferIsValid(Buffer bufnum)
static XLogRecPtr PageGetLSN(Page page)
#define AssertMacro(condition)
Assert(fmt[strlen(fmt) - 1] !='\n')
static PgChecksumMode mode
int old_snapshot_threshold
#define XLogRecPtrIsInvalid(r)