]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rmw_pipeline in RMWPipeline::Op
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 3 Sep 2025 12:06:56 +0000 (12:06 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 27 Jan 2026 19:43:00 +0000 (19:43 +0000)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/ec_backend.cc
src/osd/ECCommon.cc
src/osd/ECCommon.h

index 60d4ff4b5b483de49efc0875bcc5dec3de91be46..66e1fa364eb7ae2ece5748762c139bc95f4e0db7 100644 (file)
@@ -233,8 +233,10 @@ struct ECCrimsonOp : ECCommon::RMWPipeline::Op {
   }
 
   ECCrimsonOp(ceph::os::Transaction&& t,
-              crimson::osd::ObjectContextRef &&obc)
-    : t(transate_transaction(std::move(t), std::move(obc))) {
+              crimson::osd::ObjectContextRef &&obc,
+             ECCommon::RMWPipeline& rmw_pipeline)
+    : Op(rmw_pipeline),
+      t(transate_transaction(std::move(t), std::move(obc))) {
   }
 
   void generate_transactions(
@@ -247,7 +249,6 @@ struct ECCrimsonOp : ECCommon::RMWPipeline::Op {
       const OSDMapRef &osdmap) final
   {
     assert(t);
-#if 1
     ECTransaction::generate_transactions(
       t.get(),
       plan,
@@ -262,7 +263,6 @@ struct ECCrimsonOp : ECCommon::RMWPipeline::Op {
       &temp_cleared,
       dpp,
       osdmap);
-#endif
   }
 
   bool skip_transaction(
@@ -301,8 +301,9 @@ ECBackend::submit_transaction(const std::set<pg_shard_t> &pg_shards,
                              std::vector<pg_log_entry_t>&& log_entries)
 {
   const hobject_t& hoid = obc->obs.oi.soid;
-  logger().debug("ECBackend::{} hoid={}", __func__, hoid);
-  auto op = std::make_unique<ECCrimsonOp>(std::move(txn), std::move(obc));
+  logger().debug("{} hoid={} obc->attr_cache={}", __func__, hoid, obc->attr_cache);
+  auto op =
+    std::make_unique<ECCrimsonOp>(std::move(txn), std::move(obc), rmw_pipeline);
   op->hoid = hoid;
   //op->delta_stats = delta_stats;
   op->version = osd_op_p.at_version;
index f42593d56ed8d3ef836d3f58c40ec3b3787a446d..b09c04cd03789e5b69dd7f087f3a6e5137ac34a9 100644 (file)
@@ -974,6 +974,10 @@ void ECCommon::RMWPipeline::cache_ready(Op &op) {
 }
 
 struct ECDummyOp final : ECCommon::RMWPipeline::Op {
+  ECDummyOp(ECCommon::RMWPipeline &rmw_pipeline)
+    : Op(rmw_pipeline) {
+  }
+
   void generate_transactions(
       ceph::ErasureCodeInterfaceRef &ec_impl,
       pg_t pgid,
@@ -1031,7 +1035,7 @@ void ECCommon::RMWPipeline::finish_rmw(OpRef const &op) {
       dout(20) << __func__ << " cache idle " << op->version << dendl;
       // submit a dummy, transaction-empty op to kick the rollforward
       const auto tid = get_parent()->get_tid();
-      const auto nop = std::make_shared<ECDummyOp>();
+      const auto nop = std::make_shared<ECDummyOp>(*this);
       nop->hoid = op->hoid;
       nop->trim_to = op->trim_to;
       nop->pg_committed_to = op->version;
index 8ad2c40c70151bf0623961991829b1d48dd8d1b8..2afccd0db27906e4898d89b333315d353e26b876 100644 (file)
@@ -527,7 +527,10 @@ struct ECCommon {
       std::list<ECExtentCache::OpRef> cache_ops;
       RMWPipeline *pipeline;
 
+      Op(RMWPipeline &pipeline) : tid(), plan(), pipeline(&pipeline) {}
+#ifndef WITH_CRIMSON
       Op() : tid(), plan(), pipeline(nullptr) {}
+#endif
 
       /// Callbacks
       Context *on_all_commit = nullptr;