@@ -519,8 +519,6 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
519
519
Buffer buffers [RUM_NDELETE_AT_ONCE ];
520
520
GenericXLogState * state ;
521
521
522
- state = GenericXLogStart (index );
523
-
524
522
data .node = index -> rd_node ;
525
523
526
524
data .ndeleted = 0 ;
@@ -530,13 +528,12 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
530
528
buffers [data .ndeleted ] = ReadBuffer (index , blknoToDelete );
531
529
LockBuffer (buffers [data .ndeleted ], RUM_EXCLUSIVE );
532
530
533
- page = GenericXLogRegisterBuffer ( state , buffers [data .ndeleted ], 0 );
531
+ page = BufferGetPage ( buffers [data .ndeleted ]);
534
532
535
533
data .ndeleted ++ ;
536
534
537
535
if (RumPageIsDeleted (page ))
538
536
{
539
- GenericXLogAbort (state );
540
537
GenericXLogAbort (metastate );
541
538
/* concurrent cleanup process is detected */
542
539
for (i = 0 ; i < data .ndeleted ; i ++ )
@@ -552,8 +549,6 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
552
549
if (stats )
553
550
stats -> pages_deleted += data .ndeleted ;
554
551
555
- START_CRIT_SECTION ();
556
-
557
552
metadata -> head = blknoToDelete ;
558
553
559
554
Assert (metadata -> nPendingPages >= data .ndeleted );
@@ -573,18 +568,15 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
573
568
574
569
for (i = 0 ; i < data .ndeleted ; i ++ )
575
570
{
571
+ state = GenericXLogStart (index );
576
572
page = GenericXLogRegisterBuffer (state , buffers [i ], 0 );
577
573
578
574
RumPageGetOpaque (page )-> flags = RUM_DELETED ;
579
- MarkBufferDirty ( buffers [ i ] );
575
+ GenericXLogFinish ( state );
580
576
}
581
577
582
- GenericXLogFinish (state );
583
-
584
578
for (i = 0 ; i < data .ndeleted ; i ++ )
585
579
UnlockReleaseBuffer (buffers [i ]);
586
-
587
- END_CRIT_SECTION ();
588
580
} while (blknoToDelete != newHead );
589
581
590
582
GenericXLogFinish (metastate );
@@ -743,20 +735,16 @@ rumInsertCleanup(RumState *rumstate,
743
735
BuildAccumulator accum ;
744
736
KeyArray datums ;
745
737
BlockNumber blkno ;
746
- GenericXLogState * metastate ;
747
-
748
- metastate = GenericXLogStart (rumstate -> index );
749
738
750
739
metabuffer = ReadBuffer (index , RUM_METAPAGE_BLKNO );
751
740
LockBuffer (metabuffer , RUM_SHARE );
752
741
753
- metapage = GenericXLogRegisterBuffer ( metastate , metabuffer , 0 );
742
+ metapage = BufferGetPage ( metabuffer );
754
743
metadata = RumPageGetMeta (metapage );
755
744
756
745
if (metadata -> head == InvalidBlockNumber )
757
746
{
758
747
/* Nothing to do */
759
- GenericXLogAbort (metastate );
760
748
UnlockReleaseBuffer (metabuffer );
761
749
return ;
762
750
}
@@ -765,6 +753,9 @@ rumInsertCleanup(RumState *rumstate,
765
753
* Read and lock head of pending list
766
754
*/
767
755
blkno = metadata -> head ;
756
+ buffer = ReadBuffer (index , blkno );
757
+ LockBuffer (buffer , RUM_SHARE );
758
+ page = BufferGetPage (buffer );
768
759
769
760
LockBuffer (metabuffer , RUM_UNLOCK );
770
761
@@ -790,18 +781,9 @@ rumInsertCleanup(RumState *rumstate,
790
781
*/
791
782
for (;;)
792
783
{
793
- GenericXLogState * state ;
794
-
795
- state = GenericXLogStart (index );
796
-
797
- buffer = ReadBuffer (index , blkno );
798
- LockBuffer (buffer , RUM_SHARE );
799
- page = GenericXLogRegisterBuffer (state , buffer , 0 );
800
-
801
784
if (RumPageIsDeleted (page ))
802
785
{
803
786
/* another cleanup process is running concurrently */
804
- GenericXLogAbort (state );
805
787
UnlockReleaseBuffer (buffer );
806
788
break ;
807
789
}
@@ -874,7 +856,6 @@ rumInsertCleanup(RumState *rumstate,
874
856
if (RumPageIsDeleted (page ))
875
857
{
876
858
/* another cleanup process is running concurrently */
877
- GenericXLogAbort (state );
878
859
UnlockReleaseBuffer (buffer );
879
860
LockBuffer (metabuffer , RUM_UNLOCK );
880
861
break ;
@@ -918,7 +899,6 @@ rumInsertCleanup(RumState *rumstate,
918
899
* Remember next page - it will become the new list head
919
900
*/
920
901
blkno = RumPageGetOpaque (page )-> rightlink ;
921
- GenericXLogFinish (state );
922
902
UnlockReleaseBuffer (buffer ); /* shiftList will do exclusive
923
903
* locking */
924
904
@@ -952,18 +932,18 @@ rumInsertCleanup(RumState *rumstate,
952
932
else
953
933
{
954
934
blkno = RumPageGetOpaque (page )-> rightlink ;
955
- GenericXLogFinish (state );
956
935
UnlockReleaseBuffer (buffer );
957
936
}
958
937
959
938
/*
960
939
* Read next page in pending list
961
940
*/
962
941
vacuum_delay_point ();
942
+ buffer = ReadBuffer (index , blkno );
943
+ LockBuffer (buffer , RUM_SHARE );
944
+ page = BufferGetPage (buffer );
963
945
}
964
946
965
- GenericXLogFinish (metastate );
966
-
967
947
ReleaseBuffer (metabuffer );
968
948
969
949
/* Clean up temporary space */
0 commit comments