From eedc47329c6e3891f635607284347ec0e696c948 Mon Sep 17 00:00:00 2001 From: chunmei-liu Date: Mon, 22 Aug 2022 14:54:24 -0700 Subject: [PATCH] crimson/seastore: fix omap empty delta buffer when rm_key get end iterator, don't do muatate otherwise delta buffer will be empty and cause assert(delta.bl.lenght()) Signed-off-by: chunmei-liu --- .../os/seastore/omap_manager/btree/omap_btree_node_impl.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc index 890dd9232499..11db3eb26bab 100644 --- a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc +++ b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc @@ -552,12 +552,12 @@ OMapLeafNode::rm_key(omap_context_t oc, const std::string &key) { LOG_PREFIX(OMapLeafNode::rm_key); DEBUGT("{}, this: {}", oc.t, key, *this); - if(!is_pending()) { + auto rm_pt = find_string_key(key); + if (!is_pending() && rm_pt != iter_end()) { auto mut = oc.tm.get_mutable_extent(oc.t, this)->cast(); return mut->rm_key(oc, key); } - auto rm_pt = find_string_key(key); if (rm_pt != iter_end()) { ++(oc.t.get_omap_tree_stats().num_erases); journal_leaf_remove(rm_pt, maybe_get_delta_buffer()); -- 2.47.3