From 8e48bc0a4f6ed003a4ba6b17993d62378845ddd8 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Wed, 15 Jul 2020 16:47:08 -0700 Subject: [PATCH] crimson/os/seastore: link in LBAPin after read Signed-off-by: Samuel Just --- src/crimson/os/seastore/lba_manager.h | 2 ++ .../os/seastore/lba_manager/btree/btree_lba_manager.h | 4 ++++ src/crimson/os/seastore/transaction_manager.h | 7 +++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/crimson/os/seastore/lba_manager.h b/src/crimson/os/seastore/lba_manager.h index 1604aef86e7bf..a44f48fe96e2e 100644 --- a/src/crimson/os/seastore/lba_manager.h +++ b/src/crimson/os/seastore/lba_manager.h @@ -130,6 +130,8 @@ public: Transaction &t, CachedExtentRef e) = 0; + virtual void add_pin(LBAPin &pin) = 0; + virtual ~LBAManager() {} }; using LBAManagerRef = std::unique_ptr; 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 6463c91b014ea..4a01d7fe3a79d 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 @@ -87,6 +87,10 @@ public: Transaction &t, CachedExtentRef e) final; + void add_pin(LBAPin &pin) final { + pin_set.add_pin(reinterpret_cast(&pin)->pin); + } + private: SegmentManager &segment_manager; Cache &cache; diff --git a/src/crimson/os/seastore/transaction_manager.h b/src/crimson/os/seastore/transaction_manager.h index 149b704961844..011d3d3b3842b 100644 --- a/src/crimson/os/seastore/transaction_manager.h +++ b/src/crimson/os/seastore/transaction_manager.h @@ -115,8 +115,11 @@ public: t, pin->get_paddr(), pin->get_length() - ).safe_then([&pin, &ret_ref](auto ref) mutable { - ref->set_pin(std::move(pin)); + ).safe_then([this, &pin, &ret_ref](auto ref) mutable { + if (!ref->has_pin()) { + ref->set_pin(std::move(pin)); + lba_manager.add_pin(ref->get_pin()); + } ret_ref.push_back(std::make_pair(ref->get_laddr(), ref)); crimson::get_logger(ceph_subsys_filestore).debug( "read_extents: got extent {}", -- 2.39.5