From 476979a27bf7b6b02a9e4b1530aa6e0a0ce23fd5 Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Thu, 16 Dec 2021 16:46:59 +0000 Subject: [PATCH] crimson/osd: implement op discarding for backfill. Signed-off-by: Radoslaw Zarzynski --- src/crimson/osd/recovery_backend.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/crimson/osd/recovery_backend.cc b/src/crimson/osd/recovery_backend.cc index f41b8a3de3462..8213525e3c6aa 100644 --- a/src/crimson/osd/recovery_backend.cc +++ b/src/crimson/osd/recovery_backend.cc @@ -124,6 +124,10 @@ RecoveryBackend::handle_backfill( MOSDPGBackfill& m) { logger().debug("{}", __func__); + if (pg.old_peering_msg(m.map_epoch, m.query_epoch)) { + logger().debug("{}: discarding {}", __func__, m); + return seastar::now(); + } switch (m.op) { case MOSDPGBackfill::OP_BACKFILL_FINISH: handle_backfill_finish(m); @@ -144,7 +148,10 @@ RecoveryBackend::handle_backfill_remove( { logger().debug("{} m.ls={}", __func__, m.ls); assert(m.get_type() == MSG_OSD_PG_BACKFILL_REMOVE); - + if (pg.can_discard_replica_op(m)) { + logger().debug("{}: discarding {}", __func__, m); + return seastar::now(); + } ObjectStore::Transaction t; for ([[maybe_unused]] const auto& [soid, ver] : m.ls) { // TODO: the reserved space management. PG::try_reserve_recovery_space(). @@ -275,6 +282,10 @@ RecoveryBackend::handle_scan( MOSDPGScan& m) { logger().debug("{}", __func__); + if (pg.old_peering_msg(m.map_epoch, m.query_epoch)) { + logger().debug("{}: discarding {}", __func__, m); + return seastar::now(); + } switch (m.op) { case MOSDPGScan::OP_SCAN_GET_DIGEST: return handle_scan_get_digest(m); -- 2.39.5