@@ -86,7 +86,10 @@ extern const char *PROGRAM_EMAIL;
8686#endif
8787
8888/* stdio buffer size */
89- #define STDIO_BUFSIZE 65536
89+ #define STDIO_BUFSIZE 65536
90+
91+ /* retry attempts */
92+ #define PAGE_READ_ATTEMPTS 100
9093
9194/* Check if an XLogRecPtr value is pointed to 0 offset */
9295#define XRecOffIsNull (xlrp ) \
@@ -170,7 +173,8 @@ typedef struct pgFile
170173 bool exists_in_prev ; /* Mark files, both data and regular, that exists in previous backup */
171174 CompressAlg compress_alg ; /* compression algorithm applied to the file */
172175 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 */
174178 bool pagemap_isabsent ; /* Used to mark files with unknown state of pagemap,
175179 * i.e. datafiles without _ptrack */
176180} pgFile ;
@@ -526,9 +530,9 @@ typedef struct BackupPageHeader
526530
527531/* Special value for compressed_size field */
528532#define PageIsOk 0
533+ #define SkipCurrentPage -1
529534#define PageIsTruncated -2
530- #define SkipCurrentPage -3
531- #define PageIsCorrupted -4 /* used by checkdb */
535+ #define PageIsCorrupted -3 /* used by checkdb */
532536
533537
534538/*
@@ -722,6 +726,18 @@ extern void help_command(char *command);
722726/* in validate.c */
723727extern void pgBackupValidate (pgBackup * backup , pgRestoreParams * params );
724728extern 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)
725741
726742/* in catalog.c */
727743extern pgBackup * read_backup (const char * instance_name , time_t timestamp );
@@ -945,4 +961,19 @@ extern char *pg_ptrack_get_and_clear(Oid tablespace_oid,
945961extern XLogRecPtr get_last_ptrack_lsn (PGconn * backup_conn , PGNodeInfo * nodeInfo );
946962extern parray * pg_ptrack_get_pagemapset (PGconn * backup_conn , const char * ptrack_schema , XLogRecPtr lsn );
947963
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+
948979#endif /* PG_PROBACKUP_H */
0 commit comments