Skip to content

Commit b2ab1df

Browse files
committed
[Issue #320] always backup and always restore pg_filenode.map
1 parent 46c1430 commit b2ab1df

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

src/data.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -711,8 +711,9 @@ backup_non_data_file(pgFile *file, pgFile *prev_file,
711711
/*
712712
* If nonedata file exists in previous backup
713713
* and its mtime is less than parent backup start time ... */
714-
if (prev_file && file->exists_in_prev &&
715-
file->mtime <= parent_backup_time)
714+
if ((pg_strcasecmp(file->name, RELMAPPER_FILENAME) != 0) &&
715+
(prev_file && file->exists_in_prev &&
716+
file->mtime <= parent_backup_time))
716717
{
717718

718719
file->crc = fio_get_crc32(from_fullpath, FIO_DB_HOST, false);

src/pg_probackup.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ extern const char *PROGRAM_EMAIL;
7070
#define BACKUP_RO_LOCK_FILE "backup_ro.pid"
7171
#define DATABASE_FILE_LIST "backup_content.control"
7272
#define PG_BACKUP_LABEL_FILE "backup_label"
73-
#define PG_TABLESPACE_MAP_FILE "tablespace_map"
73+
#define PG_TABLESPACE_MAP_FILE "tablespace_map"
74+
#define RELMAPPER_FILENAME "pg_filenode.map"
7475
#define EXTERNAL_DIR "external_directories/externaldir"
7576
#define DATABASE_MAP "database_map"
7677
#define HEADER_MAP "page_header_map"

src/restore.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,11 @@ restore_chain(pgBackup *dest_backup, parray *parent_chain,
903903
if (parray_bsearch(dest_backup->files, file, pgFileCompareRelPathWithExternal))
904904
redundant = false;
905905

906+
/* pg_filenode.map are always restored, because it's crc cannot be trusted */
907+
if (file->external_dir_num == 0 &&
908+
pg_strcasecmp(file->name, RELMAPPER_FILENAME) == 0)
909+
redundant = true;
910+
906911
/* do not delete the useful internal directories */
907912
if (S_ISDIR(file->mode) && !redundant)
908913
continue;

0 commit comments

Comments
 (0)