11// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*-
22// vim: ts=8 sw=2 smarttab expandtab
33
4+ #include " crimson/common/coroutine.h"
45#include " crimson/common/log.h"
56#include " crimson/osd/osd_operations/client_request_common.h"
67#include " crimson/osd/pg.h"
@@ -47,11 +48,11 @@ CommonClientRequest::do_recover_missing(
4748 DEBUGDPP (
4849 " reqid {} nothing to recover {}" ,
4950 *pg, reqid, soid);
50- return seastar::make_ready_future< bool >( false ) ;
51+ co_return false ;
5152 }
5253
5354 if (pg->get_peering_state ().get_missing_loc ().is_unfound (soid)) {
54- return seastar::make_ready_future< bool >( true ) ;
55+ co_return true ;
5556 }
5657 DEBUGDPP (
5758 " reqid {} need to wait for recovery, {} version {}" ,
@@ -60,19 +61,19 @@ CommonClientRequest::do_recover_missing(
6061 DEBUGDPP (
6162 " reqid {} object {} version {}, already recovering" ,
6263 *pg, reqid, soid, ver);
63- return pg->get_recovery_backend ()->get_recovering (
64- soid).wait_for_recovered (
65- ).then ([] {
66- return seastar::make_ready_future<bool >(false );
67- });
64+ co_await PG::interruptor::make_interruptible (
65+ pg->get_recovery_backend ()->get_recovering (
66+ soid).wait_for_recovered ());
67+ co_return false ;
6868 } else {
6969 DEBUGDPP (
7070 " reqid {} object {} version {}, starting recovery" ,
7171 *pg, reqid, soid, ver);
7272 auto [op, fut] =
7373 pg->get_shard_services ().start_operation <UrgentRecovery>(
7474 soid, ver, pg, pg->get_shard_services (), pg->get_osdmap_epoch ());
75- return fut.then ([] { return seastar::make_ready_future<bool >(false ); });
75+ co_await PG::interruptor::make_interruptible (std::move (fut));
76+ co_return false ;
7677 }
7778}
7879
0 commit comments