From: Xuehan Xu Date: Wed, 3 Sep 2025 07:45:25 +0000 (+0800) Subject: crimson/osd/pg: tolerate NULL PG::pglog_based_recovery_op when X-Git-Tag: v21.0.0~157^2~140^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e6ff8e9a226f8f638a9f39b7b94d18d82f9cc7ca;p=ceph.git crimson/osd/pg: tolerate NULL PG::pglog_based_recovery_op when cancelling pglog based recovery The finish of pglog based recovery and the pg turning Clean are two asynchronous events, other events like DeferRecovery should tolerate this case. Fixes: https://tracker.ceph.com/issues/72844 Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index c7ae18d2f25..b9bcfebd022 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -1744,9 +1744,10 @@ void PG::reset_pglog_based_recovery_op() { } void PG::cancel_pglog_based_recovery_op() { - ceph_assert(pglog_based_recovery_op); - pglog_based_recovery_op->cancel(); - reset_pglog_based_recovery_op(); + if (pglog_based_recovery_op) { + pglog_based_recovery_op->cancel(); + reset_pglog_based_recovery_op(); + } } void PG::C_PG_FinishRecovery::finish(int r) {