|
PostgreSQL Source Code git master
|
#include "pgstat.h"#include "port/atomics.h"#include "storage/aio_types.h"#include "storage/buf.h"#include "storage/bufmgr.h"#include "storage/condition_variable.h"#include "storage/lwlock.h"#include "storage/procnumber.h"#include "storage/proclist_types.h"#include "storage/shmem.h"#include "storage/smgr.h"#include "storage/spin.h"#include "utils/relcache.h"#include "utils/resowner.h"

Go to the source code of this file.
Data Structures | |
| struct | buftag |
| struct | BufferDesc |
| union | BufferDescPadded |
| struct | PendingWriteback |
| struct | WritebackContext |
| struct | CkptSortItem |
| #define BM_CHECKPOINT_NEEDED BUF_DEFINE_FLAG( 8) |
Definition at line 122 of file buf_internals.h.
| #define BM_DIRTY BUF_DEFINE_FLAG( 1) |
Definition at line 108 of file buf_internals.h.
| #define BM_IO_ERROR BUF_DEFINE_FLAG( 5) |
Definition at line 116 of file buf_internals.h.
| #define BM_IO_IN_PROGRESS BUF_DEFINE_FLAG( 4) |
Definition at line 114 of file buf_internals.h.
| #define BM_JUST_DIRTIED BUF_DEFINE_FLAG( 6) |
Definition at line 118 of file buf_internals.h.
| #define BM_LOCK_HAS_WAITERS BUF_DEFINE_FLAG(10) |
Definition at line 126 of file buf_internals.h.
| #define BM_LOCK_MASK ((((uint64) MAX_BACKENDS) << BM_LOCK_SHIFT) | BM_LOCK_VAL_SHARE_EXCLUSIVE | BM_LOCK_VAL_EXCLUSIVE) |
Definition at line 85 of file buf_internals.h.
| #define BM_LOCK_SHIFT (BUF_FLAG_SHIFT + BUF_FLAG_BITS) |
Definition at line 77 of file buf_internals.h.
| #define BM_LOCK_VAL_EXCLUSIVE (UINT64CONST(1) << (BM_LOCK_SHIFT + MAX_BACKENDS_BITS + 1)) |
Definition at line 83 of file buf_internals.h.
| #define BM_LOCK_VAL_SHARE_EXCLUSIVE (UINT64CONST(1) << (BM_LOCK_SHIFT + MAX_BACKENDS_BITS)) |
Definition at line 81 of file buf_internals.h.
| #define BM_LOCK_VAL_SHARED (UINT64CONST(1) << (BM_LOCK_SHIFT)) |
Definition at line 79 of file buf_internals.h.
| #define BM_LOCK_WAKE_IN_PROGRESS BUF_DEFINE_FLAG(11) |
Definition at line 128 of file buf_internals.h.
| #define BM_LOCKED BUF_DEFINE_FLAG( 0) |
Definition at line 106 of file buf_internals.h.
| #define BM_MAX_USAGE_COUNT 5 |
Definition at line 145 of file buf_internals.h.
| #define BM_PERMANENT BUF_DEFINE_FLAG( 9) |
Definition at line 124 of file buf_internals.h.
| #define BM_PIN_COUNT_WAITER BUF_DEFINE_FLAG( 7) |
Definition at line 120 of file buf_internals.h.
| #define BM_TAG_VALID BUF_DEFINE_FLAG( 3) |
Definition at line 112 of file buf_internals.h.
| #define BM_VALID BUF_DEFINE_FLAG( 2) |
Definition at line 110 of file buf_internals.h.
| #define BUF_DEFINE_FLAG | ( | flagno | ) | (UINT64CONST(1) << (BUF_FLAG_SHIFT + (flagno))) |
Definition at line 102 of file buf_internals.h.
| #define BUF_FLAG_BITS 12 |
Definition at line 51 of file buf_internals.h.
| #define BUF_FLAG_MASK (((UINT64CONST(1) << BUF_FLAG_BITS) - 1) << BUF_FLAG_SHIFT) |
Definition at line 73 of file buf_internals.h.
| #define BUF_FLAG_SHIFT (BUF_REFCOUNT_BITS + BUF_USAGECOUNT_BITS) |
Definition at line 71 of file buf_internals.h.
| #define BUF_LOCK_BITS (18+2) |
Definition at line 52 of file buf_internals.h.
| #define BUF_REFCOUNT_BITS 18 |
Definition at line 49 of file buf_internals.h.
| #define BUF_REFCOUNT_MASK ((UINT64CONST(1) << BUF_REFCOUNT_BITS) - 1) |
Definition at line 59 of file buf_internals.h.
| #define BUF_REFCOUNT_ONE 1 |
Definition at line 58 of file buf_internals.h.
| #define BUF_STATE_GET_REFCOUNT | ( | state | ) | ((uint32)((state) & BUF_REFCOUNT_MASK)) |
Definition at line 90 of file buf_internals.h.
| #define BUF_STATE_GET_USAGECOUNT | ( | state | ) | ((uint32)(((state) & BUF_USAGECOUNT_MASK) >> BUF_USAGECOUNT_SHIFT)) |
Definition at line 92 of file buf_internals.h.
| #define BUF_USAGECOUNT_BITS 4 |
Definition at line 50 of file buf_internals.h.
| #define BUF_USAGECOUNT_MASK (((UINT64CONST(1) << BUF_USAGECOUNT_BITS) - 1) << (BUF_USAGECOUNT_SHIFT)) |
Definition at line 65 of file buf_internals.h.
| #define BUF_USAGECOUNT_ONE (UINT64CONST(1) << BUF_REFCOUNT_BITS) |
Definition at line 67 of file buf_internals.h.
| #define BUF_USAGECOUNT_SHIFT BUF_REFCOUNT_BITS |
Definition at line 63 of file buf_internals.h.
| #define BUFFERDESC_PAD_TO_SIZE (SIZEOF_VOID_P == 8 ? 64 : 1) |
Definition at line 382 of file buf_internals.h.
Definition at line 1003 of file localbuf.c.
References CheckForLocalBufferLeaks().
Referenced by AtEOXact_Buffers().
|
inlinestatic |
Definition at line 435 of file buf_internals.h.
References fb().
Referenced by AddBufferToRing(), BufferLockHeldByMe(), BufferLockHeldByMeInMode(), ExtendBufferedRelLocal(), ExtendBufferedRelShared(), FlushLocalBuffer(), FlushRelationBuffers(), FlushUnlockedBuffer(), GetBufferFromRing(), GetLocalVictimBuffer(), GetVictimBuffer(), InvalidateBuffer(), InvalidateLocalBuffer(), InvalidateVictimBuffer(), LockBufHdr(), pg_buffercache_os_pages_internal(), pg_buffercache_pages(), PinBuffer(), PinBuffer_Locked(), PinBufferForBlock(), PinLocalBuffer(), StartBufferIO(), StrategyGetBuffer(), StrategyRejectBuffer(), TerminateBufferIO(), UnpinBuffer(), and UnpinBufferNoOwner().
|
inlinestatic |
Definition at line 441 of file buf_internals.h.
References BufferIOCVArray, and fb().
Referenced by BufferManagerShmemInit(), TerminateBufferIO(), and WaitIO().
Definition at line 223 of file buf_internals.h.
References fb().
Referenced by InvalidateBuffer(), InvalidateVictimBuffer(), LocalBufferAlloc(), and ReadRecentBuffer().
Definition at line 255 of file buf_internals.h.
References BUFFER_MAPPING_LWLOCK_OFFSET, BufTableHashPartition(), LWLockPadded::lock, and MainLWLockArray.
Referenced by BufferAlloc(), ExtendBufferedRelShared(), FindAndDropRelationBuffers(), InvalidateBuffer(), InvalidateVictimBuffer(), and PrefetchSharedBuffer().
Definition at line 262 of file buf_internals.h.
References BUFFER_MAPPING_LWLOCK_OFFSET, LWLockPadded::lock, and MainLWLockArray.
Definition at line 148 of file buf_table.c.
References elog, ERROR, fb(), HASH_REMOVE, hash_search_with_hash_value(), and SharedBufHash.
Referenced by InvalidateBuffer(), and InvalidateVictimBuffer().
Definition at line 78 of file buf_table.c.
References fb(), get_hash_value(), and SharedBufHash.
Referenced by BufferAlloc(), ExtendBufferedRelShared(), FindAndDropRelationBuffers(), InvalidateBuffer(), InvalidateVictimBuffer(), and PrefetchSharedBuffer().
Definition at line 249 of file buf_internals.h.
References NUM_BUFFER_PARTITIONS.
Referenced by BufMappingPartitionLock().
Definition at line 118 of file buf_table.c.
References Assert, fb(), HASH_ENTER, hash_search_with_hash_value(), BufferLookupEnt::id, P_NEW, and SharedBufHash.
Referenced by BufferAlloc(), and ExtendBufferedRelShared().
Definition at line 90 of file buf_table.c.
References fb(), HASH_FIND, hash_search_with_hash_value(), BufferLookupEnt::id, and SharedBufHash.
Referenced by BufferAlloc(), FindAndDropRelationBuffers(), and PrefetchSharedBuffer().
Definition at line 41 of file buf_table.c.
References hash_estimate_size().
Referenced by StrategyShmemSize().
|
inlinestatic |
Definition at line 178 of file buf_internals.h.
References buftag::forkNum.
Referenced by AbortBufferIO(), apw_dump_now(), BufferGetTag(), BufferSync(), buffertag_comparator(), DebugPrintBufferRefcount(), DropRelationBuffers(), DropRelationLocalBuffers(), FindAndDropRelationBuffers(), FlushBuffer(), FlushLocalBuffer(), InvalidateLocalBuffer(), IssuePendingWritebacks(), local_buffer_write_error_callback(), pg_buffercache_pages(), ReleaseAndReadBuffer(), and shared_buffer_write_error_callback().
|
inlinestatic |
Definition at line 192 of file buf_internals.h.
References BufTagGetRelNumber(), buftag::dbOid, RelFileLocator::dbOid, RelFileLocator::relNumber, buftag::spcOid, and RelFileLocator::spcOid.
Referenced by AbortBufferIO(), BufferGetTag(), buffertag_comparator(), DebugPrintBufferRefcount(), DropRelationsAllBuffers(), FlushBuffer(), FlushLocalBuffer(), FlushRelationsAllBuffers(), InvalidateLocalBuffer(), IssuePendingWritebacks(), local_buffer_write_error_callback(), MarkBufferDirtyHint(), and shared_buffer_write_error_callback().
|
inlinestatic |
Definition at line 172 of file buf_internals.h.
References buftag::relNumber.
Referenced by apw_dump_now(), BufferSync(), BufTagGetRelFileLocator(), BufTagMatchesRelFileLocator(), and pg_buffercache_pages().
|
inlinestatic |
Definition at line 233 of file buf_internals.h.
References BufTagGetRelNumber(), buftag::dbOid, RelFileLocator::dbOid, RelFileLocator::relNumber, buftag::spcOid, and RelFileLocator::spcOid.
Referenced by DropRelationAllLocalBuffers(), DropRelationBuffers(), DropRelationLocalBuffers(), DropRelationsAllBuffers(), EvictRelUnpinnedBuffers(), FindAndDropRelationBuffers(), FlushRelationBuffers(), FlushRelationsAllBuffers(), MarkDirtyRelUnpinnedBuffers(), and ReleaseAndReadBuffer().
|
inlinestatic |
Definition at line 184 of file buf_internals.h.
References buftag::forkNum, and buftag::relNumber.
Referenced by ClearBufferTag(), and InitBufferTag().
Definition at line 204 of file buf_internals.h.
References buftag::blockNum, BufTagSetRelForkDetails(), buftag::dbOid, InvalidBlockNumber, InvalidForkNumber, InvalidOid, InvalidRelFileNumber, and buftag::spcOid.
Referenced by BufferManagerShmemInit(), InvalidateBuffer(), InvalidateLocalBuffer(), and InvalidateVictimBuffer().
|
extern |
Definition at line 702 of file localbuf.c.
References BM_TAG_VALID, BufTagMatchesRelFileLocator(), fb(), GetLocalBufferDescriptor(), i, InvalidateLocalBuffer(), NLocBuffer, and pg_atomic_read_u64().
Referenced by DropRelationsAllBuffers().
|
extern |
Definition at line 665 of file localbuf.c.
References BM_TAG_VALID, BufTagGetForkNum(), BufTagMatchesRelFileLocator(), fb(), GetLocalBufferDescriptor(), i, InvalidateLocalBuffer(), j, NLocBuffer, and pg_atomic_read_u64().
Referenced by DropRelationBuffers().
|
extern |
Definition at line 346 of file localbuf.c.
References Assert, BM_DIRTY, BM_JUST_DIRTIED, BM_TAG_VALID, BM_VALID, BMR_GET_SMGR, buf, BUF_USAGECOUNT_ONE, BufferDescriptorGetBuffer(), CurrentResourceOwner, ereport, errcode(), errmsg(), ERROR, fb(), GetLocalBufferDescriptor(), GetLocalVictimBuffer(), HASH_ENTER, hash_search(), i, InitBufferTag(), InitLocalBuffers(), InvalidBlockNumber, IOCONTEXT_NORMAL, IOOBJECT_TEMP_RELATION, IOOP_EXTEND, LimitAdditionalLocalPins(), BufferUsage::local_blks_written, LocalBufHash, LocalBufHdrGetBlock, MaxBlockNumber, MemSet, pg_atomic_read_u64(), pg_atomic_unlocked_write_u64(), pgBufferUsage, pgstat_count_io_op_time(), pgstat_prepare_io_time(), PinLocalBuffer(), relpath, ResourceOwnerEnlarge(), smgrnblocks(), smgrzeroextend(), StartLocalBufferIO(), str, track_io_timing, and UnpinLocalBuffer().
Referenced by ExtendBufferedRelCommon().
|
extern |
Definition at line 183 of file localbuf.c.
References Assert, BufferDescriptorGetBuffer(), BufTagGetForkNum(), BufTagGetRelFileLocator(), elog, ERROR, fb(), IOCONTEXT_NORMAL, IOOBJECT_TEMP_RELATION, IOOP_WRITE, BufferUsage::local_blks_written, LocalBufHdrGetBlock, LocalRefCount, MyProcNumber, PageSetChecksumInplace(), pgBufferUsage, pgstat_count_io_op_time(), pgstat_prepare_io_time(), smgropen(), smgrwrite(), StartLocalBufferIO(), TerminateLocalBufferIO(), and track_io_timing.
Referenced by FlushRelationBuffers(), GetLocalVictimBuffer(), and invalidate_rel_block().
|
inlinestatic |
Definition at line 423 of file buf_internals.h.
References BufferDescriptors.
Referenced by AbortBufferIO(), apw_dump_now(), buffer_call_start_io(), buffer_call_terminate_io(), buffer_readv_complete_one(), buffer_stage_common(), BufferAlloc(), BufferGetBlockNumber(), BufferGetLSNAtomic(), BufferGetTag(), BufferIsDirty(), BufferIsLockedByMe(), BufferIsLockedByMeInMode(), BufferIsPermanent(), BufferManagerShmemInit(), BufferSync(), CheckReadBuffersOperation(), ConditionalLockBuffer(), ConditionalLockBufferForCleanup(), create_toy_buffer(), DebugPrintBufferRefcount(), DropDatabaseBuffers(), DropRelationBuffers(), DropRelationsAllBuffers(), EvictAllUnpinnedBuffers(), EvictRelUnpinnedBuffers(), EvictUnpinnedBuffer(), ExtendBufferedRelShared(), FindAndDropRelationBuffers(), FlushDatabaseBuffers(), FlushOneBuffer(), FlushRelationBuffers(), FlushRelationsAllBuffers(), GetBufferFromRing(), invalidate_rel_block(), IsBufferCleanupOK(), LockBufferForCleanup(), LockBufferInternal(), MarkBufferDirty(), MarkBufferDirtyHint(), MarkDirtyAllUnpinnedBuffers(), MarkDirtyRelUnpinnedBuffers(), MarkDirtyUnpinnedBuffer(), pg_buffercache_os_pages_internal(), pg_buffercache_pages(), pg_buffercache_summary(), pg_buffercache_usage_counts(), read_rel_block_ll(), ReadBuffersCanStartIOOnce(), ReadRecentBuffer(), ReleaseAndReadBuffer(), ReleaseBuffer(), ResOwnerReleaseBuffer(), StartReadBuffersImpl(), StrategyGetBuffer(), SyncOneBuffer(), TrackNewBufferPin(), UnlockBuffer(), and ZeroAndLockBuffer().
|
inlinestatic |
Definition at line 429 of file buf_internals.h.
References LocalBufferDescriptors.
Referenced by buffer_call_start_io(), buffer_call_terminate_io(), buffer_readv_complete_one(), buffer_stage_common(), BufferGetBlockNumber(), BufferGetTag(), BufferIsDirty(), CheckReadBuffersOperation(), create_toy_buffer(), DebugPrintBufferRefcount(), DropRelationAllLocalBuffers(), DropRelationLocalBuffers(), ExtendBufferedRelLocal(), FlushRelationBuffers(), GetLocalVictimBuffer(), InitLocalBuffers(), invalidate_rel_block(), LocalBufferAlloc(), MarkLocalBufferDirty(), modify_rel_block(), read_rel_block_ll(), ReadBuffersCanStartIOOnce(), ReadRecentBuffer(), ReleaseAndReadBuffer(), StartReadBuffersImpl(), UnpinLocalBufferNoOwner(), and ZeroAndLockBuffer().
|
inlinestatic |
Definition at line 213 of file buf_internals.h.
References buftag::blockNum, BufTagSetRelForkDetails(), buftag::dbOid, RelFileLocator::dbOid, RelFileLocator::relNumber, buftag::spcOid, and RelFileLocator::spcOid.
Referenced by BufferAlloc(), ExtendBufferedRelLocal(), ExtendBufferedRelShared(), FindAndDropRelationBuffers(), LocalBufferAlloc(), PrefetchLocalBuffer(), PrefetchSharedBuffer(), and ReadRecentBuffer().
Definition at line 51 of file buf_table.c.
References HASHCTL::entrysize, HASH_BLOBS, HASH_ELEM, HASH_FIXED_SIZE, HASH_PARTITION, HASHCTL::keysize, NUM_BUFFER_PARTITIONS, HASHCTL::num_partitions, SharedBufHash, and ShmemInitHash().
Referenced by StrategyInitialize().
|
extern |
Definition at line 605 of file localbuf.c.
References Assert, BUF_STATE_GET_REFCOUNT, BufferDescriptorGetBuffer(), BufTagGetForkNum(), BufTagGetRelFileLocator(), ClearBufferTag(), elog, ERROR, fb(), HASH_REMOVE, hash_search(), LocalBufHash, LocalRefCount, MyProcNumber, pg_atomic_read_u64(), pg_atomic_unlocked_write_u64(), pgaio_wref_valid(), pgaio_wref_wait(), and relpathbackend.
Referenced by DropRelationAllLocalBuffers(), DropRelationLocalBuffers(), GetLocalVictimBuffer(), invalidate_rel_block(), and modify_rel_block().
|
extern |
Definition at line 747 of file freelist.c.
References BAS_BULKREAD, BAS_BULKWRITE, BAS_NORMAL, BAS_VACUUM, BufferAccessStrategyData::btype, elog, ERROR, IOCONTEXT_BULKREAD, IOCONTEXT_BULKWRITE, IOCONTEXT_NORMAL, IOCONTEXT_VACUUM, and pg_unreachable.
Referenced by AsyncReadBuffers(), ExtendBufferedRelShared(), PinBufferForBlock(), and WaitReadBuffers().
|
extern |
Definition at line 7319 of file bufmgr.c.
References buftag::blockNum, BufTagGetForkNum(), BufTagGetRelFileLocator(), cur, fb(), i, INVALID_PROC_NUMBER, IOOBJECT_RELATION, IOOP_WRITEBACK, next, pgstat_count_io_op_time(), pgstat_prepare_io_time(), RelFileLocatorEquals, smgropen(), smgrwriteback(), and track_io_timing.
Referenced by BufferSync(), and ScheduleBufferTagForWriteback().
|
extern |
Definition at line 119 of file localbuf.c.
References Assert, BM_TAG_VALID, BUF_FLAG_MASK, BUF_USAGECOUNT_MASK, BUF_USAGECOUNT_ONE, BufferTagsEqual(), CurrentResourceOwner, elog, ERROR, fb(), GetLocalBufferDescriptor(), GetLocalVictimBuffer(), HASH_ENTER, HASH_FIND, hash_search(), InitBufferTag(), InitLocalBuffers(), LocalBufHash, RelFileLocatorBackend::locator, pg_atomic_read_u64(), pg_atomic_unlocked_write_u64(), PinLocalBuffer(), ResourceOwnerEnlarge(), and SMgrRelationData::smgr_rlocator.
Referenced by PinBufferForBlock().
|
extern |
Definition at line 7097 of file bufmgr.c.
References Assert, BM_LOCKED, BufferDescriptorGetBuffer(), BufferIsLocal, fb(), finish_spin_delay(), init_local_spin_delay, likely, perform_spin_delay(), pg_atomic_fetch_or_u64(), pg_atomic_read_u64(), and BufferDesc::state.
Referenced by AbortBufferIO(), apw_dump_now(), buffer_stage_common(), BufferAlloc(), BufferGetLSNAtomic(), BufferLockDequeueSelf(), BufferLockQueueSelf(), BufferLockWakeup(), BufferSync(), ConditionalLockBufferForCleanup(), create_toy_buffer(), DropDatabaseBuffers(), DropRelationBuffers(), DropRelationsAllBuffers(), EvictAllUnpinnedBuffers(), EvictRelUnpinnedBuffers(), EvictUnpinnedBuffer(), ExtendBufferedRelShared(), FindAndDropRelationBuffers(), FlushBuffer(), FlushDatabaseBuffers(), FlushRelationBuffers(), FlushRelationsAllBuffers(), GetVictimBuffer(), InvalidateBuffer(), InvalidateVictimBuffer(), IsBufferCleanupOK(), LockBufferForCleanup(), MarkBufferDirtyHint(), MarkDirtyAllUnpinnedBuffers(), MarkDirtyRelUnpinnedBuffers(), MarkDirtyUnpinnedBuffer(), pg_buffercache_os_pages_internal(), pg_buffercache_pages(), StartBufferIO(), SyncOneBuffer(), TerminateBufferIO(), UnlockBuffers(), WaitIO(), and WakePinCountWaiter().
Definition at line 491 of file localbuf.c.
References Assert, BM_DIRTY, BufferIsLocal, fb(), fprintf, GetLocalBufferDescriptor(), BufferUsage::local_blks_dirtied, LocalRefCount, pg_atomic_read_u64(), pg_atomic_unlocked_write_u64(), and pgBufferUsage.
Referenced by MarkBufferDirty(), and MarkBufferDirtyHint().
|
extern |
Definition at line 805 of file localbuf.c.
References BM_MAX_USAGE_COUNT, BM_VALID, BUF_REFCOUNT_ONE, BUF_STATE_GET_USAGECOUNT, BUF_USAGECOUNT_ONE, BufferDescriptorGetBuffer(), CurrentResourceOwner, fb(), LocalBufHdrGetBlock, LocalRefCount, NLocalPinnedBuffers, pg_atomic_read_u64(), pg_atomic_unlocked_write_u64(), ResourceOwnerRememberBuffer(), and VALGRIND_MAKE_MEM_DEFINED.
Referenced by ExtendBufferedRelLocal(), FlushRelationBuffers(), GetLocalVictimBuffer(), LocalBufferAlloc(), and ReadRecentBuffer().
|
extern |
Definition at line 72 of file localbuf.c.
References fb(), HASH_FIND, hash_search(), InitBufferTag(), PrefetchBufferResult::initiated_io, InitLocalBuffers(), InvalidBuffer, IO_DIRECT_DATA, io_direct_flags, LocalBufHash, RelFileLocatorBackend::locator, PrefetchBufferResult::recent_buffer, SMgrRelationData::smgr_rlocator, and smgrprefetch().
Referenced by PrefetchBuffer().
|
inlinestatic |
Definition at line 532 of file buf_internals.h.
References buffer_resowner_desc, Int32GetDatum(), and ResourceOwnerForget().
Referenced by UnpinBuffer(), and UnpinLocalBuffer().
|
inlinestatic |
Definition at line 542 of file buf_internals.h.
References buffer_io_resowner_desc, Int32GetDatum(), and ResourceOwnerForget().
Referenced by buffer_call_start_io(), buffer_stage_common(), and TerminateBufferIO().
|
inlinestatic |
Definition at line 527 of file buf_internals.h.
References buffer_resowner_desc, Int32GetDatum(), and ResourceOwnerRemember().
Referenced by IncrBufferRefCount(), PinBuffer(), PinLocalBuffer(), and TrackNewBufferPin().
|
inlinestatic |
Definition at line 537 of file buf_internals.h.
References buffer_io_resowner_desc, Int32GetDatum(), and ResourceOwnerRemember().
Referenced by StartBufferIO().
|
extern |
Definition at line 7269 of file bufmgr.c.
References Assert, enableFsync, fb(), IO_DIRECT_DATA, io_direct_flags, IssuePendingWritebacks(), PendingWriteback::tag, and WRITEBACK_MAX_PENDING_FLUSHES.
Referenced by GetVictimBuffer(), and SyncOneBuffer().
|
extern |
Definition at line 6879 of file bufmgr.c.
References BM_DIRTY, BM_IO_IN_PROGRESS, BM_VALID, buf, BufferDescriptorGetBuffer(), CurrentResourceOwner, fb(), LockBufHdr(), ResourceOwnerEnlarge(), ResourceOwnerRememberBufferIO(), UnlockBufHdr(), UnlockBufHdrExt(), and WaitIO().
Referenced by buffer_call_start_io(), ExtendBufferedRelShared(), FlushBuffer(), read_rel_block_ll(), ReadBuffersCanStartIOOnce(), and ZeroAndLockBuffer().
|
extern |
Definition at line 523 of file localbuf.c.
References BM_DIRTY, BM_VALID, fb(), pg_atomic_read_u64(), pgaio_wref_valid(), and pgaio_wref_wait().
Referenced by buffer_call_start_io(), ExtendBufferedRelLocal(), FlushLocalBuffer(), read_rel_block_ll(), ReadBuffersCanStartIOOnce(), and ZeroAndLockBuffer().
| StaticAssertDecl | ( | ) |
| StaticAssertDecl | ( | BUF_REFCOUNT_BITS+BUF_USAGECOUNT_BITS+BUF_FLAG_BITS+BUF_LOCK_BITS<= | 64, |
| "parts of buffer state space need to be <= 64" | |||
| ) |
| StaticAssertDecl | ( | MAX_BACKENDS_BITS<= | BUF_LOCK_BITS - 2, |
| "MAX_BACKENDS_BITS needs to be <= BUF_LOCK_BITS - 2" | |||
| ) |
| StaticAssertDecl | ( | MAX_BACKENDS_BITS<= | BUF_REFCOUNT_BITS, |
| "MAX_BACKENDS_BITS needs to be <= BUF_REFCOUNT_BITS" | |||
| ) |
|
extern |
Definition at line 174 of file freelist.c.
References AddBufferToRing(), BufferStrategyControl::bgwprocno, BM_LOCKED, buf, BUF_REFCOUNT_ONE, BUF_STATE_GET_REFCOUNT, BUF_STATE_GET_USAGECOUNT, BUF_USAGECOUNT_ONE, BufferDescriptorGetBuffer(), ClockSweepTick(), elog, ERROR, fb(), GetBufferDescriptor(), GetBufferFromRing(), GetPGProcByNumber, INT_ACCESS_ONCE, NBuffers, BufferStrategyControl::numBufferAllocs, pg_atomic_compare_exchange_u64(), pg_atomic_fetch_add_u32(), pg_atomic_read_u64(), SetLatch(), StrategyControl, TrackNewBufferPin(), unlikely, and WaitBufHdrUnlocked().
Referenced by GetVictimBuffer().
Definition at line 401 of file freelist.c.
References Assert, BufferStrategyControl::bgwprocno, BufferStrategyControl::buffer_strategy_lock, BufferStrategyControl::completePasses, init, InitBufTable(), NBuffers, BufferStrategyControl::nextVictimBuffer, NUM_BUFFER_PARTITIONS, BufferStrategyControl::numBufferAllocs, pg_atomic_init_u32(), ShmemInitStruct(), SpinLockInit, and StrategyControl.
Referenced by BufferManagerShmemInit().
Definition at line 358 of file freelist.c.
References BufferStrategyControl::bgwprocno, BufferStrategyControl::buffer_strategy_lock, SpinLockAcquire, SpinLockRelease, and StrategyControl.
Referenced by BackgroundWriterMain().
|
extern |
Definition at line 787 of file freelist.c.
References BAS_BULKREAD, BufferAccessStrategyData::btype, buf, BufferDescriptorGetBuffer(), BufferAccessStrategyData::buffers, BufferAccessStrategyData::current, fb(), and InvalidBuffer.
Referenced by GetVictimBuffer().
Definition at line 380 of file freelist.c.
References add_size(), BufTableShmemSize(), MAXALIGN, NBuffers, and NUM_BUFFER_PARTITIONS.
Referenced by BufferManagerShmemSize().
Definition at line 321 of file freelist.c.
References BufferStrategyControl::buffer_strategy_lock, BufferStrategyControl::completePasses, fb(), NBuffers, BufferStrategyControl::nextVictimBuffer, BufferStrategyControl::numBufferAllocs, pg_atomic_exchange_u32(), pg_atomic_read_u32(), SpinLockAcquire, SpinLockRelease, and StrategyControl.
Referenced by BgBufferSync().
|
extern |
Definition at line 6937 of file bufmgr.c.
References Assert, BM_CHECKPOINT_NEEDED, BM_DIRTY, BM_IO_ERROR, BM_IO_IN_PROGRESS, BM_JUST_DIRTIED, BM_PIN_COUNT_WAITER, buf, BUF_STATE_GET_REFCOUNT, BufferDescriptorGetBuffer(), BufferDescriptorGetIOCV(), ConditionVariableBroadcast(), CurrentResourceOwner, fb(), LockBufHdr(), pgaio_wref_clear(), ResourceOwnerForgetBufferIO(), UnlockBufHdrExt(), and WakePinCountWaiter().
Referenced by AbortBufferIO(), buffer_call_terminate_io(), buffer_readv_complete_one(), ExtendBufferedRelShared(), FlushBuffer(), and ZeroAndLockBuffer().
|
extern |
Definition at line 562 of file localbuf.c.
References Assert, BUF_REFCOUNT_ONE, BUF_STATE_GET_REFCOUNT, fb(), pg_atomic_read_u64(), pg_atomic_unlocked_write_u64(), and pgaio_wref_clear().
Referenced by buffer_call_terminate_io(), buffer_readv_complete_one(), FlushLocalBuffer(), and ZeroAndLockBuffer().
Definition at line 3416 of file bufmgr.c.
References buf, BufHdrGetBlock, CurrentResourceOwner, fb(), GetBufferDescriptor(), NewPrivateRefCountEntry(), ResourceOwnerRememberBuffer(), and VALGRIND_MAKE_MEM_DEFINED.
Referenced by GetBufferFromRing(), PinBuffer(), PinBuffer_Locked(), and StrategyGetBuffer().
|
inlinestatic |
Definition at line 459 of file buf_internals.h.
References Assert, BM_LOCKED, pg_atomic_fetch_sub_u64(), pg_atomic_read_u64(), and BufferDesc::state.
Referenced by AbortBufferIO(), apw_dump_now(), BufferGetLSNAtomic(), BufferLockDequeueSelf(), BufferLockQueueSelf(), ConditionalLockBufferForCleanup(), DropDatabaseBuffers(), DropRelationBuffers(), DropRelationsAllBuffers(), EvictRelUnpinnedBuffers(), EvictUnpinnedBufferInternal(), FindAndDropRelationBuffers(), FlushDatabaseBuffers(), FlushRelationBuffers(), FlushRelationsAllBuffers(), GetVictimBuffer(), InvalidateBuffer(), InvalidateVictimBuffer(), IsBufferCleanupOK(), LockBufferForCleanup(), MarkDirtyRelUnpinnedBuffers(), MarkDirtyUnpinnedBufferInternal(), pg_buffercache_os_pages_internal(), pg_buffercache_pages(), StartBufferIO(), SyncOneBuffer(), WaitIO(), and WakePinCountWaiter().
|
inlinestatic |
Definition at line 475 of file buf_internals.h.
References Assert, BM_LOCKED, BUF_REFCOUNT_ONE, fb(), pg_atomic_compare_exchange_u64(), and BufferDesc::state.
Referenced by buffer_stage_common(), BufferAlloc(), BufferSync(), create_toy_buffer(), ExtendBufferedRelShared(), FlushBuffer(), InvalidateBuffer(), InvalidateVictimBuffer(), LockBufferForCleanup(), MarkBufferDirtyHint(), PinBuffer_Locked(), StartBufferIO(), TerminateBufferIO(), UnlockBuffers(), and WakePinCountWaiter().
Definition at line 841 of file localbuf.c.
References CurrentResourceOwner, ResourceOwnerForgetBuffer(), and UnpinLocalBufferNoOwner().
Referenced by ExtendBufferedRelLocal(), FlushRelationBuffers(), ReleaseAndReadBuffer(), and ReleaseBuffer().
Definition at line 848 of file localbuf.c.
References Assert, BUF_REFCOUNT_ONE, BUF_STATE_GET_REFCOUNT, BufferIsLocal, fb(), GetLocalBufferDescriptor(), LocalBufHdrGetBlock, LocalRefCount, NLocalPinnedBuffers, pg_atomic_read_u64(), pg_atomic_unlocked_write_u64(), and VALGRIND_MAKE_MEM_NOACCESS.
Referenced by ResOwnerReleaseBuffer(), and UnpinLocalBuffer().
|
extern |
Definition at line 7145 of file bufmgr.c.
References BM_LOCKED, buf, fb(), finish_spin_delay(), init_local_spin_delay, perform_spin_delay(), and pg_atomic_read_u64().
Referenced by GetBufferFromRing(), MarkBufferDirty(), PinBuffer(), and StrategyGetBuffer().
|
extern |
Definition at line 7257 of file bufmgr.c.
References Assert, WritebackContext::max_pending, WritebackContext::nr_pending, and WRITEBACK_MAX_PENDING_FLUSHES.
Referenced by BackgroundWriterMain(), BufferManagerShmemInit(), and BufferSync().
|
extern |
Definition at line 25 of file buf_init.c.
Referenced by BufferManagerShmemInit(), and GetVictimBuffer().
|
extern |
Definition at line 269 of file bufmgr.c.
Referenced by ResourceOwnerForgetBufferIO(), and ResourceOwnerRememberBufferIO().
|
extern |
Definition at line 278 of file bufmgr.c.
Referenced by ResourceOwnerForgetBuffer(), and ResourceOwnerRememberBuffer().
|
extern |
Definition at line 22 of file buf_init.c.
Referenced by BufferManagerShmemInit(), and GetBufferDescriptor().
|
extern |
Definition at line 24 of file buf_init.c.
Referenced by BufferDescriptorGetIOCV(), and BufferManagerShmemInit().
|
extern |
Definition at line 26 of file buf_init.c.
Referenced by BufferManagerShmemInit(), and BufferSync().
|
extern |
Definition at line 47 of file localbuf.c.
Referenced by GetLocalBufferDescriptor(), and InitLocalBuffers().