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