From 95eda773936859e8a923d8b60993f7036b63d8e7 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Wed, 21 Feb 2024 14:37:13 +0800 Subject: [PATCH] crimson/osd/pg: filter out snapmapper objects when doing pgls/pgnls Signed-off-by: Xuehan Xu (cherry picked from commit 8f7921e8fb8a2035fa3f6c2cf6227b8176d6a654) --- src/crimson/osd/ops_executer.cc | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/crimson/osd/ops_executer.cc b/src/crimson/osd/ops_executer.cc index f03827b03d6b4..7d6f111453165 100644 --- a/src/crimson/osd/ops_executer.cc +++ b/src/crimson/osd/ops_executer.cc @@ -1166,6 +1166,10 @@ static PG::interruptible_future pgls_filter( } } +static inline bool is_snapmapper_oid(const hobject_t &obj) { + return obj.oid.name == SNAPMAPPER_OID; +} + static PG::interruptible_future do_pgnls_common( const hobject_t& pg_start, const hobject_t& pg_end, @@ -1186,6 +1190,13 @@ static PG::interruptible_future do_pgnls_common( [&backend, filter, nspace](auto&& ret) -> PG::interruptible_future, hobject_t>> { auto& [objects, next] = ret; + auto is_snapmapper = [](const hobject_t &obj) { + if (is_snapmapper_oid(obj)) { + return false; + } else { + return true; + } + }; auto in_my_namespace = [&nspace](const hobject_t& obj) { using crimson::common::local_conf; if (obj.get_namespace() == local_conf()->osd_hit_set_namespace) { @@ -1213,7 +1224,8 @@ static PG::interruptible_future do_pgnls_common( } }; - auto range = objects | boost::adaptors::filtered(in_my_namespace) + auto range = objects | boost::adaptors::filtered(is_snapmapper) + | boost::adaptors::filtered(in_my_namespace) | boost::adaptors::transformed(to_pglsed); logger().debug("do_pgnls_common: finishing the 1st stage of pgls"); return seastar::when_all_succeed(std::begin(range), @@ -1346,6 +1358,9 @@ static PG::interruptible_future do_pgls_common( PG::interruptor::map_reduce(std::move(objects), [&backend, filter, nspace](const hobject_t& obj) -> PG::interruptible_future{ + if (is_snapmapper_oid(obj)) { + return seastar::make_ready_future(); + } if (obj.get_namespace() == nspace) { if (filter) { return pgls_filter(*filter, backend, obj); -- 2.39.5