From 393c20396169915b7160645fb0038331dad50ccb Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Mon, 22 Apr 2024 14:05:26 +0800 Subject: [PATCH] crimson/osd/osd_operations/client_request: cleanup, simplify recover_missings Signed-off-by: Yingxin Cheng (cherry picked from commit 1a496a5f0415583f05eb90c5461913a92db14f74) --- .../osd_operations/client_request_common.cc | 64 +++++++++---------- .../osd_operations/client_request_common.h | 4 +- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/crimson/osd/osd_operations/client_request_common.cc b/src/crimson/osd/osd_operations/client_request_common.cc index b1c8d37f1d9..657bdf7bd60 100644 --- a/src/crimson/osd/osd_operations/client_request_common.cc +++ b/src/crimson/osd/osd_operations/client_request_common.cc @@ -17,7 +17,7 @@ namespace crimson::osd { InterruptibleOperation::template interruptible_future<> CommonClientRequest::recover_missings( - Ref &pg, + Ref pg, const hobject_t& soid, std::set &&snaps, const osd_reqid_t& reqid) @@ -32,43 +32,43 @@ CommonClientRequest::recover_missings( pg, soid.get_head(), reqid ).then_interruptible([snaps=std::move(snaps), pg, soid, reqid]() mutable { if (snaps.empty()) { - return ObjectContextLoader::load_obc_iertr::now(); + return InterruptibleOperation::interruptor::now(); } - return pg->obc_loader.with_obc( - soid.get_head(), - [snaps=std::move(snaps), pg, soid, reqid](auto head, auto) mutable { - return seastar::do_with( - std::move(snaps), - [pg, soid, head, reqid](auto &snaps) mutable { - return InterruptibleOperation::interruptor::do_for_each( - snaps, - [pg, soid, head, reqid](auto &snap) mutable -> - InterruptibleOperation::template interruptible_future<> { - auto coid = head->obs.oi.soid; - coid.snap = snap; - auto oid = resolve_oid(head->get_head_ss(), coid); - /* Rollback targets may legitimately not exist if, for instance, - * the object is an rbd block which happened to be sparse and - * therefore non-existent at the time of the specified snapshot. - * In such a case, rollback will simply delete the object. Here, - * we skip the oid as there is no corresponding clone to recover. - * See https://tracker.ceph.com/issues/63821 */ - if (oid) { - return do_recover_missing(pg, *oid, reqid); - } else { - return seastar::now(); - } - }); - }); + return seastar::do_with( + std::move(snaps), + [pg, soid, reqid](auto& snaps) { + return pg->obc_loader.with_obc( + soid.get_head(), + [&snaps, pg, soid, reqid](auto head, auto) { + return InterruptibleOperation::interruptor::do_for_each( + snaps, + [pg, soid, head, reqid](auto &snap) + -> InterruptibleOperation::template interruptible_future<> { + auto coid = head->obs.oi.soid; + coid.snap = snap; + auto oid = resolve_oid(head->get_head_ss(), coid); + /* Rollback targets may legitimately not exist if, for instance, + * the object is an rbd block which happened to be sparse and + * therefore non-existent at the time of the specified snapshot. + * In such a case, rollback will simply delete the object. Here, + * we skip the oid as there is no corresponding clone to recover. + * See https://tracker.ceph.com/issues/63821 */ + if (oid) { + return do_recover_missing(pg, *oid, reqid); + } else { + return seastar::now(); + } + }); + }).handle_error_interruptible( + crimson::ct_error::assert_all("unexpected error") + ); }); - }).handle_error_interruptible( - crimson::ct_error::assert_all("unexpected error") - ); + }); } typename InterruptibleOperation::template interruptible_future<> CommonClientRequest::do_recover_missing( - Ref& pg, + Ref pg, const hobject_t& soid, const osd_reqid_t& reqid) { diff --git a/src/crimson/osd/osd_operations/client_request_common.h b/src/crimson/osd/osd_operations/client_request_common.h index 738f1b1f7bb..906ce53b50a 100644 --- a/src/crimson/osd/osd_operations/client_request_common.h +++ b/src/crimson/osd/osd_operations/client_request_common.h @@ -13,14 +13,14 @@ struct CommonClientRequest { static InterruptibleOperation::template interruptible_future<> recover_missings( - Ref &pg, + Ref pg, const hobject_t& soid, std::set &&snaps, const osd_reqid_t& reqid); static InterruptibleOperation::template interruptible_future<> do_recover_missing( - Ref& pg, + Ref pg, const hobject_t& soid, const osd_reqid_t& reqid); -- 2.39.5