@@ -6760,6 +6760,7 @@ GetLastWrittenLSNv(RelFileLocator relfilenode, ForkNumber forknum,
6760
6760
BlockNumber blkno , int nblocks , XLogRecPtr * lsns )
6761
6761
{
6762
6762
LastWrittenLsnCacheEntry * entry ;
6763
+ XLogRecPtr lsn ;
6763
6764
6764
6765
Assert (lastWrittenLsnCacheSize != 0 );
6765
6766
Assert (nblocks > 0 );
@@ -6785,7 +6786,7 @@ GetLastWrittenLSNv(RelFileLocator relfilenode, ForkNumber forknum,
6785
6786
entry = hash_search (lastWrittenLsnCache , & key , HASH_FIND , NULL );
6786
6787
if (entry != NULL )
6787
6788
{
6788
- lsns [i ] = entry -> lsn ;
6789
+ lsns [i ] = entry -> lsn ;
6789
6790
}
6790
6791
else
6791
6792
{
@@ -6804,19 +6805,22 @@ GetLastWrittenLSNv(RelFileLocator relfilenode, ForkNumber forknum,
6804
6805
LWLockRelease (LastWrittenLsnLock );
6805
6806
LWLockAcquire (LastWrittenLsnLock , LW_EXCLUSIVE );
6806
6807
6808
+ lsn = XLogCtl -> maxLastWrittenLsn ;
6809
+
6807
6810
for (int i = 0 ; i < nblocks ; i ++ )
6808
6811
{
6809
6812
if (lsns [i ] == InvalidXLogRecPtr )
6810
6813
{
6811
- SetLastWrittenLSNForBlockRangeInternal (XLogCtl -> maxLastWrittenLsn , relfilenode , forknum , blkno + i , 1 );
6814
+ lsns [i ] = lsn ;
6815
+ SetLastWrittenLSNForBlockRangeInternal (lsn , relfilenode , forknum , blkno + i , 1 );
6812
6816
}
6813
6817
}
6814
6818
}
6815
6819
}
6816
6820
else
6817
6821
{
6818
6822
HASH_SEQ_STATUS seq ;
6819
- XLogRecPtr lsn = XLogCtl -> maxLastWrittenLsn ;
6823
+ lsn = XLogCtl -> maxLastWrittenLsn ;
6820
6824
/* Find maximum of all cached LSNs */
6821
6825
hash_seq_init (& seq , lastWrittenLsnCache );
6822
6826
while ((entry = (LastWrittenLsnCacheEntry * ) hash_seq_search (& seq )) != NULL )
0 commit comments