From d7be213b8c3d6fe443a4b14c02461bb422e751c7 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Wed, 18 Sep 2019 00:10:19 +0800 Subject: [PATCH] crimson/osd: return hobject_t from pgls_filter() so we can use it as the mapper function in seastar::map_reduce(). Signed-off-by: Kefu Chai --- src/crimson/osd/ops_executer.cc | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/crimson/osd/ops_executer.cc b/src/crimson/osd/ops_executer.cc index 345d7d52b22..d3d009c4b1d 100644 --- a/src/crimson/osd/ops_executer.cc +++ b/src/crimson/osd/ops_executer.cc @@ -159,7 +159,7 @@ static inline std::unique_ptr get_pgls_filter( return filter; } -static seastar::future pgls_filter( +static seastar::future pgls_filter( const PGLSFilter& filter, const PGBackend& backend, const hobject_t& sobj) @@ -175,15 +175,15 @@ static seastar::future pgls_filter( if (!futval.failed()) { val.push_back(std::move(futval).get0()); } else if (filter.reject_empty_xattr()) { - return seastar::make_ready_future(false, sobj); + return seastar::make_ready_future(hobject_t{}); } const bool filtered = filter.filter(sobj, val); - return seastar::make_ready_future(filtered, sobj); + return seastar::make_ready_future(filtered ? sobj : hobject_t{}); }); } else { ceph::bufferlist empty_lvalue_bl; const bool filtered = filter.filter(sobj, empty_lvalue_bl); - return seastar::make_ready_future(filtered, sobj); + return seastar::make_ready_future(filtered ? sobj : hobject_t{}); } } @@ -227,7 +227,7 @@ static seastar::future do_pgnls_common( if (filter) { return pgls_filter(*filter, backend, obj); } else { - return seastar::make_ready_future(true, obj); + return seastar::make_ready_future(obj); } }; @@ -244,13 +244,11 @@ static seastar::future do_pgnls_common( std::move(items), std::move(next)); }); }).then( - [pg_end, filter] (const std::vector>& items, auto next) { - auto is_matched = [] (const auto& item) { - return std::get(item); + [pg_end, filter] (const std::vector& items, auto next) { + auto is_matched = [] (const auto& obj) { + return !obj.is_min(); }; - auto to_entry = [] (const auto& item) { - const auto& obj = std::get(item); + auto to_entry = [] (const auto& obj) { return librados::ListObjectImpl{ obj.get_namespace(), obj.oid.name, obj.get_key() }; -- 2.39.5