@@ -288,13 +288,10 @@ CheckpointerMain(void)
288288 /* Warn any waiting backends that the checkpoint failed. */
289289 if (ckpt_active )
290290 {
291- /* use volatile pointer to prevent code rearrangement */
292- volatile CheckpointerShmemStruct * cps = CheckpointerShmem ;
293-
294- SpinLockAcquire (& cps -> ckpt_lck );
295- cps -> ckpt_failed ++ ;
296- cps -> ckpt_done = cps -> ckpt_started ;
297- SpinLockRelease (& cps -> ckpt_lck );
291+ SpinLockAcquire (& CheckpointerShmem -> ckpt_lck );
292+ CheckpointerShmem -> ckpt_failed ++ ;
293+ CheckpointerShmem -> ckpt_done = CheckpointerShmem -> ckpt_started ;
294+ SpinLockRelease (& CheckpointerShmem -> ckpt_lck );
298295
299296 ckpt_active = false;
300297 }
@@ -428,9 +425,6 @@ CheckpointerMain(void)
428425 bool ckpt_performed = false;
429426 bool do_restartpoint ;
430427
431- /* use volatile pointer to prevent code rearrangement */
432- volatile CheckpointerShmemStruct * cps = CheckpointerShmem ;
433-
434428 /*
435429 * Check if we should perform a checkpoint or a restartpoint. As a
436430 * side-effect, RecoveryInProgress() initializes TimeLineID if
@@ -443,11 +437,11 @@ CheckpointerMain(void)
443437 * checkpoint we should perform, and increase the started-counter
444438 * to acknowledge that we've started a new checkpoint.
445439 */
446- SpinLockAcquire (& cps -> ckpt_lck );
447- flags |= cps -> ckpt_flags ;
448- cps -> ckpt_flags = 0 ;
449- cps -> ckpt_started ++ ;
450- SpinLockRelease (& cps -> ckpt_lck );
440+ SpinLockAcquire (& CheckpointerShmem -> ckpt_lck );
441+ flags |= CheckpointerShmem -> ckpt_flags ;
442+ CheckpointerShmem -> ckpt_flags = 0 ;
443+ CheckpointerShmem -> ckpt_started ++ ;
444+ SpinLockRelease (& CheckpointerShmem -> ckpt_lck );
451445
452446 /*
453447 * The end-of-recovery checkpoint is a real checkpoint that's
@@ -505,9 +499,9 @@ CheckpointerMain(void)
505499 /*
506500 * Indicate checkpoint completion to any waiting backends.
507501 */
508- SpinLockAcquire (& cps -> ckpt_lck );
509- cps -> ckpt_done = cps -> ckpt_started ;
510- SpinLockRelease (& cps -> ckpt_lck );
502+ SpinLockAcquire (& CheckpointerShmem -> ckpt_lck );
503+ CheckpointerShmem -> ckpt_done = CheckpointerShmem -> ckpt_started ;
504+ SpinLockRelease (& CheckpointerShmem -> ckpt_lck );
511505
512506 if (ckpt_performed )
513507 {
@@ -957,8 +951,6 @@ CheckpointerShmemInit(void)
957951void
958952RequestCheckpoint (int flags )
959953{
960- /* use volatile pointer to prevent code rearrangement */
961- volatile CheckpointerShmemStruct * cps = CheckpointerShmem ;
962954 int ntries ;
963955 int old_failed ,
964956 old_started ;
@@ -992,13 +984,13 @@ RequestCheckpoint(int flags)
992984 * a "stronger" request by another backend. The flag senses must be
993985 * chosen to make this work!
994986 */
995- SpinLockAcquire (& cps -> ckpt_lck );
987+ SpinLockAcquire (& CheckpointerShmem -> ckpt_lck );
996988
997- old_failed = cps -> ckpt_failed ;
998- old_started = cps -> ckpt_started ;
999- cps -> ckpt_flags |= flags ;
989+ old_failed = CheckpointerShmem -> ckpt_failed ;
990+ old_started = CheckpointerShmem -> ckpt_started ;
991+ CheckpointerShmem -> ckpt_flags |= flags ;
1000992
1001- SpinLockRelease (& cps -> ckpt_lck );
993+ SpinLockRelease (& CheckpointerShmem -> ckpt_lck );
1002994
1003995 /*
1004996 * Send signal to request checkpoint. It's possible that the checkpointer
@@ -1046,9 +1038,9 @@ RequestCheckpoint(int flags)
10461038 /* Wait for a new checkpoint to start. */
10471039 for (;;)
10481040 {
1049- SpinLockAcquire (& cps -> ckpt_lck );
1050- new_started = cps -> ckpt_started ;
1051- SpinLockRelease (& cps -> ckpt_lck );
1041+ SpinLockAcquire (& CheckpointerShmem -> ckpt_lck );
1042+ new_started = CheckpointerShmem -> ckpt_started ;
1043+ SpinLockRelease (& CheckpointerShmem -> ckpt_lck );
10521044
10531045 if (new_started != old_started )
10541046 break ;
@@ -1064,10 +1056,10 @@ RequestCheckpoint(int flags)
10641056 {
10651057 int new_done ;
10661058
1067- SpinLockAcquire (& cps -> ckpt_lck );
1068- new_done = cps -> ckpt_done ;
1069- new_failed = cps -> ckpt_failed ;
1070- SpinLockRelease (& cps -> ckpt_lck );
1059+ SpinLockAcquire (& CheckpointerShmem -> ckpt_lck );
1060+ new_done = CheckpointerShmem -> ckpt_done ;
1061+ new_failed = CheckpointerShmem -> ckpt_failed ;
1062+ SpinLockRelease (& CheckpointerShmem -> ckpt_lck );
10711063
10721064 if (new_done - new_started >= 0 )
10731065 break ;
@@ -1368,15 +1360,13 @@ UpdateSharedMemoryConfig(void)
13681360bool
13691361FirstCallSinceLastCheckpoint (void )
13701362{
1371- /* use volatile pointer to prevent code rearrangement */
1372- volatile CheckpointerShmemStruct * cps = CheckpointerShmem ;
13731363 static int ckpt_done = 0 ;
13741364 int new_done ;
13751365 bool FirstCall = false;
13761366
1377- SpinLockAcquire (& cps -> ckpt_lck );
1378- new_done = cps -> ckpt_done ;
1379- SpinLockRelease (& cps -> ckpt_lck );
1367+ SpinLockAcquire (& CheckpointerShmem -> ckpt_lck );
1368+ new_done = CheckpointerShmem -> ckpt_done ;
1369+ SpinLockRelease (& CheckpointerShmem -> ckpt_lck );
13801370
13811371 if (new_done != ckpt_done )
13821372 FirstCall = true;
0 commit comments