From: Xuehan Xu Date: Tue, 27 Aug 2024 14:04:52 +0000 (+0800) Subject: crimson/osd/pg: clear backfill_state when the PG goes clean X-Git-Tag: v20.0.0~1074^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=07a1a2ffd1afdb727c6918bba669d535adfdeb12;p=ceph.git crimson/osd/pg: clear backfill_state when the PG goes clean Fixes: https://tracker.ceph.com/issues/67731 Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index cdaa1e8378f..1d1285d1fd0 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -513,6 +513,7 @@ PG::do_delete_work(ceph::os::Transaction &t, ghobject_t _next) Context *PG::on_clean() { + recovery_handler->on_pg_clean(); scrubber.on_primary_active_clean(); return nullptr; } diff --git a/src/crimson/osd/pg_recovery.cc b/src/crimson/osd/pg_recovery.cc index f4a7d8a63db..226b4dfccb2 100644 --- a/src/crimson/osd/pg_recovery.cc +++ b/src/crimson/osd/pg_recovery.cc @@ -603,9 +603,13 @@ bool PGRecovery::budget_available() const return true; } -void PGRecovery::backfilled() +void PGRecovery::on_pg_clean() { backfill_state.reset(); +} + +void PGRecovery::backfilled() +{ using LocalPeeringEvent = crimson::osd::LocalPeeringEvent; std::ignore = pg->get_shard_services().start_operation( static_cast(pg), diff --git a/src/crimson/osd/pg_recovery.h b/src/crimson/osd/pg_recovery.h index f5b8632a382..58743be25d6 100644 --- a/src/crimson/osd/pg_recovery.h +++ b/src/crimson/osd/pg_recovery.h @@ -41,6 +41,7 @@ public: } seastar::future<> stop() { return seastar::now(); } + void on_pg_clean(); private: PGRecoveryListener* pg; size_t start_primary_recovery_ops(