From: myoungwon oh Date: Tue, 24 Feb 2026 04:03:01 +0000 (+0900) Subject: crimson/os/seastore: return correct result for non-logkey entries X-Git-Tag: v21.0.0~44^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ea24fb9c1be8fc6baa5fcde935cbc01af28b7f8c;p=ceph.git crimson/os/seastore: return correct result for non-logkey entries Signed-off-by: Myoungwon Oh --- diff --git a/src/crimson/os/seastore/omap_manager/log/log_node.cc b/src/crimson/os/seastore/omap_manager/log/log_node.cc index 4e5363a1d934..fa6b39db24ff 100644 --- a/src/crimson/os/seastore/omap_manager/log/log_node.cc +++ b/src/crimson/os/seastore/omap_manager/log/log_node.cc @@ -211,6 +211,7 @@ LogNode::get_value_ret LogNode::get_value(const std::string &key) const auto k = ent.get_key(); if (k == key) { bl = ent.get_val(); + found = true; /* If key is time-series log, * duplicate does not exist. In this case, return latest one */ if (is_log_key(k)) { @@ -235,6 +236,7 @@ bool LogNode::remove_entry(const std::string key) { auto iter = iter_begin(); uint32_t index = 0; + bool removed = false; while(iter != iter_end()) { if (iter->get_key() == key) { set_cur_bitmap(index, index); @@ -243,11 +245,12 @@ bool LogNode::remove_entry(const std::string key) if (is_log_key(key)) { return true; } + removed = true; } index++; iter++; }; - return false; + return removed; } bool LogNode::log_less_than(std::string_view str) const diff --git a/src/test/crimson/seastore/test_seastore.cc b/src/test/crimson/seastore/test_seastore.cc index 5ddd4bcd6450..506e19cd68f8 100644 --- a/src/test/crimson/seastore/test_seastore.cc +++ b/src/test/crimson/seastore/test_seastore.cc @@ -1968,6 +1968,17 @@ TEST_P(seastore_test_t, pgmeta_io) } } ASSERT_TRUE(crimson::os::seastore::log_manager::is_continuous_fixed_width(keys)); + + { + CTransaction t; + bufferlist bl; + std::string key = "missing/0000000000000003.E915304E.head.benchmark%udata%utrial165%u44927%uobject62"; + bl.append(std::string(128, 'f')); + test_obj.set_omap(t, key, bl); + do_transaction(std::move(t)); + test_obj.check_omap_key(*sharded_seastore, key); + test_obj.rm_omap_range(*sharded_seastore, key, key); + } }); }