From: Yingxin Cheng Date: Wed, 3 Aug 2022 02:06:46 +0000 (+0800) Subject: crimson/os/seastore/cache: replace backref_buf_t by backref_entry_refs_t X-Git-Tag: v18.0.0~318^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=45aa8993b59a83c3ee6438eaa91c09b32107dd87;p=ceph-ci.git crimson/os/seastore/cache: replace backref_buf_t by backref_entry_refs_t Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/backref/btree_backref_manager.cc b/src/crimson/os/seastore/backref/btree_backref_manager.cc index b82db7e3092..c0996272e81 100644 --- a/src/crimson/os/seastore/backref/btree_backref_manager.cc +++ b/src/crimson/os/seastore/backref/btree_backref_manager.cc @@ -228,32 +228,37 @@ BtreeBackrefManager::merge_cached_backrefs( seastar::stop_iteration::yes); } auto &seq = iter->first; - auto &backref_list = iter->second.br_list; + auto &backref_entry_refs = iter->second; LOG_PREFIX(BtreeBackrefManager::merge_cached_backrefs); DEBUGT("seq {}, limit {}, num_fresh_backref {}" , t, seq, limit, t.get_num_fresh_backref()); if (seq <= limit && t.get_num_fresh_backref() * BACKREF_NODE_SIZE < max) { inserted_to = seq; return trans_intr::do_for_each( - backref_list, - [this, &t](auto &backref) { + backref_entry_refs, + [this, &t](auto &backref_entry_ref) { LOG_PREFIX(BtreeBackrefManager::merge_cached_backrefs); - if (backref.laddr != L_ADDR_NULL) { + auto &backref_entry = *backref_entry_ref; + if (backref_entry.laddr != L_ADDR_NULL) { DEBUGT("new mapping: {}~{} -> {}", - t, backref.paddr, backref.len, backref.laddr); + t, + backref_entry.paddr, + backref_entry.len, + backref_entry.laddr); return new_mapping( t, - backref.paddr, - backref.len, - backref.laddr, - backref.type).si_then([](auto &&pin) { + backref_entry.paddr, + backref_entry.len, + backref_entry.laddr, + backref_entry.type).si_then([](auto &&pin) { return seastar::now(); }); } else { - DEBUGT("remove mapping: {}", t, backref.paddr); + DEBUGT("remove mapping: {}", t, backref_entry.paddr); return remove_mapping( t, - backref.paddr).si_then([](auto&&) { + backref_entry.paddr + ).si_then([](auto&&) { return seastar::now(); }).handle_error_interruptible( crimson::ct_error::input_output_error::pass_further(), diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index 47ba0363ef9..f4d55d41a66 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -1400,11 +1400,8 @@ void Cache::backref_batch_update( if (iter == backref_entryrefs_by_seq.end()) { backref_entryrefs_by_seq.emplace(seq, std::move(list)); } else { - for (auto &ref : list) { - iter->second.br_list.push_back(*ref); - } - iter->second.backrefs.insert( - iter->second.backrefs.end(), + iter->second.insert( + iter->second.end(), std::make_move_iterator(list.begin()), std::make_move_iterator(list.end())); } diff --git a/src/crimson/os/seastore/cache.h b/src/crimson/os/seastore/cache.h index c46f9e138fe..a06aa0bde6b 100644 --- a/src/crimson/os/seastore/cache.h +++ b/src/crimson/os/seastore/cache.h @@ -74,13 +74,6 @@ struct backref_buf_entry_t { boost::intrusive::link_mode< boost::intrusive::auto_unlink>>; set_hook_t backref_set_hook; - - using list_hook_t = - boost::intrusive::list_member_hook< - boost::intrusive::link_mode< - boost::intrusive::auto_unlink>>; - list_hook_t backref_buf_hook; - using backref_set_member_options = boost::intrusive::member_hook< backref_buf_entry_t, set_hook_t, @@ -90,14 +83,6 @@ struct backref_buf_entry_t { backref_set_member_options, boost::intrusive::constant_time_size>; - using backref_list_member_options = boost::intrusive::member_hook< - backref_buf_entry_t, - list_hook_t, - &backref_buf_entry_t::backref_buf_hook>; - using list_t = boost::intrusive::list< - backref_buf_entry_t, - backref_list_member_options, - boost::intrusive::constant_time_size>; struct cmp_t { using is_transparent = paddr_t; bool operator()( @@ -116,22 +101,10 @@ struct backref_buf_entry_t { std::ostream &operator<<(std::ostream &out, const backref_buf_entry_t &ent); -using backref_buf_entry_ref = - std::unique_ptr; - +using backref_buf_entry_ref = std::unique_ptr; using backref_set_t = backref_buf_entry_t::set_t; - -struct backref_buf_t { - backref_buf_t(std::vector &&refs) : backrefs(std::move(refs)) { - for (auto &ref : backrefs) { - br_list.push_back(*ref); - } - } - std::vector backrefs; - backref_buf_entry_t::list_t br_list; -}; - -using backref_entryrefs_by_seq_t = std::map; +using backref_entry_refs_t = std::vector; +using backref_entryrefs_by_seq_t = std::map; /** * Cache