From: Samuel Just Date: Sat, 8 May 2021 01:55:09 +0000 (-0700) Subject: crimson/os/seastore: add debugging on shutdown for cache, pin contents X-Git-Tag: v17.1.0~2000^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=38f195a11d4765f13da99f8f851c8beaa066bc82;p=ceph.git crimson/os/seastore: add debugging on shutdown for cache, pin contents Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index cae26ba3f001..139dc104211a 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -48,6 +48,16 @@ Cache::retire_extent_ret Cache::retire_extent( } } +void Cache::dump_contents() +{ + LOG_PREFIX(Cache::dump_contents); + DEBUG("enter"); + for (auto &&i: extents) { + DEBUG("live {}", i); + } + DEBUG("exit"); +} + void Cache::add_extent(CachedExtentRef ref) { LOG_PREFIX(Cache::add_extent); diff --git a/src/crimson/os/seastore/cache.h b/src/crimson/os/seastore/cache.h index d8fc5bed6220..0c10f2c4e86e 100644 --- a/src/crimson/os/seastore/cache.h +++ b/src/crimson/os/seastore/cache.h @@ -540,6 +540,9 @@ public: } } + /// Dump live extents + void dump_contents(); + private: SegmentManager &segment_manager; ///< ref to segment_manager RootBlockRef root; ///< ref to current root diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc index bbbf0a90f1c8..c9b72df4df8d 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc @@ -637,4 +637,11 @@ BtreeLBAManager::update_internal_mapping( }); } +BtreeLBAManager::~BtreeLBAManager() +{ + pin_set.scan([](auto &i) { + logger().error("Found {} {} has_ref={}", i, i.get_extent(), i.has_ref()); + }); +} + } diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h index 34fa32809573..a03b24233410 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h +++ b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h @@ -119,6 +119,7 @@ public: bpin->parent = nullptr; } + ~BtreeLBAManager(); private: SegmentManager &segment_manager; Cache &cache; diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_range_pin.h b/src/crimson/os/seastore/lba_manager/btree/btree_range_pin.h index d4529ae48ec3..08e3979c020e 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_range_pin.h +++ b/src/crimson/os/seastore/lba_manager/btree/btree_range_pin.h @@ -117,6 +117,15 @@ public: extent = nextent; } + CachedExtent &get_extent() { + assert(extent); + return *extent; + } + + bool has_ref() { + return !!ref; + } + void take_pin(btree_range_pin_t &other); friend bool operator<( @@ -212,6 +221,13 @@ public: void retire(btree_range_pin_t &pin); void check_parent(btree_range_pin_t &pin); + template + void scan(F &&f) { + for (auto &i : pins) { + std::invoke(f, i); + } + } + ~btree_pin_set_t() { ceph_assert(pins.empty()); } diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc index 8dd77164f638..85a1ef76486b 100644 --- a/src/crimson/os/seastore/transaction_manager.cc +++ b/src/crimson/os/seastore/transaction_manager.cc @@ -107,11 +107,17 @@ TransactionManager::mount_ertr::future<> TransactionManager::mount() } TransactionManager::close_ertr::future<> TransactionManager::close() { + LOG_PREFIX(TransactionManager::close); + DEBUG("enter"); return segment_cleaner->stop( ).then([this] { return cache->close(); }).safe_then([this] { + cache->dump_contents(); return journal->close(); + }).safe_then([this, FNAME] { + DEBUG("completed"); + return seastar::now(); }); }