|
PostgreSQL Source Code git master
|
#include "postgres.h"#include "common/blkreftable.h"#include "common/hashfn.h"#include "port/pg_crc32c.h"#include "lib/simplehash.h"
Go to the source code of this file.
Data Structures | |
| struct | BlockRefTableKey |
| struct | BlockRefTableEntry |
| struct | BlockRefTable |
| struct | BlockRefTableSerializedEntry |
| struct | BlockRefTableBuffer |
| struct | BlockRefTableReader |
| struct | BlockRefTableWriter |
Macros | |
| #define | BLOCKS_PER_CHUNK (1 << 16) |
| #define | BLOCKS_PER_ENTRY (BITS_PER_BYTE * sizeof(uint16)) |
| #define | MAX_ENTRIES_PER_CHUNK (BLOCKS_PER_CHUNK / BLOCKS_PER_ENTRY) |
| #define | INITIAL_ENTRIES_PER_CHUNK 16 |
| #define | SH_PREFIX blockreftable |
| #define | SH_ELEMENT_TYPE BlockRefTableEntry |
| #define | SH_KEY_TYPE BlockRefTableKey |
| #define | SH_KEY key |
| #define | SH_HASH_KEY(tb, key) hash_bytes((const unsigned char *) &key, sizeof(BlockRefTableKey)) |
| #define | SH_EQUAL(tb, a, b) (memcmp(&a, &b, sizeof(BlockRefTableKey)) == 0) |
| #define | SH_SCOPE static inline |
| #define | SH_DEFINE |
| #define | SH_DECLARE |
| #define | BUFSIZE 65536 |
| #define BLOCKS_PER_CHUNK (1 << 16) |
Definition at line 78 of file blkreftable.c.
| #define BLOCKS_PER_ENTRY (BITS_PER_BYTE * sizeof(uint16)) |
Definition at line 79 of file blkreftable.c.
| #define BUFSIZE 65536 |
Definition at line 166 of file blkreftable.c.
| #define INITIAL_ENTRIES_PER_CHUNK 16 |
Definition at line 81 of file blkreftable.c.
| #define MAX_ENTRIES_PER_CHUNK (BLOCKS_PER_CHUNK / BLOCKS_PER_ENTRY) |
Definition at line 80 of file blkreftable.c.
| #define SH_DECLARE |
Definition at line 134 of file blkreftable.c.
| #define SH_DEFINE |
Definition at line 133 of file blkreftable.c.
| #define SH_ELEMENT_TYPE BlockRefTableEntry |
Definition at line 123 of file blkreftable.c.
Definition at line 128 of file blkreftable.c.
| #define SH_HASH_KEY | ( | tb, | |
| key | |||
| ) | hash_bytes((const unsigned char *) &key, sizeof(BlockRefTableKey)) |
Definition at line 126 of file blkreftable.c.
| #define SH_KEY key |
Definition at line 125 of file blkreftable.c.
| #define SH_KEY_TYPE BlockRefTableKey |
Definition at line 124 of file blkreftable.c.
| #define SH_PREFIX blockreftable |
Definition at line 122 of file blkreftable.c.
Definition at line 129 of file blkreftable.c.
Definition at line 82 of file blkreftable.c.
Definition at line 1151 of file blkreftable.c.
Referenced by WriteBlockRefTable().
| int BlockRefTableEntryGetBlocks | ( | BlockRefTableEntry * | entry, |
| BlockNumber | start_blkno, | ||
| BlockNumber | stop_blkno, | ||
| BlockNumber * | blocks, | ||
| int | nblocks | ||
| ) |
Definition at line 369 of file blkreftable.c.
References Assert, BLOCKS_PER_CHUNK, BLOCKS_PER_ENTRY, BlockRefTableEntry::chunk_data, BlockRefTableEntry::chunk_usage, fb(), i, MAX_ENTRIES_PER_CHUNK, and BlockRefTableEntry::nchunks.
Referenced by GetFileBackupMethod().
| void BlockRefTableEntryMarkBlockModified | ( | BlockRefTableEntry * | entry, |
| ForkNumber | forknum, | ||
| BlockNumber | blknum | ||
| ) |
Definition at line 965 of file blkreftable.c.
References Assert, BLOCKS_PER_CHUNK, BLOCKS_PER_ENTRY, BlockRefTableEntry::chunk_data, BlockRefTableEntry::chunk_size, BlockRefTableEntry::chunk_usage, fb(), i, INITIAL_ENTRIES_PER_CHUNK, j, Max, MAX_ENTRIES_PER_CHUNK, BlockRefTableEntry::nchunks, palloc0(), palloc0_array, palloc_array, pfree(), and repalloc().
Referenced by BlockRefTableMarkBlockModified().
| void BlockRefTableEntrySetLimitBlock | ( | BlockRefTableEntry * | entry, |
| BlockNumber | limit_block | ||
| ) |
Definition at line 894 of file blkreftable.c.
References Assert, BLOCKS_PER_CHUNK, BLOCKS_PER_ENTRY, BlockRefTableEntry::chunk_data, BlockRefTableEntry::chunk_usage, fb(), i, j, BlockRefTableEntry::limit_block, MAX_ENTRIES_PER_CHUNK, and BlockRefTableEntry::nchunks.
Referenced by BlockRefTableSetLimitBlock().
|
static |
Definition at line 1291 of file blkreftable.c.
References BlockRefTableFlush(), BlockRefTableWrite(), BlockRefTableBuffer::crc, crc, fb(), and FIN_CRC32C.
Referenced by DestroyBlockRefTableWriter(), and WriteBlockRefTable().
|
static |
Definition at line 1183 of file blkreftable.c.
References BlockRefTableBuffer::data, BlockRefTableBuffer::io_callback, BlockRefTableBuffer::io_callback_arg, and BlockRefTableBuffer::used.
Referenced by BlockRefTableFileTerminate().
| void BlockRefTableFreeEntry | ( | BlockRefTableEntry * | entry | ) |
Definition at line 1121 of file blkreftable.c.
References BlockRefTableEntry::chunk_data, BlockRefTableEntry::chunk_size, BlockRefTableEntry::chunk_usage, fb(), and pfree().
| BlockRefTableEntry * BlockRefTableGetEntry | ( | BlockRefTable * | brtab, |
| const RelFileLocator * | rlocator, | ||
| ForkNumber | forknum, | ||
| BlockNumber * | limit_block | ||
| ) |
Definition at line 340 of file blkreftable.c.
References Assert, fb(), BlockRefTable::hash, and BlockRefTableEntry::limit_block.
Referenced by GetFileBackupMethod().
| void BlockRefTableMarkBlockModified | ( | BlockRefTable * | brtab, |
| const RelFileLocator * | rlocator, | ||
| ForkNumber | forknum, | ||
| BlockNumber | blknum | ||
| ) |
Definition at line 297 of file blkreftable.c.
References BlockRefTableEntryMarkBlockModified(), fb(), BlockRefTable::hash, InvalidBlockNumber, BlockRefTable::mcxt, and MemoryContextSwitchTo().
Referenced by PrepareForIncrementalBackup(), and SummarizeWAL().
|
static |
Definition at line 1195 of file blkreftable.c.
References BlockRefTableReader::buffer, BUFSIZE, COMP_CRC32C, BlockRefTableBuffer::crc, BlockRefTableBuffer::cursor, BlockRefTableBuffer::data, data, BlockRefTableReader::error_callback, BlockRefTableReader::error_callback_arg, BlockRefTableReader::error_filename, fb(), BlockRefTableBuffer::io_callback, BlockRefTableBuffer::io_callback_arg, Min, and BlockRefTableBuffer::used.
Referenced by BlockRefTableReaderGetBlocks(), BlockRefTableReaderNextRelation(), and CreateBlockRefTableReader().
| unsigned BlockRefTableReaderGetBlocks | ( | BlockRefTableReader * | reader, |
| BlockNumber * | blocks, | ||
| int | nblocks | ||
| ) |
Definition at line 689 of file blkreftable.c.
References Assert, BlockRefTableRead(), BLOCKS_PER_CHUNK, BLOCKS_PER_ENTRY, BlockRefTableReader::chunk_data, BlockRefTableReader::chunk_position, BlockRefTableReader::chunk_size, BlockRefTableReader::consumed_chunks, fb(), MAX_ENTRIES_PER_CHUNK, and BlockRefTableReader::total_chunks.
Referenced by dump_one_relation(), pg_wal_summary_contents(), and PrepareForIncrementalBackup().
| bool BlockRefTableReaderNextRelation | ( | BlockRefTableReader * | reader, |
| RelFileLocator * | rlocator, | ||
| ForkNumber * | forknum, | ||
| BlockNumber * | limit_block | ||
| ) |
Definition at line 613 of file blkreftable.c.
References Assert, BlockRefTableRead(), BlockRefTableReader::buffer, BlockRefTableReader::chunk_size, BlockRefTableReader::consumed_chunks, BlockRefTableBuffer::crc, EQ_CRC32C, BlockRefTableReader::error_callback, BlockRefTableReader::error_callback_arg, BlockRefTableReader::error_filename, fb(), FIN_CRC32C, palloc_array, pfree(), and BlockRefTableReader::total_chunks.
Referenced by main(), pg_wal_summary_contents(), and PrepareForIncrementalBackup().
| void BlockRefTableSetLimitBlock | ( | BlockRefTable * | brtab, |
| const RelFileLocator * | rlocator, | ||
| ForkNumber | forknum, | ||
| BlockNumber | limit_block | ||
| ) |
Definition at line 262 of file blkreftable.c.
References BlockRefTableEntrySetLimitBlock(), fb(), and BlockRefTable::hash.
Referenced by PrepareForIncrementalBackup(), SummarizeDbaseRecord(), SummarizeSmgrRecord(), and SummarizeXactRecord().
|
static |
Definition at line 1260 of file blkreftable.c.
References Assert, BUFSIZE, COMP_CRC32C, BlockRefTableBuffer::crc, BlockRefTableBuffer::data, data, fb(), BlockRefTableBuffer::io_callback, BlockRefTableBuffer::io_callback_arg, and BlockRefTableBuffer::used.
Referenced by BlockRefTableFileTerminate(), BlockRefTableWriteEntry(), CreateBlockRefTableWriter(), and WriteBlockRefTable().
| void BlockRefTableWriteEntry | ( | BlockRefTableWriter * | writer, |
| BlockRefTableEntry * | entry | ||
| ) |
Definition at line 817 of file blkreftable.c.
References BlockRefTableWrite(), BlockRefTableEntry::chunk_data, BlockRefTableEntry::chunk_usage, fb(), BlockRefTableKey::forknum, j, BlockRefTableEntry::key, BlockRefTableEntry::limit_block, BlockRefTableEntry::nchunks, BlockRefTableKey::rlocator, and BlockRefTableSerializedEntry::rlocator.
| BlockRefTableEntry * CreateBlockRefTableEntry | ( | RelFileLocator | rlocator, |
| ForkNumber | forknum | ||
| ) |
Definition at line 875 of file blkreftable.c.
References fb(), BlockRefTableKey::forknum, InvalidBlockNumber, BlockRefTableEntry::key, BlockRefTableEntry::limit_block, palloc0_object, and BlockRefTableKey::rlocator.
| BlockRefTableReader * CreateBlockRefTableReader | ( | io_callback_fn | read_callback, |
| void * | read_callback_arg, | ||
| char * | error_filename, | ||
| report_error_fn | error_callback, | ||
| void * | error_callback_arg | ||
| ) |
Definition at line 577 of file blkreftable.c.
References BLOCKREFTABLE_MAGIC, BlockRefTableRead(), BlockRefTableReader::buffer, BlockRefTableBuffer::crc, BlockRefTableReader::error_callback, BlockRefTableReader::error_callback_arg, BlockRefTableReader::error_filename, fb(), INIT_CRC32C, BlockRefTableBuffer::io_callback, BlockRefTableBuffer::io_callback_arg, and palloc0_object.
Referenced by main(), pg_wal_summary_contents(), and PrepareForIncrementalBackup().
| BlockRefTableWriter * CreateBlockRefTableWriter | ( | io_callback_fn | write_callback, |
| void * | write_callback_arg | ||
| ) |
Definition at line 790 of file blkreftable.c.
References BLOCKREFTABLE_MAGIC, BlockRefTableWrite(), fb(), INIT_CRC32C, and palloc0_object.
| BlockRefTable * CreateEmptyBlockRefTable | ( | void | ) |
Definition at line 235 of file blkreftable.c.
References CurrentMemoryContext, fb(), BlockRefTable::hash, BlockRefTable::mcxt, and palloc_object.
| void DestroyBlockRefTableReader | ( | BlockRefTableReader * | reader | ) |
Definition at line 773 of file blkreftable.c.
References BlockRefTableReader::chunk_size, fb(), and pfree().
Referenced by main(), pg_wal_summary_contents(), and PrepareForIncrementalBackup().
| void DestroyBlockRefTableWriter | ( | BlockRefTableWriter * | writer | ) |
Definition at line 855 of file blkreftable.c.
References BlockRefTableFileTerminate(), fb(), and pfree().
| void WriteBlockRefTable | ( | BlockRefTable * | brtab, |
| io_callback_fn | write_callback, | ||
| void * | write_callback_arg | ||
| ) |
Definition at line 474 of file blkreftable.c.
References Assert, BLOCKREFTABLE_MAGIC, BlockRefTableComparator(), BlockRefTableFileTerminate(), BlockRefTableWrite(), BlockRefTableBuffer::crc, fb(), BlockRefTable::hash, i, INIT_CRC32C, BlockRefTableBuffer::io_callback, BlockRefTableBuffer::io_callback_arg, j, palloc_array, qsort, and BlockRefTableSerializedEntry::rlocator.
Referenced by SummarizeWAL().