From: Xuehan Xu Date: Tue, 30 Apr 2024 06:55:45 +0000 (+0800) Subject: crimson/osd/pg_recovery: skip unfound objects when recovering the X-Git-Tag: v19.1.1~44^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=59e3ff197aca7d696f6874a9f927e02171fd122b;p=ceph.git crimson/osd/pg_recovery: skip unfound objects when recovering the primary Fixes: https://tracker.ceph.com/issues/65696 Signed-off-by: Xuehan Xu (cherry picked from commit 3d03ac21bd8de591e4d340e274863bca9d31b170) --- diff --git a/src/crimson/osd/pg_recovery.cc b/src/crimson/osd/pg_recovery.cc index b2f813447b371..4ed861cfd7ef7 100644 --- a/src/crimson/osd/pg_recovery.cc +++ b/src/crimson/osd/pg_recovery.cc @@ -146,11 +146,23 @@ size_t PGRecovery::start_primary_recovery_ops( } else { soid = p->second; } - const pg_missing_item& item = missing.get_items().find(p->second)->second; - ++p; hobject_t head = soid.get_head(); + if (pg->get_peering_state().get_missing_loc().is_unfound(soid)) { + logger().debug("{}: object {} unfound", __func__, soid); + ++skipped; + continue; + } + if (pg->get_peering_state().get_missing_loc().is_unfound(head)) { + logger().debug("{}: head object {} unfound", __func__, soid); + ++skipped; + continue; + } + + const pg_missing_item& item = missing.get_items().find(p->second)->second; + ++p; + bool head_missing = missing.is_missing(head); logger().info( "{} {} item.need {} {} {} {} {}",