From: Samuel Just Date: Tue, 26 Mar 2024 05:31:08 +0000 (+0000) Subject: crimson/osd/pg_backend: convert PGBackend::list_objects to a coroutine X-Git-Tag: v20.0.0~2273^2~7 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=4f056a4c1e9f01e4b04c96e85ebcfa29e6469adc;p=ceph.git crimson/osd/pg_backend: convert PGBackend::list_objects to a coroutine Signed-off-by: Samuel Just --- diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index bcdf2a6b1782f..0c9822365d141 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -17,6 +17,7 @@ #include "common/Checksummer.h" #include "common/Clock.h" +#include "crimson/common/coroutine.h" #include "crimson/common/exception.h" #include "crimson/common/tmap_helpers.h" #include "crimson/os/futurized_collection.h" @@ -1085,30 +1086,26 @@ PGBackend::list_objects( { auto gstart = start.is_min() ? ghobject_t{} : ghobject_t{start, 0, shard}; auto gend = end.is_max() ? ghobject_t::get_max() : ghobject_t{end, 0, shard}; - return interruptor::make_interruptible(store->list_objects(coll, - gstart, - gend, - limit)) - .then_interruptible([](auto ret) { - auto& [gobjects, next] = ret; - std::vector objects; - boost::copy(gobjects | - boost::adaptors::filtered([](const ghobject_t& o) { - if (o.is_pgmeta()) { - return false; - } else if (o.hobj.is_temp()) { - return false; - } else { - return o.is_no_gen(); - } - }) | - boost::adaptors::transformed([](const ghobject_t& o) { - return o.hobj; - }), - std::back_inserter(objects)); - return seastar::make_ready_future, hobject_t>>( - std::make_tuple(objects, next.hobj)); - }); + auto [gobjects, next] = co_await interruptor::make_interruptible( + store->list_objects(coll, gstart, gend, limit)); + + std::vector objects; + boost::copy( + gobjects | + boost::adaptors::filtered([](const ghobject_t& o) { + if (o.is_pgmeta()) { + return false; + } else if (o.hobj.is_temp()) { + return false; + } else { + return o.is_no_gen(); + } + }) | + boost::adaptors::transformed([](const ghobject_t& o) { + return o.hobj; + }), + std::back_inserter(objects)); + co_return std::make_tuple(objects, next.hobj); } PGBackend::setxattr_ierrorator::future<> PGBackend::setxattr(