]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/recovery_backends: discard outdated recovery ops 57507/head
authorXuehan Xu <xuxuehan@qianxin.com>
Fri, 12 Apr 2024 06:01:16 +0000 (14:01 +0800)
committerMatan Breizman <mbreizma@redhat.com>
Thu, 16 May 2024 11:46:37 +0000 (14:46 +0300)
Fixes: https://tracker.ceph.com/issues/65453
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
(cherry picked from commit 234f41c33917e921b53c091af7b3fcbf0f141b4a)

src/crimson/osd/pg.h
src/crimson/osd/recovery_backend.cc
src/crimson/osd/replicated_recovery_backend.cc

index a81374be6bc6f1c5d9c69235963afda88089f8b6..c0badee72b7d368a4a932e7d6023eead8aab2455 100644 (file)
@@ -740,7 +740,7 @@ public:
 
   template <typename MsgType>
   bool can_discard_replica_op(const MsgType& m) const {
-    return can_discard_replica_op(m, m.map_epoch);
+    return can_discard_replica_op(m, m.get_map_epoch());
   }
 
 private:
index 1c55b9c6c618ba04fa64702584708c7a348d211d..7923ad24a4263e9c863f56d62f097a0d5b91f3e6 100644 (file)
@@ -162,10 +162,7 @@ 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().
index a62cb793272d5fc836b0b2c2c8311d23ef192c79..6a5af7a6d5e94858ae47dedd061e6ec91c07e486 100644 (file)
@@ -1307,6 +1307,11 @@ ReplicatedRecoveryBackend::handle_recovery_op(
   Ref<MOSDFastDispatchOp> m,
   crimson::net::ConnectionXcoreRef conn)
 {
+  if (pg.can_discard_replica_op(*m)) {
+    logger().debug("{}: discarding {}", __func__, *m);
+    return seastar::now();
+  }
+
   switch (m->get_header().type) {
   case MSG_OSD_PG_PULL:
     return handle_pull(boost::static_pointer_cast<MOSDPGPull>(m));