From: sajibreadd Date: Wed, 10 Jul 2024 12:27:02 +0000 (+0600) Subject: crimson/osd/pg: update PG stats on handle_rep_op X-Git-Tag: v20.0.0~1405^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=82ae96fa86b7f83067ec42538ac48da0a77afffd;p=ceph.git crimson/osd/pg: update PG stats on handle_rep_op Fixes: https://tracker.ceph.com/issues/61761 Signed-off-by: Md Mahamudur Rahaman Sajib --- diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index 6cb3b6f05364..bd1110e02ec4 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -1366,6 +1366,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)) { @@ -1384,6 +1393,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 ec6bb78fa4e9..1db6410afd94 100644 --- a/src/crimson/osd/pg.h +++ b/src/crimson/osd/pg.h @@ -517,6 +517,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 1fc59b7d9a03..d01fd6468034 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(