From: Samuel Just Date: Thu, 26 Sep 2024 22:30:59 +0000 (+0000) Subject: crimson: factor out InternalClientRequest::do_process X-Git-Tag: v20.0.0~812^2~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=fc41fcb9d2a7c5b589ea68ad0644ac92d22fe761;p=ceph.git crimson: factor out InternalClientRequest::do_process Signed-off-by: Samuel Just --- diff --git a/src/crimson/osd/osd_operations/internal_client_request.cc b/src/crimson/osd/osd_operations/internal_client_request.cc index dabff1a33bdb6..d0ee392ecb638 100644 --- a/src/crimson/osd/osd_operations/internal_client_request.cc +++ b/src/crimson/osd/osd_operations/internal_client_request.cc @@ -50,6 +50,30 @@ CommonPGPipeline& InternalClientRequest::client_pp() return pg->request_pg_pipeline; } +InternalClientRequest::interruptible_future<> +InternalClientRequest::do_process( + crimson::osd::ObjectContextRef obc, + std::vector &osd_ops) +{ + return pg->do_osd_ops( + std::move(obc), + osd_ops, + std::as_const(op_info), + get_do_osd_ops_params() + ).safe_then_unpack_interruptible( + [](auto submitted, auto all_completed) { + return all_completed.handle_error_interruptible( + crimson::ct_error::eagain::handle([] { + ceph_assert(0 == "not handled"); + return seastar::now(); + })); + }, crimson::ct_error::eagain::handle([] { + ceph_assert(0 == "not handled"); + return interruptor::now(); + }) + ); +} + InternalClientRequest::interruptible_future<> InternalClientRequest::with_interruption() { @@ -93,24 +117,8 @@ InternalClientRequest::with_interruption() [&osd_ops, this](auto, auto obc) { return enter_stage(client_pp().process ).then_interruptible( - [obc=std::move(obc), &osd_ops, this] { - return pg->do_osd_ops( - std::move(obc), - osd_ops, - std::as_const(op_info), - get_do_osd_ops_params() - ).safe_then_unpack_interruptible( - [](auto submitted, auto all_completed) { - return all_completed.handle_error_interruptible( - crimson::ct_error::eagain::handle([] { - ceph_assert(0 == "not handled"); - return seastar::now(); - })); - }, crimson::ct_error::eagain::handle([] { - ceph_assert(0 == "not handled"); - return interruptor::now(); - }) - ); + [obc=std::move(obc), &osd_ops, this]() mutable { + return do_process(std::move(obc), osd_ops); }); }).handle_error_interruptible( crimson::ct_error::assert_all("unexpected error") diff --git a/src/crimson/osd/osd_operations/internal_client_request.h b/src/crimson/osd/osd_operations/internal_client_request.h index 782fb809042a6..6023db0a8dbe2 100644 --- a/src/crimson/osd/osd_operations/internal_client_request.h +++ b/src/crimson/osd/osd_operations/internal_client_request.h @@ -41,6 +41,9 @@ private: CommonPGPipeline& client_pp(); InternalClientRequest::interruptible_future<> with_interruption(); + InternalClientRequest::interruptible_future<> do_process( + crimson::osd::ObjectContextRef obc, + std::vector &osd_ops); seastar::future<> do_process();