@@ -86,7 +86,10 @@ extern const char *PROGRAM_EMAIL;
86
86
#endif
87
87
88
88
/* stdio buffer size */
89
- #define STDIO_BUFSIZE 65536
89
+ #define STDIO_BUFSIZE 65536
90
+
91
+ /* retry attempts */
92
+ #define PAGE_READ_ATTEMPTS 100
90
93
91
94
/* Check if an XLogRecPtr value is pointed to 0 offset */
92
95
#define XRecOffIsNull (xlrp ) \
@@ -170,7 +173,8 @@ typedef struct pgFile
170
173
bool exists_in_prev ; /* Mark files, both data and regular, that exists in previous backup */
171
174
CompressAlg compress_alg ; /* compression algorithm applied to the file */
172
175
volatile pg_atomic_flag lock ;/* lock for synchronization of parallel threads */
173
- datapagemap_t pagemap ; /* bitmap of pages updated since previous backup */
176
+ datapagemap_t pagemap ; /* bitmap of pages updated since previous backup
177
+ may take up to 16kB per file */
174
178
bool pagemap_isabsent ; /* Used to mark files with unknown state of pagemap,
175
179
* i.e. datafiles without _ptrack */
176
180
} pgFile ;
@@ -526,9 +530,9 @@ typedef struct BackupPageHeader
526
530
527
531
/* Special value for compressed_size field */
528
532
#define PageIsOk 0
533
+ #define SkipCurrentPage -1
529
534
#define PageIsTruncated -2
530
- #define SkipCurrentPage -3
531
- #define PageIsCorrupted -4 /* used by checkdb */
535
+ #define PageIsCorrupted -3 /* used by checkdb */
532
536
533
537
534
538
/*
@@ -722,6 +726,18 @@ extern void help_command(char *command);
722
726
/* in validate.c */
723
727
extern void pgBackupValidate (pgBackup * backup , pgRestoreParams * params );
724
728
extern int do_validate_all (void );
729
+ extern int validate_one_page (Page page , BlockNumber absolute_blkno ,
730
+ XLogRecPtr stop_lsn , XLogRecPtr * page_lsn ,
731
+ uint32 checksum_version );
732
+
733
+ /* return codes for validate_one_page */
734
+ /* TODO: use enum */
735
+ #define PAGE_IS_VALID (-1)
736
+ #define PAGE_IS_NOT_FOUND (-2)
737
+ #define PAGE_IS_ZEROED (-3)
738
+ #define PAGE_HEADER_IS_INVALID (-4)
739
+ #define PAGE_CHECKSUM_MISMATCH (-5)
740
+ #define PAGE_LSN_FROM_FUTURE (-6)
725
741
726
742
/* in catalog.c */
727
743
extern pgBackup * read_backup (const char * instance_name , time_t timestamp );
@@ -945,4 +961,19 @@ extern char *pg_ptrack_get_and_clear(Oid tablespace_oid,
945
961
extern XLogRecPtr get_last_ptrack_lsn (PGconn * backup_conn , PGNodeInfo * nodeInfo );
946
962
extern parray * pg_ptrack_get_pagemapset (PGconn * backup_conn , const char * ptrack_schema , XLogRecPtr lsn );
947
963
964
+ /* FIO */
965
+ extern int fio_send_pages (FILE * in , FILE * out , pgFile * file , XLogRecPtr horizonLsn ,
966
+ int calg , int clevel , uint32 checksum_version ,
967
+ datapagemap_t * pagemap , BlockNumber * err_blknum , char * * errormsg );
968
+
969
+ /* return codes for fio_send_pages */
970
+ #define WRITE_FAILED (-1)
971
+ #define REMOTE_ERROR (-2)
972
+ #define PAGE_CORRUPTION (-3)
973
+ #define SEND_OK (-4)
974
+
975
+ extern void get_header_errormsg (Page page , char * * errormsg );
976
+ extern void get_checksum_errormsg (Page page , char * * errormsg ,
977
+ BlockNumber absolute_blkno );
978
+
948
979
#endif /* PG_PROBACKUP_H */
0 commit comments