From: Samuel Just Date: Fri, 29 Mar 2024 21:45:39 +0000 (-0700) Subject: osd: roll_forward_to->pg_committed_to in EC* X-Git-Tag: v20.0.0~707^2~19 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8411911b6b92d5d3ae1bfc743207bc4f224df716;p=ceph.git osd: roll_forward_to->pg_committed_to in EC* The purpose of this rename is merely to clarify that the necessary condition on ec roll-forward is that the pg has committed up to that point. Along with subsequent commits, this will clarify that both ec and replicated pools propagate pg_committed_to for related if not identical reasons. Because EC::submit_transaction already did op->roll_forward_to = std::max(min_last_complete_ondisk, rmw_pipeline.committed_to); there's no difference in behavior as rmw_pipeline.committed_to is updated immediately after the notification to the PG that the write completed. Signed-off-by: Samuel Just --- diff --git a/src/osd/ECBackend.cc b/src/osd/ECBackend.cc index beb9eacfd2a5..cab6bbb3acbe 100644 --- a/src/osd/ECBackend.cc +++ b/src/osd/ECBackend.cc @@ -983,8 +983,8 @@ void ECBackend::handle_sub_write( std::move(op.log_entries), op.updated_hit_set_history, op.trim_to, - op.roll_forward_to, - op.roll_forward_to, + op.pg_committed_to, + op.pg_committed_to, !op.backfill_or_async_recovery, localt, async); @@ -1470,7 +1470,7 @@ void ECBackend::submit_transaction( const eversion_t &at_version, PGTransactionUPtr &&t, const eversion_t &trim_to, - const eversion_t &min_last_complete_ondisk, + const eversion_t &pg_committed_to, vector&& log_entries, std::optional &hset_history, Context *on_all_commit, @@ -1485,7 +1485,7 @@ void ECBackend::submit_transaction( op->delta_stats = delta_stats; op->version = at_version; op->trim_to = trim_to; - op->roll_forward_to = std::max(min_last_complete_ondisk, rmw_pipeline.committed_to); + op->pg_committed_to = std::max(pg_committed_to, rmw_pipeline.committed_to); op->log_entries = log_entries; std::swap(op->updated_hit_set_history, hset_history); op->on_all_commit = on_all_commit; diff --git a/src/osd/ECBackend.h b/src/osd/ECBackend.h index 910cdc064e4f..46317b608326 100644 --- a/src/osd/ECBackend.h +++ b/src/osd/ECBackend.h @@ -106,7 +106,7 @@ public: const eversion_t &at_version, PGTransactionUPtr &&t, const eversion_t &trim_to, - const eversion_t &min_last_complete_ondisk, + const eversion_t &pg_committed_to, std::vector&& log_entries, std::optional &hset_history, Context *on_all_commit, diff --git a/src/osd/ECCommon.cc b/src/osd/ECCommon.cc index 1fc876105029..609ac3141ae3 100644 --- a/src/osd/ECCommon.cc +++ b/src/osd/ECCommon.cc @@ -158,7 +158,7 @@ ostream &operator<<(ostream &lhs, const ECCommon::RMWPipeline::Op &rhs) rhs.client_op->get_req()->print(lhs); } #endif - lhs << " roll_forward_to=" << rhs.roll_forward_to + lhs << " pg_committed_to=" << rhs.pg_committed_to << " temp_added=" << rhs.temp_added << " temp_cleared=" << rhs.temp_cleared << " pending_read=" << rhs.pending_read @@ -895,7 +895,7 @@ bool ECCommon::RMWPipeline::try_reads_to_commit() should_send ? iter->second : empty, op->version, op->trim_to, - op->roll_forward_to, + op->pg_committed_to, op->log_entries, op->updated_hit_set_history, op->temp_added, @@ -970,8 +970,8 @@ bool ECCommon::RMWPipeline::try_finish_rmw() dout(10) << __func__ << ": " << *op << dendl; dout(20) << __func__ << ": " << cache << dendl; - if (op->roll_forward_to > completed_to) - completed_to = op->roll_forward_to; + if (op->pg_committed_to > completed_to) + completed_to = op->pg_committed_to; if (op->version > committed_to) committed_to = op->version; @@ -984,7 +984,7 @@ bool ECCommon::RMWPipeline::try_finish_rmw() auto nop = std::make_unique(); nop->hoid = op->hoid; nop->trim_to = op->trim_to; - nop->roll_forward_to = op->version; + nop->pg_committed_to = op->version; nop->tid = tid; nop->reqid = op->reqid; waiting_reads.push_back(*nop); diff --git a/src/osd/ECCommon.h b/src/osd/ECCommon.h index 88f2940111ec..edde95b6ac56 100644 --- a/src/osd/ECCommon.h +++ b/src/osd/ECCommon.h @@ -522,7 +522,7 @@ struct ECCommon { osd_reqid_t reqid; ZTracer::Trace trace; - eversion_t roll_forward_to; /// Soon to be generated internally + eversion_t pg_committed_to; /// Soon to be generated internally /// Ancillary also provided from submit_transaction caller std::map obc_map; diff --git a/src/osd/ECMsgTypes.cc b/src/osd/ECMsgTypes.cc index a656766432f5..ae0636f7d492 100644 --- a/src/osd/ECMsgTypes.cc +++ b/src/osd/ECMsgTypes.cc @@ -37,7 +37,7 @@ void ECSubWrite::encode(bufferlist &bl) const encode(temp_added, bl); encode(temp_removed, bl); encode(updated_hit_set_history, bl); - encode(roll_forward_to, bl); + encode(pg_committed_to, bl); encode(backfill_or_async_recovery, bl); ENCODE_FINISH(bl); } @@ -60,9 +60,9 @@ void ECSubWrite::decode(bufferlist::const_iterator &bl) decode(updated_hit_set_history, bl); } if (struct_v >= 3) { - decode(roll_forward_to, bl); + decode(pg_committed_to, bl); } else { - roll_forward_to = trim_to; + pg_committed_to = trim_to; } if (struct_v >= 4) { decode(backfill_or_async_recovery, bl); @@ -80,7 +80,7 @@ std::ostream &operator<<( << ", reqid=" << rhs.reqid << ", at_version=" << rhs.at_version << ", trim_to=" << rhs.trim_to - << ", roll_forward_to=" << rhs.roll_forward_to; + << ", pg_committed_to=" << rhs.pg_committed_to; if (rhs.updated_hit_set_history) lhs << ", has_updated_hit_set_history"; if (rhs.backfill_or_async_recovery) @@ -94,7 +94,7 @@ void ECSubWrite::dump(Formatter *f) const f->dump_stream("reqid") << reqid; f->dump_stream("at_version") << at_version; f->dump_stream("trim_to") << trim_to; - f->dump_stream("roll_forward_to") << roll_forward_to; + f->dump_stream("pg_committed_to") << pg_committed_to; f->dump_bool("has_updated_hit_set_history", static_cast(updated_hit_set_history)); f->dump_bool("backfill_or_async_recovery", backfill_or_async_recovery); @@ -116,7 +116,7 @@ void ECSubWrite::generate_test_instances(list &o) o.back()->reqid = osd_reqid_t(entity_name_t::CLIENT(123), 1, 45678); o.back()->at_version = eversion_t(10, 300); o.back()->trim_to = eversion_t(5, 42); - o.back()->roll_forward_to = eversion_t(8, 250); + o.back()->pg_committed_to = eversion_t(8, 250); } void ECSubWriteReply::encode(bufferlist &bl) const diff --git a/src/osd/ECMsgTypes.h b/src/osd/ECMsgTypes.h index 2d0bc5c12216..d0df1ad6fa15 100644 --- a/src/osd/ECMsgTypes.h +++ b/src/osd/ECMsgTypes.h @@ -31,7 +31,7 @@ struct ECSubWrite { ObjectStore::Transaction t; eversion_t at_version; eversion_t trim_to; - eversion_t roll_forward_to; + eversion_t pg_committed_to; std::vector log_entries; std::set temp_added; std::set temp_removed; @@ -47,7 +47,7 @@ struct ECSubWrite { const ObjectStore::Transaction &t, eversion_t at_version, eversion_t trim_to, - eversion_t roll_forward_to, + eversion_t pg_committed_to, std::vector log_entries, std::optional updated_hit_set_history, const std::set &temp_added, @@ -56,7 +56,7 @@ struct ECSubWrite { : from(from), tid(tid), reqid(reqid), soid(soid), stats(stats), t(t), at_version(at_version), - trim_to(trim_to), roll_forward_to(roll_forward_to), + trim_to(trim_to), pg_committed_to(pg_committed_to), log_entries(log_entries), temp_added(temp_added), temp_removed(temp_removed), @@ -72,7 +72,7 @@ struct ECSubWrite { t.swap(other.t); at_version = other.at_version; trim_to = other.trim_to; - roll_forward_to = other.roll_forward_to; + pg_committed_to = other.pg_committed_to; log_entries.swap(other.log_entries); temp_added.swap(other.temp_added); temp_removed.swap(other.temp_removed);