@@ -4477,7 +4477,7 @@ XLOGShmemInit(void)
4477
4477
4478
4478
4479
4479
XLogCtl = (XLogCtlData * )
4480
- ShmemInitStruct ("XLOG Ctl" , XLOGShmemSize (), & foundXLog );
4480
+ ShmemInitStruct ("XLOG Ctl" , XLOGCtlShmemSize (), & foundXLog );
4481
4481
4482
4482
{
4483
4483
static HASHCTL info ;
@@ -6158,9 +6158,9 @@ GetLastWrittenLSN(RelFileNode rnode, ForkNumber forknum, BlockNumber blkno)
6158
6158
* SetLastWrittenLsn with dummy rnode is used by createdb and dbase_redo functions.
6159
6159
*/
6160
6160
void
6161
- SetLastWrittenLSNForBlockRange (XLogRecPtr lsn , RelFileNode rnode , ForkNumber forknum , BlockNumber from , BlockNumber till )
6161
+ SetLastWrittenLSNForBlockRange (XLogRecPtr lsn , RelFileNode rnode , ForkNumber forknum , BlockNumber from , BlockNumber n_blocks )
6162
6162
{
6163
- if (lsn == InvalidXLogRecPtr )
6163
+ if (lsn == InvalidXLogRecPtr || n_blocks == 0 )
6164
6164
return ;
6165
6165
6166
6166
LWLockAcquire (LastWrittenLsnLock , LW_EXCLUSIVE );
@@ -6175,12 +6175,15 @@ SetLastWrittenLSNForBlockRange(XLogRecPtr lsn, RelFileNode rnode, ForkNumber for
6175
6175
BufferTag key ;
6176
6176
bool found ;
6177
6177
BlockNumber bucket ;
6178
+ BlockNumber start_bucket ; /* inclusive */
6179
+ BlockNumber end_bucket ; /* exclusive */
6180
+
6181
+ start_bucket = from / LAST_WRITTEN_LSN_CACHE_BUCKET ;
6182
+ end_bucket = (from + n_blocks + LAST_WRITTEN_LSN_CACHE_BUCKET - 1 ) / LAST_WRITTEN_LSN_CACHE_BUCKET ;
6178
6183
6179
6184
key .rnode = rnode ;
6180
6185
key .forkNum = forknum ;
6181
- for (bucket = from / LAST_WRITTEN_LSN_CACHE_BUCKET ;
6182
- bucket <= till / LAST_WRITTEN_LSN_CACHE_BUCKET ;
6183
- bucket ++ )
6186
+ for (bucket = start_bucket ; bucket < end_bucket ; bucket ++ )
6184
6187
{
6185
6188
key .blockNum = bucket ;
6186
6189
entry = hash_search (lastWrittenLsnCache , & key , HASH_ENTER , & found );
@@ -6218,7 +6221,7 @@ SetLastWrittenLSNForBlockRange(XLogRecPtr lsn, RelFileNode rnode, ForkNumber for
6218
6221
void
6219
6222
SetLastWrittenLSNForBlock (XLogRecPtr lsn , RelFileNode rnode , ForkNumber forknum , BlockNumber blkno )
6220
6223
{
6221
- SetLastWrittenLSNForBlockRange (lsn , rnode , forknum , blkno , blkno );
6224
+ SetLastWrittenLSNForBlockRange (lsn , rnode , forknum , blkno , 1 );
6222
6225
}
6223
6226
6224
6227
/*
0 commit comments