From: myoungwon oh Date: Tue, 24 Feb 2026 05:56:46 +0000 (+0900) Subject: crimson/os/seastore: fix crash by checking for nullopt in search input X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6aeb6975bc9a4790a399c9cc70dba9635d2a7819;p=ceph-ci.git crimson/os/seastore: fix crash by checking for nullopt in search input 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 fa6b39db24f..4e6c75dfe1e 100644 --- a/src/crimson/os/seastore/omap_manager/log/log_node.cc +++ b/src/crimson/os/seastore/omap_manager/log/log_node.cc @@ -182,7 +182,7 @@ void LogNode::for_each_live_entry(F&& fn) { void LogNode::list(const std::optional &first, const std::optional &last, std::map &kvs) { - std::string_view s(*first); + std::string_view s = first ? std::string_view(*first) : std::string_view{""}; std::string_view e = last ? std::string_view(*last) : std::string_view{}; for_each_live_entry([&](const auto& ent, uint32_t index) -> bool { const auto k = ent.get_key(); diff --git a/src/test/crimson/seastore/test_seastore.cc b/src/test/crimson/seastore/test_seastore.cc index 891c306564c..2185d54033c 100644 --- a/src/test/crimson/seastore/test_seastore.cc +++ b/src/test/crimson/seastore/test_seastore.cc @@ -255,8 +255,10 @@ struct seastore_test_t : auto get_omaps( SeaStoreShard &sharded_seastore, - std::string start) { - ObjectStore::omap_iter_seek_t start_from{"", ObjectStore::omap_iter_seek_t::LOWER_BOUND}; + std::string start, + decltype(ObjectStore::omap_iter_seek_t::seek_type) bound = + ObjectStore::omap_iter_seek_t::LOWER_BOUND) { + ObjectStore::omap_iter_seek_t start_from{start, bound}; std::map kvs; std::function callback = [&kvs] (std::string_view key, std::string_view value) @@ -1883,6 +1885,9 @@ TEST_P(seastore_test_t, pgmeta_io) auto it = std::next(key_for_test_obj.begin(), 2); auto target_value = *it; + kvs = test_obj.get_omaps(*sharded_seastore, target_value, + ObjectStore::omap_iter_seek_t::UPPER_BOUND); + EXPECT_EQ(kvs.size(), 3); test_obj.rm_omap_range(*sharded_seastore, std::string(), target_value); kvs = test_obj.get_omaps(*sharded_seastore, std::string()); EXPECT_EQ(kvs.size(), log_count - 3);