From 79a8669bf2f6ea483dafa46f9f9e6da760bbe94e Mon Sep 17 00:00:00 2001 From: sajibreadd Date: Wed, 10 Jul 2024 18:27:02 +0600 Subject: [PATCH] crimson/osd/pg: update PG stats on handle_rep_op Fixes: https://tracker.ceph.com/issues/61761 Signed-off-by: Md Mahamudur Rahaman Sajib (cherry picked from commit 82ae96fa86b7f83067ec42538ac48da0a77afffd) --- src/crimson/osd/pg.cc | 10 ++++++++++ src/crimson/osd/pg.h | 1 + src/crimson/osd/replicated_backend.cc | 1 + 3 files changed, 12 insertions(+) diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index ad777c49d60..8bee39d7838 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -1332,6 +1332,15 @@ PG::with_locked_obc(const hobject_t &hobj, }; } +void PG::update_stats(const pg_stat_t &stat) { + peering_state.update_stats( + [&stat] (auto& history, auto& stats) { + stats = stat; + return false; + } + ); +} + PG::interruptible_future<> PG::handle_rep_op(Ref req) { if (__builtin_expect(stopping, false)) { @@ -1350,6 +1359,7 @@ PG::interruptible_future<> PG::handle_rep_op(Ref req) auto p = req->logbl.cbegin(); std::vector log_entries; decode(log_entries, p); + update_stats(req->pg_stats); log_operation(std::move(log_entries), req->pg_trim_to, req->version, diff --git a/src/crimson/osd/pg.h b/src/crimson/osd/pg.h index a6a287e6223..2e3d1cbb838 100644 --- a/src/crimson/osd/pg.h +++ b/src/crimson/osd/pg.h @@ -514,6 +514,7 @@ public: with_obc_func_t&& f); interruptible_future<> handle_rep_op(Ref m); + void update_stats(const pg_stat_t &stat); void log_operation( std::vector&& logv, const eversion_t &trim_to, diff --git a/src/crimson/osd/replicated_backend.cc b/src/crimson/osd/replicated_backend.cc index 1fc59b7d9a0..d01fd646803 100644 --- a/src/crimson/osd/replicated_backend.cc +++ b/src/crimson/osd/replicated_backend.cc @@ -70,6 +70,7 @@ ReplicatedBackend::_submit_transaction(std::set&& pg_shards, encode(log_entries, m->logbl); m->pg_trim_to = osd_op_p.pg_trim_to; m->min_last_complete_ondisk = osd_op_p.min_last_complete_ondisk; + m->pg_stats = pg.get_info().stats; // TODO: set more stuff. e.g., pg_states sends->emplace_back( shard_services.send_to_osd( -- 2.39.5