From: Radoslaw Zarzynski Date: Wed, 3 Sep 2025 12:06:56 +0000 (+0000) Subject: rmw_pipeline in RMWPipeline::Op X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c3043f25747037f952f752d4f8083e73be33b526;p=ceph-ci.git rmw_pipeline in RMWPipeline::Op Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/osd/ec_backend.cc b/src/crimson/osd/ec_backend.cc index 60d4ff4b5b4..66e1fa364eb 100644 --- a/src/crimson/osd/ec_backend.cc +++ b/src/crimson/osd/ec_backend.cc @@ -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_shards, std::vector&& log_entries) { const hobject_t& hoid = obc->obs.oi.soid; - logger().debug("ECBackend::{} hoid={}", __func__, hoid); - auto op = std::make_unique(std::move(txn), std::move(obc)); + logger().debug("{} hoid={} obc->attr_cache={}", __func__, hoid, obc->attr_cache); + auto op = + std::make_unique(std::move(txn), std::move(obc), rmw_pipeline); op->hoid = hoid; //op->delta_stats = delta_stats; op->version = osd_op_p.at_version; diff --git a/src/osd/ECCommon.cc b/src/osd/ECCommon.cc index f42593d56ed..b09c04cd037 100644 --- a/src/osd/ECCommon.cc +++ b/src/osd/ECCommon.cc @@ -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(); + const auto nop = std::make_shared(*this); nop->hoid = op->hoid; nop->trim_to = op->trim_to; nop->pg_committed_to = op->version; diff --git a/src/osd/ECCommon.h b/src/osd/ECCommon.h index 8ad2c40c701..2afccd0db27 100644 --- a/src/osd/ECCommon.h +++ b/src/osd/ECCommon.h @@ -527,7 +527,10 @@ struct ECCommon { std::list 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;