@@ -128,7 +128,6 @@ intCheckPointSegments;
128128/* Estimated distance between checkpoints, in bytes */
129129static double CheckPointDistanceEstimate = 0 ;
130130static double PrevCheckPointDistance = 0 ;
131- static bool SavedGCState = false;
132131
133132/*
134133 * GUC support
@@ -9894,7 +9893,7 @@ do_pg_start_backup(const char *backupidstr, bool fast, TimeLineID *starttli_p,
98949893XLogCtl -> Insert .forcePageWrites = true;
98959894WALInsertLockRelease ();
98969895
9897- SavedGCState = cfs_control_gc (false );/* disable GC during backup */
9896+ cfs_control_gc_lock ( );/* disable GC during backup */
98989897
98999898/* Ensure we release forcePageWrites if fail below */
99009899PG_ENSURE_ERROR_CLEANUP (pg_start_backup_callback , (Datum )BoolGetDatum (exclusive ));
@@ -10273,7 +10272,7 @@ pg_start_backup_callback(int code, Datum arg)
1027310272}
1027410273WALInsertLockRelease ();
1027510274
10276- cfs_control_gc ( SavedGCState );/* Restore CFS GC activity */
10275+ cfs_control_gc_unlock ( );/* Restore CFS GC activity */
1027710276}
1027810277
1027910278/*
@@ -10473,7 +10472,7 @@ do_pg_stop_backup(char *labelfile, bool waitforarchive, TimeLineID *stoptli_p)
1047310472/* Clean up session-level lock */
1047410473sessionBackupState = SESSION_BACKUP_NONE ;
1047510474
10476- cfs_control_gc ( SavedGCState );/* Restore CFS GC activity */
10475+ cfs_control_gc_unlock ( );/* Restore CFS GC activity */
1047710476
1047810477/*
1047910478 * Read and parse the START WAL LOCATION line (this code is pretty crude,
@@ -10717,6 +10716,8 @@ do_pg_abort_backup(void)
1071710716XLogCtl -> Insert .forcePageWrites = false;
1071810717}
1071910718WALInsertLockRelease ();
10719+
10720+ cfs_control_gc_unlock ();/* Restore CFS GC activity */
1072010721}
1072110722
1072210723/*