@@ -372,10 +372,10 @@ remote_copy_file(PGconn *conn, pgFile* file)
372
372
static void *
373
373
remote_backup_files (void * arg )
374
374
{
375
- int i ;
376
- backup_files_args * arguments = (backup_files_args * ) arg ;
377
- int n_backup_files_list = parray_num (arguments -> backup_files_list );
378
- PGconn * file_backup_conn = NULL ;
375
+ int i ;
376
+ backup_files_arg * arguments = (backup_files_arg * ) arg ;
377
+ int n_backup_files_list = parray_num (arguments -> files_list );
378
+ PGconn * file_backup_conn = NULL ;
379
379
380
380
for (i = 0 ; i < n_backup_files_list ; i ++ )
381
381
{
@@ -385,7 +385,7 @@ remote_backup_files(void *arg)
385
385
pgFile * file ;
386
386
int row_length ;
387
387
388
- file = (pgFile * ) parray_get (arguments -> backup_files_list , i );
388
+ file = (pgFile * ) parray_get (arguments -> files_list , i );
389
389
390
390
/* We have already copied all directories */
391
391
if (S_ISDIR (file -> mode ))
@@ -465,12 +465,11 @@ do_backup_instance(void)
465
465
XLogRecPtr prev_backup_start_lsn = InvalidXLogRecPtr ;
466
466
467
467
/* arrays with meta info for multi threaded backup */
468
- pthread_t * backup_threads ;
469
- backup_files_args * backup_threads_args ;
468
+ pthread_t * threads ;
469
+ backup_files_arg * threads_args ;
470
470
bool backup_isok = true;
471
471
472
472
pgBackup * prev_backup = NULL ;
473
- char prev_backup_filelist_path [MAXPGPATH ];
474
473
parray * prev_backup_filelist = NULL ;
475
474
476
475
elog (LOG , "Database backup start" );
@@ -512,6 +511,7 @@ do_backup_instance(void)
512
511
current .backup_mode == BACKUP_MODE_DIFF_DELTA )
513
512
{
514
513
parray * backup_list ;
514
+ char prev_backup_filelist_path [MAXPGPATH ];
515
515
516
516
/* get list of backups already taken */
517
517
backup_list = catalog_get_backup_list (INVALID_BACKUP_ID );
@@ -524,8 +524,8 @@ do_backup_instance(void)
524
524
"Create new FULL backup before an incremental one." );
525
525
parray_free (backup_list );
526
526
527
- pgBackupGetPath (prev_backup , prev_backup_filelist_path , lengthof ( prev_backup_filelist_path ),
528
- DATABASE_FILE_LIST );
527
+ pgBackupGetPath (prev_backup , prev_backup_filelist_path ,
528
+ lengthof ( prev_backup_filelist_path ), DATABASE_FILE_LIST );
529
529
/* Files of previous backup needed by DELTA backup */
530
530
prev_backup_filelist = dir_read_file_list (NULL , prev_backup_filelist_path );
531
531
@@ -701,20 +701,20 @@ do_backup_instance(void)
701
701
parray_qsort (backup_files_list , pgFileCompareSize );
702
702
703
703
/* init thread args with own file lists */
704
- backup_threads = (pthread_t * ) palloc (sizeof (pthread_t )* num_threads );
705
- backup_threads_args = (backup_files_args * ) palloc (sizeof (backup_files_args )* num_threads );
704
+ threads = (pthread_t * ) palloc (sizeof (pthread_t ) * num_threads );
705
+ threads_args = (backup_files_arg * ) palloc (sizeof (backup_files_arg )* num_threads );
706
706
707
707
for (i = 0 ; i < num_threads ; i ++ )
708
708
{
709
- backup_files_args * arg = & (backup_threads_args [i ]);
709
+ backup_files_arg * arg = & (threads_args [i ]);
710
710
711
711
arg -> from_root = pgdata ;
712
712
arg -> to_root = database_path ;
713
- arg -> backup_files_list = backup_files_list ;
714
- arg -> prev_backup_filelist = prev_backup_filelist ;
715
- arg -> prev_backup_start_lsn = prev_backup_start_lsn ;
716
- arg -> thread_backup_conn = NULL ;
717
- arg -> thread_cancel_conn = NULL ;
713
+ arg -> files_list = backup_files_list ;
714
+ arg -> prev_filelist = prev_backup_filelist ;
715
+ arg -> prev_start_lsn = prev_backup_start_lsn ;
716
+ arg -> backup_conn = NULL ;
717
+ arg -> cancel_conn = NULL ;
718
718
/* By default there are some error */
719
719
arg -> ret = 1 ;
720
720
}
@@ -723,20 +723,21 @@ do_backup_instance(void)
723
723
elog (LOG , "Start transfering data files" );
724
724
for (i = 0 ; i < num_threads ; i ++ )
725
725
{
726
- backup_files_args * arg = & (backup_threads_args [i ]);
726
+ backup_files_arg * arg = & (threads_args [i ]);
727
+
727
728
elog (VERBOSE , "Start thread num: %i" , i );
728
729
729
730
if (!is_remote_backup )
730
- pthread_create (& backup_threads [i ], NULL , backup_files , arg );
731
+ pthread_create (& threads [i ], NULL , backup_files , arg );
731
732
else
732
- pthread_create (& backup_threads [i ], NULL , remote_backup_files , arg );
733
+ pthread_create (& threads [i ], NULL , remote_backup_files , arg );
733
734
}
734
735
735
736
/* Wait threads */
736
737
for (i = 0 ; i < num_threads ; i ++ )
737
738
{
738
- pthread_join (backup_threads [i ], NULL );
739
- if (backup_threads_args [i ].ret == 1 )
739
+ pthread_join (threads [i ], NULL );
740
+ if (threads_args [i ].ret == 1 )
740
741
backup_isok = false;
741
742
}
742
743
if (backup_isok )
@@ -2021,17 +2022,17 @@ backup_disconnect(bool fatal, void *userdata)
2021
2022
static void *
2022
2023
backup_files (void * arg )
2023
2024
{
2024
- int i ;
2025
- backup_files_args * arguments = (backup_files_args * ) arg ;
2026
- int n_backup_files_list = parray_num (arguments -> backup_files_list );
2025
+ int i ;
2026
+ backup_files_arg * arguments = (backup_files_arg * ) arg ;
2027
+ int n_backup_files_list = parray_num (arguments -> files_list );
2027
2028
2028
2029
/* backup a file */
2029
2030
for (i = 0 ; i < n_backup_files_list ; i ++ )
2030
2031
{
2031
2032
int ret ;
2032
2033
struct stat buf ;
2034
+ pgFile * file = (pgFile * ) parray_get (arguments -> files_list , i );
2033
2035
2034
- pgFile * file = (pgFile * ) parray_get (arguments -> backup_files_list , i );
2035
2036
elog (VERBOSE , "Copying file: \"%s\" " , file -> path );
2036
2037
if (!pg_atomic_test_set_flag (& file -> lock ))
2037
2038
continue ;
@@ -2077,11 +2078,15 @@ backup_files(void *arg)
2077
2078
{
2078
2079
int p ;
2079
2080
char * relative ;
2080
- int n_prev_backup_files_list = parray_num (arguments -> prev_backup_filelist );
2081
+ int n_prev_files = parray_num (arguments -> prev_filelist );
2082
+
2081
2083
relative = GetRelativePath (file -> path , arguments -> from_root );
2082
- for (p = 0 ; p < n_prev_backup_files_list ; p ++ )
2084
+ for (p = 0 ; p < n_prev_files ; p ++ )
2083
2085
{
2084
- pgFile * prev_file = (pgFile * ) parray_get (arguments -> prev_backup_filelist , p );
2086
+ pgFile * prev_file ;
2087
+
2088
+ prev_file = (pgFile * ) parray_get (arguments -> prev_filelist , p );
2089
+
2085
2090
if (strcmp (relative , prev_file -> path ) == 0 )
2086
2091
{
2087
2092
/* File exists in previous backup */
@@ -2098,7 +2103,7 @@ backup_files(void *arg)
2098
2103
if (!backup_data_file (arguments ,
2099
2104
arguments -> from_root ,
2100
2105
arguments -> to_root , file ,
2101
- arguments -> prev_backup_start_lsn ,
2106
+ arguments -> prev_start_lsn ,
2102
2107
current .backup_mode ))
2103
2108
{
2104
2109
file -> write_size = BYTES_INVALID ;
@@ -2130,8 +2135,8 @@ backup_files(void *arg)
2130
2135
}
2131
2136
2132
2137
/* Close connection */
2133
- if (arguments -> thread_backup_conn )
2134
- pgut_disconnect (arguments -> thread_backup_conn );
2138
+ if (arguments -> backup_conn )
2139
+ pgut_disconnect (arguments -> backup_conn );
2135
2140
2136
2141
/* Data files transferring is successful */
2137
2142
arguments -> ret = 0 ;
@@ -2633,7 +2638,7 @@ get_last_ptrack_lsn(void)
2633
2638
}
2634
2639
2635
2640
char *
2636
- pg_ptrack_get_block (backup_files_args * arguments ,
2641
+ pg_ptrack_get_block (backup_files_arg * arguments ,
2637
2642
Oid dbOid ,
2638
2643
Oid tblsOid ,
2639
2644
Oid relOid ,
@@ -2658,17 +2663,17 @@ pg_ptrack_get_block(backup_files_args *arguments,
2658
2663
sprintf (params [2 ], "%i" , relOid );
2659
2664
sprintf (params [3 ], "%u" , blknum );
2660
2665
2661
- if (arguments -> thread_backup_conn == NULL )
2666
+ if (arguments -> backup_conn == NULL )
2662
2667
{
2663
- arguments -> thread_backup_conn = pgut_connect (pgut_dbname );
2668
+ arguments -> backup_conn = pgut_connect (pgut_dbname );
2664
2669
}
2665
2670
2666
- if (arguments -> thread_cancel_conn == NULL )
2667
- arguments -> thread_cancel_conn = PQgetCancel (arguments -> thread_backup_conn );
2671
+ if (arguments -> cancel_conn == NULL )
2672
+ arguments -> cancel_conn = PQgetCancel (arguments -> backup_conn );
2668
2673
2669
2674
//elog(LOG, "db %i pg_ptrack_get_block(%i, %i, %u)",dbOid, tblsOid, relOid, blknum);
2670
- res = pgut_execute_parallel (arguments -> thread_backup_conn ,
2671
- arguments -> thread_cancel_conn ,
2675
+ res = pgut_execute_parallel (arguments -> backup_conn ,
2676
+ arguments -> cancel_conn ,
2672
2677
"SELECT pg_catalog.pg_ptrack_get_block_2($1, $2, $3, $4)" ,
2673
2678
4 , (const char * * )params , true);
2674
2679
0 commit comments