]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: add get_pg_stats() to public interface
authorSage Weil <sage@redhat.com>
Sat, 16 Sep 2017 03:07:38 +0000 (23:07 -0400)
committerSage Weil <sage@redhat.com>
Fri, 6 Oct 2017 18:08:17 +0000 (13:08 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc
src/osd/PG.cc
src/osd/PG.h

index 9a4143943b6bd6d4d8cb50f5eb9317d609a4fff6..824d345ab1cbd71a87020f96b3f100cacdc2744e 100644 (file)
@@ -2579,14 +2579,11 @@ int OSD::init()
           continue;
         }
 
-        pg->pg_stats_publish_lock.Lock();
-        if (pg->pg_stats_publish_valid) {
-          m->pg_stat[pg->pg_id.pgid] = pg->pg_stats_publish;
-         const auto lec = pg->pg_stats_publish.get_effective_last_epoch_clean();
-         min_last_epoch_clean = min(min_last_epoch_clean, lec);
-         min_last_epoch_clean_pgs.push_back(pg->pg_id.pgid);
-        }
-        pg->pg_stats_publish_lock.Unlock();
+       pg->get_pg_stats([&](const pg_stat_t& s, epoch_t lec) {
+           m->pg_stat[pg->pg_id.pgid] = s;
+           min_last_epoch_clean = min(min_last_epoch_clean, lec);
+           min_last_epoch_clean_pgs.push_back(pg->pg_id.pgid);
+         });
       }
 
       return m;
index 56d055a077a0c6caa554ee31cfb40f20245847c0..7286c0b1a88bba00bfd7c2d97c58b1849c8c5962 100644 (file)
@@ -8141,3 +8141,12 @@ void PG::dump_pgstate_history(Formatter *f)
   pgstate_history.dump(f);
   unlock();
 }
+
+void PG::get_pg_stats(std::function<void(const pg_stat_t&, epoch_t lec)> f)
+{
+  pg_stats_publish_lock.Lock();
+  if (pg_stats_publish_valid) {
+    f(pg_stats_publish, pg_stats_publish.get_effective_last_epoch_clean());
+  }
+  pg_stats_publish_lock.Unlock();
+}
index 28f3739a576d46906726c25c003ee977b2625418..402d52a7b648afb3f759d70f3ede054ba8052d84 100644 (file)
@@ -384,6 +384,8 @@ public:
 
   void dump_pgstate_history(Formatter *f);
 
+  void get_pg_stats(std::function<void(const pg_stat_t&, epoch_t lec)> f);
+
   virtual void do_request(
     OpRequestRef& op,
     ThreadPool::TPHandle &handle