lmdb: round map sizes up to page boundaries

Round requested LMDB map sizes upward to the next page boundary.
This avoids producing incorrectly aligned map sizes when the
requested size is not already page-aligned.
This commit is contained in:
selsta
2026-07-22 13:40:50 +02:00
parent d23e971ae6
commit 658d73951f
2 changed files with 6 additions and 2 deletions
+3 -1
View File
@@ -561,7 +561,9 @@ void BlockchainLMDB::do_resize(uint64_t increase_size)
if (increase_size > 0)
new_mapsize = mei.me_mapsize + increase_size;
new_mapsize += (new_mapsize % mst.ms_psize);
const uint64_t remainder = new_mapsize % mst.ms_psize;
if (remainder)
new_mapsize += mst.ms_psize - remainder;
mdb_txn_safe::prevent_new_txns();
@@ -123,7 +123,9 @@ static void add_size(MDB_env *env, uint64_t bytes)
mdb_env_stat(env, &mst);
uint64_t new_mapsize = (uint64_t)mei.me_mapsize + bytes;
new_mapsize += (new_mapsize % mst.ms_psize);
const uint64_t remainder = new_mapsize % mst.ms_psize;
if (remainder)
new_mapsize += mst.ms_psize - remainder;
int result = mdb_env_set_mapsize(env, new_mapsize);
if (result)