From: chunmei-liu Date: Mon, 22 Aug 2022 21:54:24 +0000 (-0700) Subject: crimson/seastore: fix omap empty delta buffer X-Git-Tag: v18.0.0~176^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=eedc47329c6e3891f635607284347ec0e696c948;p=ceph-ci.git 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 --- 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 890dd923249..11db3eb26ba 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());