|
PostgreSQL Source Code git master
|
#include "postgres_fe.h"#include <sys/stat.h>#include <unistd.h>#include "access/xlog_internal.h"#include "catalog/pg_tablespace_d.h"#include "common/file_utils.h"#include "common/hashfn_unstable.h"#include "common/string.h"#include "datapagemap.h"#include "filemap.h"#include "pg_rewind.h"#include "lib/simplehash.h"
Go to the source code of this file.
Data Structures | |
| struct | keepwal_entry |
| struct | exclude_list_item |
Macros | |
| #define | SH_PREFIX filehash |
| #define | SH_ELEMENT_TYPE file_entry_t |
| #define | SH_KEY_TYPE const char * |
| #define | SH_KEY path |
| #define | SH_HASH_KEY(tb, key) hash_string(key) |
| #define | SH_EQUAL(tb, a, b) (strcmp(a, b) == 0) |
| #define | SH_SCOPE static inline |
| #define | SH_RAW_ALLOCATOR pg_malloc0 |
| #define | SH_DECLARE |
| #define | SH_DEFINE |
| #define | FILEHASH_INITIAL_SIZE 1000 |
| #define | SH_PREFIX keepwal |
| #define | SH_ELEMENT_TYPE keepwal_entry |
| #define | SH_KEY_TYPE const char * |
| #define | SH_KEY path |
| #define | SH_HASH_KEY(tb, key) hash_string(key) |
| #define | SH_EQUAL(tb, a, b) (strcmp(a, b) == 0) |
| #define | SH_SCOPE static inline |
| #define | SH_RAW_ALLOCATOR pg_malloc0 |
| #define | SH_DECLARE |
| #define | SH_DEFINE |
| #define | KEEPWAL_INITIAL_SIZE 1000 |
Typedefs | |
| typedef struct keepwal_entry | keepwal_entry |
Variables | |
| static filehash_hash * | filehash |
| static keepwal_hash * | keepwal = NULL |
| static const char *const | excludeDirContents [] |
| static const struct exclude_list_item | excludeFiles [] |
| #define SH_ELEMENT_TYPE file_entry_t |
| #define SH_ELEMENT_TYPE keepwal_entry |
| #define SH_HASH_KEY | ( | tb, | |
| key | |||
| ) | hash_string(key) |
| #define SH_HASH_KEY | ( | tb, | |
| key | |||
| ) | hash_string(key) |
| #define SH_RAW_ALLOCATOR pg_malloc0 |
| #define SH_RAW_ALLOCATOR pg_malloc0 |
|
static |
Definition at line 474 of file filemap.c.
References FILE_ACTION_COPY, FILE_ACTION_COPY_TAIL, FILE_ACTION_CREATE, FILE_ACTION_NONE, FILE_ACTION_REMOVE, and FILE_ACTION_TRUNCATE.
Referenced by print_filemap().
Definition at line 500 of file filemap.c.
References file_entry_t::action, datapagemap::bitmapsize, datapagemap_iterate(), datapagemap_next(), fb(), FILE_ACTION_COPY, FILE_ACTION_COPY_TAIL, FILE_TYPE_REGULAR, i, pg_free(), file_entry_t::source_size, file_entry_t::source_type, file_entry_t::target_pages_to_overwrite, and file_entry_t::target_size.
Referenced by main().
Definition at line 410 of file filemap.c.
References excludeDirContents, excludeFiles, fb(), filename, last_dir_separator(), exclude_list_item::match_prefix, MAXPGPATH, exclude_list_item::name, name, pg_log_debug, PG_TEMP_FILE_PREFIX, PG_TEMP_FILES_DIR, and snprintf.
Referenced by decide_file_action().
|
static |
Definition at line 669 of file filemap.c.
References fb(), psprintf(), pstrdup(), relpathperm, and RelPathStr::str.
Referenced by getFileContentType(), and process_target_wal_block_change().
|
static |
Definition at line 749 of file filemap.c.
References Assert, check_file_excluded(), file_entry_t::content_type, decide_wal_file_action(), fb(), FILE_ACTION_COPY, FILE_ACTION_COPY_TAIL, FILE_ACTION_CREATE, FILE_ACTION_NONE, FILE_ACTION_REMOVE, FILE_ACTION_TRUNCATE, FILE_CONTENT_TYPE_RELATION, FILE_CONTENT_TYPE_WAL, FILE_TYPE_DIRECTORY, FILE_TYPE_REGULAR, FILE_TYPE_SYMLINK, FILE_TYPE_UNDEFINED, filename, keepwal_entry_exists(), last_dir_separator(), file_entry_t::path, pg_fatal, pg_log_debug, pg_str_endswith(), file_entry_t::source_exists, file_entry_t::source_size, file_entry_t::source_type, file_entry_t::target_exists, file_entry_t::target_size, file_entry_t::target_type, and XLOG_CONTROL_FILE.
Referenced by decide_file_actions().
Definition at line 924 of file filemap.c.
References file_entry_t::action, decide_file_action(), fb(), filehash, final_filemap_cmp(), i, pg_malloc(), and qsort.
Referenced by main().
|
static |
Definition at line 719 of file filemap.c.
References fb(), FILE_ACTION_COPY, FILE_ACTION_NONE, WalSegSz, and XLogFromFileName().
Referenced by decide_file_action().
Definition at line 695 of file filemap.c.
References a, b, fa(), fb(), and FILE_ACTION_REMOVE.
Referenced by decide_file_actions().
|
static |
Definition at line 568 of file filemap.c.
References datasegpath(), RelFileLocator::dbOid, fb(), FILE_CONTENT_TYPE_OTHER, FILE_CONTENT_TYPE_RELATION, FILE_CONTENT_TYPE_WAL, filename, InvalidOid, InvalidRelFileNumber, IsXLogFileName(), MAIN_FORKNUM, pfree(), RelFileLocator::relNumber, RelFileLocator::spcOid, and TABLESPACE_VERSION_DIRECTORY.
Referenced by insert_filehash_entry(), and process_source_file().
|
static |
Definition at line 204 of file filemap.c.
References file_entry_t::action, datapagemap::bitmap, datapagemap::bitmapsize, file_entry_t::content_type, fb(), FILE_ACTION_UNDECIDED, FILE_TYPE_UNDEFINED, filehash, getFileContentType(), file_entry_t::path, pg_strdup(), file_entry_t::source_exists, file_entry_t::source_link_target, file_entry_t::source_size, file_entry_t::source_type, file_entry_t::target_exists, file_entry_t::target_link_target, file_entry_t::target_pages_to_overwrite, file_entry_t::target_size, and file_entry_t::target_type.
Referenced by process_source_file(), and process_target_file().
Definition at line 251 of file filemap.c.
References Assert, fb(), keepwal, keepwal_entry::path, and pg_strdup().
Referenced by findLastCheckpoint().
Definition at line 267 of file filemap.c.
Referenced by decide_file_action().
|
static |
Definition at line 234 of file filemap.c.
References fb(), and filehash.
Referenced by process_target_wal_block_change().
Definition at line 541 of file filemap.c.
References file_entry_t::action, action_to_str(), datapagemap::bitmapsize, file_entry_t::content_type, datapagemap_print(), fb(), FILE_ACTION_NONE, FILE_CONTENT_TYPE_WAL, i, file_entry_t::path, pg_log_debug, and file_entry_t::target_pages_to_overwrite.
Referenced by main().
| void process_source_file | ( | const char * | path, |
| file_type_t | type, | ||
| size_t | size, | ||
| const char * | link_target | ||
| ) |
Definition at line 280 of file filemap.c.
References fb(), FILE_CONTENT_TYPE_RELATION, FILE_TYPE_DIRECTORY, FILE_TYPE_REGULAR, FILE_TYPE_SYMLINK, getFileContentType(), insert_filehash_entry(), pg_fatal, pg_strdup(), file_entry_t::source_exists, file_entry_t::source_link_target, file_entry_t::source_size, file_entry_t::source_type, and type.
Referenced by main().
| void process_target_file | ( | const char * | path, |
| file_type_t | type, | ||
| size_t | size, | ||
| const char * | link_target | ||
| ) |
Definition at line 316 of file filemap.c.
References fb(), FILE_TYPE_DIRECTORY, FILE_TYPE_SYMLINK, insert_filehash_entry(), pg_fatal, pg_strdup(), file_entry_t::target_exists, file_entry_t::target_link_target, file_entry_t::target_size, file_entry_t::target_type, and type.
Referenced by main().
| void process_target_wal_block_change | ( | ForkNumber | forknum, |
| RelFileLocator | rlocator, | ||
| BlockNumber | blkno | ||
| ) |
Definition at line 353 of file filemap.c.
References Assert, file_entry_t::content_type, datapagemap_add(), datasegpath(), fb(), FILE_CONTENT_TYPE_RELATION, FILE_TYPE_REGULAR, lookup_filehash_entry(), file_entry_t::path, pfree(), pg_fatal, file_entry_t::source_exists, file_entry_t::target_exists, file_entry_t::target_pages_to_overwrite, and file_entry_t::target_type.
Referenced by extractPageInfo().
Definition at line 117 of file filemap.c.
Referenced by check_file_excluded().
|
static |
Definition at line 158 of file filemap.c.
Referenced by check_file_excluded().
|
static |
Definition at line 56 of file filemap.c.
Referenced by decide_file_actions(), filehash_init(), insert_filehash_entry(), and lookup_filehash_entry().
|
static |
Definition at line 89 of file filemap.c.
Referenced by keepwal_add_entry(), keepwal_entry_exists(), and keepwal_init().