From 4592c5df554190065fa9a994f7b6dc3fed7ea214 Mon Sep 17 00:00:00 2001 From: Igor Fedotov Date: Sun, 20 Sep 2020 12:22:05 +0300 Subject: [PATCH] os/bluestore: add missing structs to bluestore_cache_other mempool Fixes: https://tracker.ceph.com/issues/47551 Signed-off-by: Igor Fedotov --- src/os/bluestore/bluestore_types.cc | 6 ++++++ src/os/bluestore/bluestore_types.h | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/src/os/bluestore/bluestore_types.cc b/src/os/bluestore/bluestore_types.cc index 2eaf003f2ca81..b45e166541127 100644 --- a/src/os/bluestore/bluestore_types.cc +++ b/src/os/bluestore/bluestore_types.cc @@ -399,6 +399,10 @@ void bluestore_blob_use_tracker_t::allocate() { ceph_assert(num_au != 0); bytes_per_au = new uint32_t[num_au]; + mempool::get_pool( + mempool::pool_index_t(mempool::mempool_bluestore_cache_other)). + adjust_count(1, sizeof(uint32_t) * num_au); + for (uint32_t i = 0; i < num_au; ++i) { bytes_per_au[i] = 0; } @@ -1042,6 +1046,8 @@ void bluestore_blob_t::split(uint32_t blob_offset, bluestore_blob_t& rb) } // bluestore_shared_blob_t +MEMPOOL_DEFINE_OBJECT_FACTORY(bluestore_shared_blob_t, bluestore_shared_blob_t, + bluestore_cache_other); void bluestore_shared_blob_t::dump(Formatter *f) const { diff --git a/src/os/bluestore/bluestore_types.h b/src/os/bluestore/bluestore_types.h index ed7f8219d57f0..3f2ef4370ff23 100644 --- a/src/os/bluestore/bluestore_types.h +++ b/src/os/bluestore/bluestore_types.h @@ -267,6 +267,9 @@ struct bluestore_blob_use_tracker_t { void clear() { if (num_au != 0) { delete[] bytes_per_au; + mempool::get_pool( + mempool::pool_index_t(mempool::mempool_bluestore_cache_other)). + adjust_count(-1, -sizeof(uint32_t) * num_au); } bytes_per_au = 0; au_size = 0; @@ -906,6 +909,7 @@ std::ostream& operator<<(std::ostream& out, const bluestore_blob_t& o); /// shared blob state struct bluestore_shared_blob_t { + MEMPOOL_CLASS_HELPERS(); uint64_t sbid; ///> shared blob id bluestore_extent_ref_map_t ref_map; ///< shared blob extents -- 2.39.5