// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*-
// vim: ts=8 sw=2 smarttab expandtab
+#include "crimson/common/coroutine.h"
#include "crimson/common/log.h"
#include "crimson/osd/osd_operations/client_request_common.h"
#include "crimson/osd/pg.h"
DEBUGDPP(
"reqid {} nothing to recover {}",
*pg, reqid, soid);
- return seastar::make_ready_future<bool>(false);
+ co_return false;
}
if (pg->get_peering_state().get_missing_loc().is_unfound(soid)) {
- return seastar::make_ready_future<bool>(true);
+ co_return true;
}
DEBUGDPP(
"reqid {} need to wait for recovery, {} version {}",
DEBUGDPP(
"reqid {} object {} version {}, already recovering",
*pg, reqid, soid, ver);
- return pg->get_recovery_backend()->get_recovering(
- soid).wait_for_recovered(
- ).then([] {
- return seastar::make_ready_future<bool>(false);
- });
+ co_await PG::interruptor::make_interruptible(
+ pg->get_recovery_backend()->get_recovering(
+ soid).wait_for_recovered());
+ co_return false;
} else {
DEBUGDPP(
"reqid {} object {} version {}, starting recovery",
auto [op, fut] =
pg->get_shard_services().start_operation<UrgentRecovery>(
soid, ver, pg, pg->get_shard_services(), pg->get_osdmap_epoch());
- return fut.then([] { return seastar::make_ready_future<bool>(false); });
+ co_await PG::interruptor::make_interruptible(std::move(fut));
+ co_return false;
}
}