]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: track number of pgs in shard_services
authorKefu Chai <kchai@redhat.com>
Mon, 20 Jan 2020 10:26:10 +0000 (18:26 +0800)
committerKefu Chai <kchai@redhat.com>
Wed, 22 Jan 2020 01:13:00 +0000 (09:13 +0800)
pg will be using it for evaluating the number pg log entries to keep for
each PG

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/crimson/osd/osd.cc
src/crimson/osd/osd_operations/pg_advance_map.cc
src/crimson/osd/pg.cc
src/crimson/osd/pg.h
src/crimson/osd/shard_services.h

index 64231720bf5fa9f8578c0e6506d1d67d2bc5a4a2..fcbfe47f83746390785a087b586e021a811a6179 100644 (file)
@@ -416,6 +416,7 @@ seastar::future<> OSD::load_pgs()
         return load_pg(pgid).then([pgid, this](auto&& pg) {
           logger().info("load_pgs: loaded {}", pgid);
           pg_map.pg_loaded(pgid, std::move(pg));
+          shard_services.inc_pg_num();
           return seastar::now();
         });
       } else if (coll.is_temp(&pgid)) {
index 48355f52f078dcfab4430e116c7b3b1159357491..64eacea6806408cc009aa019c7c9c2f153e4b9b6 100644 (file)
@@ -76,6 +76,7 @@ seastar::future<> PGAdvanceMap::start()
          handle.exit();
          if (do_init) {
            osd.pg_map.pg_created(pg->get_pgid(), pg);
+           osd.shard_services.inc_pg_num();
            logger().info("PGAdvanceMap::start new pg {}", *pg);
          }
          return seastar::when_all_succeed(
index 6b7556e960ff7c328bb56779c9c09e536991e453..9d95ed41b34d862f9292677f642775f58946589a 100644 (file)
@@ -271,6 +271,12 @@ void PG::prepare_write(pg_info_t &info,
   }
 }
 
+void PG::do_delete_work(ceph::os::Transaction &t)
+{
+  // TODO
+  shard_services.dec_pg_num();
+}
+
 void PG::log_state_enter(const char *state) {
   logger().info("Entering state: {}", state);
 }
index ad4aadde24cafa978e98143edffa5f73edc73f76..14787032502eb482c5148807fd4a8c7488d7b578 100644 (file)
@@ -268,9 +268,7 @@ public:
   void on_removal(ceph::os::Transaction &t) final {
     // TODO
   }
-  void do_delete_work(ceph::os::Transaction &t) final {
-    // TODO
-  }
+  void do_delete_work(ceph::os::Transaction &t) final;
 
   // merge/split not ready
   void clear_ready_to_merge() final {}
index 48b5b94d4a2342fa3ad311df5e3970fb2d7f7ab5..f90e1fb54183eef0fcccdc61944e9f4ac01503f3 100644 (file)
@@ -150,6 +150,16 @@ public:
   seastar::future<> send_pg_created();
   void prune_pg_created();
 
+  unsigned get_pg_num() const {
+    return num_pgs;
+  }
+  void inc_pg_num() {
+    ++num_pgs;
+  }
+  void dec_pg_num() {
+    --num_pgs;
+  }
+
   seastar::future<> osdmap_subscribe(version_t epoch, bool force_request);
 
   // Time state
@@ -161,6 +171,9 @@ public:
   std::map<int, HeartbeatStampsRef> heartbeat_stamps;
 
   crimson::osd::ObjectContextRegistry obc_registry;
+
+private:
+  unsigned num_pgs = 0;
 };
 
 }