@@ -653,15 +653,19 @@ rumbuild(Relation heap, Relation index, struct IndexInfo *indexInfo)
653653 */
654654for (blkno = 0 ;blkno < buildstate .buildStats .nTotalPages ;blkno ++ )
655655{
656- Buffer buffer = ReadBuffer (index ,blkno );
657- GenericXLogState * state = RumGenericXLogStart (index ,
658- buildstate .rumstate .isBuild );
656+ Buffer buffer ;
657+ GenericXLogState * state ;
659658
660- RumGenericXLogRegisterBuffer (state ,buffer ,GENERIC_XLOG_FULL_IMAGE ,
661- buildstate .rumstate .isBuild );
662- RumGenericXLogFinish (state ,buildstate .rumstate .isBuild );
659+ CHECK_FOR_INTERRUPTS ();
660+
661+ buffer = ReadBuffer (index ,blkno );
662+ LockBuffer (buffer ,RUM_SHARE );
663+
664+ state = GenericXLogStart (index );
665+ GenericXLogRegisterBuffer (state ,buffer ,GENERIC_XLOG_FULL_IMAGE );
666+ GenericXLogFinish (state );
663667
664- ReleaseBuffer (buffer );
668+ UnlockReleaseBuffer (buffer );
665669}
666670
667671/*
@@ -685,7 +689,7 @@ rumbuildempty(Relation index)
685689MetaBuffer ;
686690GenericXLogState * state ;
687691
688- state = RumGenericXLogStart (index , false );
692+ state = GenericXLogStart (index );
689693
690694/* An empty RUM index has two pages. */
691695MetaBuffer =
@@ -699,7 +703,7 @@ rumbuildempty(Relation index)
699703RumInitMetabuffer (state ,MetaBuffer , false);
700704RumInitBuffer (state ,RootBuffer ,RUM_LEAF , false);
701705
702- RumGenericXLogFinish (state , false );
706+ GenericXLogFinish (state );
703707
704708/* Unlock and release the buffers. */
705709UnlockReleaseBuffer (MetaBuffer );