From b18de4b273a3a4885cea7f91f34aa78805ca5a27 Mon Sep 17 00:00:00 2001 From: myoungwon oh Date: Sun, 24 Aug 2025 02:08:01 +0000 Subject: [PATCH] crimson/os/seastore/rbm: introduce get_end to remove error-prone code Signed-off-by: Myoungwon Oh --- .../os/seastore/random_block_manager/avlallocator.cc | 6 +++--- src/crimson/os/seastore/random_block_manager/avlallocator.h | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/crimson/os/seastore/random_block_manager/avlallocator.cc b/src/crimson/os/seastore/random_block_manager/avlallocator.cc index fb4f5b7692f..9c95f4a0897 100644 --- a/src/crimson/os/seastore/random_block_manager/avlallocator.cc +++ b/src/crimson/os/seastore/random_block_manager/avlallocator.cc @@ -84,7 +84,7 @@ rbm_abs_addr AvlAllocator::find_block(size_t size) return off; } } - return base_addr + total_size; + return get_end(); } extent_len_t AvlAllocator::find_block( @@ -174,7 +174,7 @@ std::optional> AvlAllocator::alloc_extent( auto try_to_alloc_block = [this, &result, FNAME] (uint64_t alloc_size) -> uint64_t { rbm_abs_addr start = find_block(alloc_size); - if (start != base_addr + total_size) { + if (start != get_end()) { _remove_from_tree(start, alloc_size); DEBUG("allocate addr: {}, allocate size: {}, available size: {}", start, alloc_size, available_size); @@ -258,7 +258,7 @@ bool AvlAllocator::is_free_extent(rbm_abs_addr start, size_t size) { rbm_abs_addr end = start + size; ceph_assert(size != 0); - if (start < base_addr || base_addr + total_size < end) { + if (start < base_addr || get_end() < end) { return false; } diff --git a/src/crimson/os/seastore/random_block_manager/avlallocator.h b/src/crimson/os/seastore/random_block_manager/avlallocator.h index fa703994e3f..74cf4aa21ff 100644 --- a/src/crimson/os/seastore/random_block_manager/avlallocator.h +++ b/src/crimson/os/seastore/random_block_manager/avlallocator.h @@ -127,6 +127,10 @@ public: return rbm_extent_state_t::ALLOCATED; } + rbm_abs_addr get_end() const { + return base_addr + total_size; + } + private: void _add_to_tree(rbm_abs_addr start, size_t size); -- 2.39.5