From d72be3e99c794887a59ef264fa12642717f6ba1b Mon Sep 17 00:00:00 2001 From: Igor Fedotov Date: Fri, 14 Jul 2023 17:10:58 +0300 Subject: [PATCH] os/bluestore: Allocator's cosmetic cleanup/improvement. Intended for the forthcoming major update with new allocator implementation. Signed-off-by: Igor Fedotov --- src/os/bluestore/Allocator.cc | 2 +- src/os/bluestore/Allocator.h | 6 +++++- src/os/bluestore/AvlAllocator.cc | 4 ++-- src/os/bluestore/AvlAllocator.h | 17 +++++++++++------ 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/os/bluestore/Allocator.cc b/src/os/bluestore/Allocator.cc index 5c5b8db70eccd..1277b5762145e 100644 --- a/src/os/bluestore/Allocator.cc +++ b/src/os/bluestore/Allocator.cc @@ -205,7 +205,7 @@ Allocator *Allocator::create( void Allocator::release(const PExtentVector& release_vec) { - interval_set release_set; + release_set_t release_set; for (auto e : release_vec) { release_set.insert(e.offset, e.length); } diff --git a/src/os/bluestore/Allocator.h b/src/os/bluestore/Allocator.h index f136c98b2926a..04377e43e3a08 100644 --- a/src/os/bluestore/Allocator.h +++ b/src/os/bluestore/Allocator.h @@ -17,7 +17,11 @@ #include "include/ceph_assert.h" #include "bluestore_types.h" +typedef interval_set release_set_t; +typedef release_set_t::value_type release_set_entry_t; + class Allocator { + public: Allocator(std::string_view name, int64_t _capacity, @@ -49,7 +53,7 @@ public: /* Bulk release. Implementations may override this method to handle the whole * set at once. This could save e.g. unnecessary mutex dance. */ - virtual void release(const interval_set& release_set) = 0; + virtual void release(const release_set_t& release_set) = 0; void release(const PExtentVector& release_set); virtual void dump() = 0; diff --git a/src/os/bluestore/AvlAllocator.cc b/src/os/bluestore/AvlAllocator.cc index 8de249e978cbe..564572bc7ff1a 100644 --- a/src/os/bluestore/AvlAllocator.cc +++ b/src/os/bluestore/AvlAllocator.cc @@ -324,7 +324,7 @@ int AvlAllocator::_allocate( return 0; } -void AvlAllocator::_release(const interval_set& release_set) +void AvlAllocator::_release(const release_set_t& release_set) { for (auto p = release_set.begin(); p != release_set.end(); ++p) { const auto offset = p.get_start(); @@ -417,7 +417,7 @@ int64_t AvlAllocator::allocate( return _allocate(want, unit, max_alloc_size, hint, extents); } -void AvlAllocator::release(const interval_set& release_set) { +void AvlAllocator::release(const release_set_t& release_set) { std::lock_guard l(lock); _release(release_set); } diff --git a/src/os/bluestore/AvlAllocator.h b/src/os/bluestore/AvlAllocator.h index d79242a521cc5..4ac0f6fb0c8a5 100644 --- a/src/os/bluestore/AvlAllocator.h +++ b/src/os/bluestore/AvlAllocator.h @@ -81,7 +81,7 @@ public: uint64_t max_alloc_size, int64_t hint, PExtentVector *extents) override; - void release(const interval_set& release_set) override; + void release(const release_set_t& release_set) override; uint64_t get_free() override; double get_fragmentation() override; @@ -93,6 +93,9 @@ public: void shutdown() override; private: + CephContext* cct; + std::mutex lock; + // pick a range by search from cursor forward uint64_t _pick_block_after( uint64_t *cursor, @@ -230,9 +233,11 @@ protected: // called when extent to be released/marked free virtual void _add_to_tree(uint64_t start, uint64_t size); -protected: - CephContext* cct; - std::mutex lock; + CephContext* get_context() { return cct; } + + std::mutex& get_lock() { + return lock; + } double _get_fragmentation() const { auto free_blocks = p2align(num_free, (uint64_t)block_size) / block_size; @@ -246,7 +251,7 @@ protected: uint64_t _lowest_size_available() { auto rs = range_size_tree.begin(); - return rs != range_size_tree.end() ? rs->length() : 0; + return rs != range_size_tree.end() ? rs->length() : std::numeric_limits::max(); } int64_t _allocate( @@ -256,7 +261,7 @@ protected: int64_t hint, PExtentVector *extents); - void _release(const interval_set& release_set); + void _release(const release_set_t& release_set); void _release(const PExtentVector& release_set); void _shutdown(); -- 2.39.5