So we can get rid of the annoying transfer each time we
try to add an extent into an ExtentList.
Also simplify the add_extents() method a little.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
if (m_num_extents > 0) {
last_extent = &((*m_extents)[m_num_extents - 1]);
- uint64_t last_offset = (last_extent->offset + last_extent->length) /
- m_block_size;
- uint32_t last_length = last_extent->length / m_block_size;
- int64_t max_blocks = m_max_alloc_size / m_block_size;
+ uint64_t last_offset = last_extent->end() / m_block_size;
+ uint32_t last_length = last_extent->length / m_block_size;
if ((last_offset == (uint64_t) start) &&
- (!max_blocks || (last_length + count) <= max_blocks)) {
+ (!m_max_blocks || (last_length + count) <= m_max_blocks)) {
can_merge = true;
}
}
AllocExtentVector *m_extents;
int64_t m_num_extents;
int64_t m_block_size;
- uint64_t m_max_alloc_size;
+ int64_t m_max_blocks;
public:
void init(AllocExtentVector *extents, int64_t block_size, uint64_t max_alloc_size) {
m_extents = extents;
m_num_extents = 0;
m_block_size = block_size;
- m_max_alloc_size = max_alloc_size;
+ m_max_blocks = max_alloc_size / block_size;
}
ExtentList(AllocExtentVector *extents, int64_t block_size) {