From: Radoslaw Zarzynski Date: Thu, 16 Dec 2021 16:01:32 +0000 (+0000) Subject: crimson/osd: explicitly abort on LOST_REVERT in PG log. X-Git-Tag: v17.1.0~217^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F44338%2Fhead;p=ceph.git crimson/osd: explicitly abort on LOST_REVERT in PG log. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/osd/pg_recovery.cc b/src/crimson/osd/pg_recovery.cc index e076b1c817fd..d5f261e26bf5 100644 --- a/src/crimson/osd/pg_recovery.cc +++ b/src/crimson/osd/pg_recovery.cc @@ -323,6 +323,16 @@ void PGRecovery::on_local_recover( const bool is_delete, ceph::os::Transaction& t) { + if (const auto &log = pg->get_peering_state().get_pg_log(); + !is_delete && + log.get_missing().is_missing(recovery_info.soid) && + log.get_missing().get_items().find(recovery_info.soid)->second.need > recovery_info.version) { + assert(pg->is_primary()); + if (const auto* latest = log.get_log().objects.find(recovery_info.soid)->second; + latest->op == pg_log_entry_t::LOST_REVERT) { + ceph_abort("mark_unfound_lost (LOST_REVERT) is not implemented yet"); + } + } pg->get_peering_state().recover_got(soid, recovery_info.version, is_delete, t);