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)) {
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(
}
}
+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);
}
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 {}
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
std::map<int, HeartbeatStampsRef> heartbeat_stamps;
crimson::osd::ObjectContextRegistry obc_registry;
+
+private:
+ unsigned num_pgs = 0;
};
}