]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/pg: update PG stats on handle_rep_op 58886/head
authorsajibreadd <sajibreadd@gmail.com>
Wed, 10 Jul 2024 12:27:02 +0000 (18:27 +0600)
committerMatan Breizman <mbreizma@redhat.com>
Sun, 28 Jul 2024 08:21:31 +0000 (11:21 +0300)
Fixes: https://tracker.ceph.com/issues/61761
Signed-off-by: Md Mahamudur Rahaman Sajib <mahamudur.sajib@croit.io>
(cherry picked from commit 82ae96fa86b7f83067ec42538ac48da0a77afffd)

src/crimson/osd/pg.cc
src/crimson/osd/pg.h
src/crimson/osd/replicated_backend.cc

index ad777c49d60118b66973abd10116d61196173294..8bee39d7838299a5b8033e76b000eb05eccaf4a5 100644 (file)
@@ -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<MOSDRepOp> req)
 {
   if (__builtin_expect(stopping, false)) {
@@ -1350,6 +1359,7 @@ PG::interruptible_future<> PG::handle_rep_op(Ref<MOSDRepOp> req)
   auto p = req->logbl.cbegin();
   std::vector<pg_log_entry_t> log_entries;
   decode(log_entries, p);
+  update_stats(req->pg_stats);
   log_operation(std::move(log_entries),
                 req->pg_trim_to,
                 req->version,
index a6a287e6223af6b36b9ddf0e00d82389a2702bbe..2e3d1cbb838fe013ac09b8709746fc8f1f854eb6 100644 (file)
@@ -514,6 +514,7 @@ public:
     with_obc_func_t&& f);
 
   interruptible_future<> handle_rep_op(Ref<MOSDRepOp> m);
+  void update_stats(const pg_stat_t &stat);
   void log_operation(
     std::vector<pg_log_entry_t>&& logv,
     const eversion_t &trim_to,
index 1fc59b7d9a03ae2e84647f7813ff26d7ebed07bd..d01fd6468034a3f59d3a0869593beec8345e461f 100644 (file)
@@ -70,6 +70,7 @@ ReplicatedBackend::_submit_transaction(std::set<pg_shard_t>&& 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(