]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/osd: implement op discarding for backfill.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Thu, 16 Dec 2021 16:46:59 +0000 (16:46 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Thu, 16 Dec 2021 16:47:57 +0000 (16:47 +0000)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/recovery_backend.cc

index f41b8a3de3462edcb397fd637c893cef17cab2b7..8213525e3c6aa52591e1802bb6c5a803072ee7eb 100644 (file)
@@ -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);