From: Radoslaw Zarzynski Date: Tue, 5 May 2020 14:39:56 +0000 (+0200) Subject: crimson/osd: wire-up BackfillState and pg scanning on primary. X-Git-Tag: wip-pdonnell-testing-20200918.022351~657^2~11 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=f23cd6fbf632604d3e21a39a13c582ecc18b9a14;p=ceph-ci.git crimson/osd: wire-up BackfillState and pg scanning on primary. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/osd/backfill_state.h b/src/crimson/osd/backfill_state.h index 50a72342dcb..fea0f4ba930 100644 --- a/src/crimson/osd/backfill_state.h +++ b/src/crimson/osd/backfill_state.h @@ -28,6 +28,9 @@ struct BackfillState { // events comes first struct PrimaryScanned : sc::event { BackfillInterval result; + PrimaryScanned(BackfillInterval&& result) + : result(std::move(result)) { + } }; struct ReplicaScanned : sc::event { diff --git a/src/crimson/osd/pg_recovery.cc b/src/crimson/osd/pg_recovery.cc index a585e466a30..c5670ed3537 100644 --- a/src/crimson/osd/pg_recovery.cc +++ b/src/crimson/osd/pg_recovery.cc @@ -423,7 +423,17 @@ void PGRecovery::request_replica_scan( void PGRecovery::request_primary_scan( const hobject_t& begin) { - ceph_abort_msg("Not implemented"); + logger().debug("{}", __func__); + using crimson::common::local_conf; + std::ignore = pg->get_recovery_backend()->scan_for_backfill( + begin, + local_conf()->osd_backfill_scan_min, + local_conf()->osd_backfill_scan_max + ).then([this] (BackfillInterval bi) { + logger().debug("request_primary_scan:{}", __func__); + using BackfillState = crimson::osd::BackfillState; + start_backfill_recovery(BackfillState::PrimaryScanned{ std::move(bi) }); + }); } void PGRecovery::enqueue_push(