From 96df2966cc18f15da7c8c76a386e4b52c6605d8b Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sun, 19 Oct 2025 16:45:11 +0300 Subject: [PATCH] Reserve block entries --- src/blockstore/blockstore_heap.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/blockstore/blockstore_heap.cpp b/src/blockstore/blockstore_heap.cpp index de1adc1a..2f742f42 100644 --- a/src/blockstore/blockstore_heap.cpp +++ b/src/blockstore/blockstore_heap.cpp @@ -365,7 +365,12 @@ int blockstore_heap_t::load_blocks(uint64_t disk_offset, uint64_t size, uint8_t { used_space += wr->size; } - block_info[wr->block_num].entries.push_back(wr); + auto & inf = block_info[wr->block_num]; + if (!inf.entries.size()) + { + inf.entries.reserve(dsk->meta_block_size / sizeof(heap_entry_t)); + } + inf.entries.push_back(wr); }, [&](uint32_t block_num, uint32_t last_offset, uint8_t *buf) { modify_alloc(block_num, [&](heap_block_info_t & inf) @@ -892,6 +897,8 @@ int blockstore_heap_t::allocate_entry(uint32_t entry_size, uint32_t *block_num, } *block_num = last_allocated_block; *entry = (heap_entry_t*)malloc_or_die(entry_size); + if (!inf.entries.size()) + inf.entries.reserve(dsk->meta_block_size / sizeof(heap_entry_t)); inf.entries.push_back(*entry); modify_alloc(last_allocated_block, [&](heap_block_info_t & inf) {