]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/crimson/osd/pg_shard_manager.cc
update ceph source to reef 18.2.1
[ceph.git] / ceph / src / crimson / osd / pg_shard_manager.cc
index 03174b1df0509256048b729126e14ede02c67141..6061c856be26348435c5c74e878b378434ab8d32 100644 (file)
@@ -12,39 +12,6 @@ namespace {
 
 namespace crimson::osd {
 
-seastar::future<> PGShardManager::start(
-  const int whoami,
-  crimson::net::Messenger &cluster_msgr,
-  crimson::net::Messenger &public_msgr,
-  crimson::mon::Client &monc,
-  crimson::mgr::Client &mgrc,
-  crimson::os::FuturizedStore &store)
-{
-  ceph_assert(seastar::this_shard_id() == PRIMARY_CORE);
-  return osd_singleton_state.start_single(
-    whoami, std::ref(cluster_msgr), std::ref(public_msgr),
-    std::ref(monc), std::ref(mgrc)
-  ).then([this, whoami, &store] {
-    ceph::mono_time startup_time = ceph::mono_clock::now();
-    return shard_services.start(
-      std::ref(osd_singleton_state),
-      whoami,
-      startup_time,
-      osd_singleton_state.local().perf,
-      osd_singleton_state.local().recoverystate_perf,
-      std::ref(store));
-  });
-}
-
-seastar::future<> PGShardManager::stop()
-{
-  ceph_assert(seastar::this_shard_id() == PRIMARY_CORE);
-  return shard_services.stop(
-  ).then([this] {
-    return osd_singleton_state.stop();
-  });
-}
-
 seastar::future<> PGShardManager::load_pgs(crimson::os::FuturizedStore& store)
 {
   ceph_assert(seastar::this_shard_id() == PRIMARY_CORE);
@@ -56,12 +23,12 @@ seastar::future<> PGShardManager::load_pgs(crimson::os::FuturizedStore& store)
         auto[coll, shard_core] = coll_core;
        spg_t pgid;
        if (coll.is_pg(&pgid)) {
-         auto core = get_osd_singleton_state(
-         ).pg_to_shard_mapping.maybe_create_pg(
-           pgid, shard_core);
-         return with_remote_shard_state(
-           core,
-           [pgid](
+          return get_pg_to_shard_mapping().maybe_create_pg(
+            pgid, shard_core
+          ).then([this, pgid] (auto core) {
+            return this->template with_remote_shard_state(
+              core,
+              [pgid](
              PerShardState &per_shard_state,
              ShardServices &shard_services) {
              return shard_services.load_pg(
@@ -72,6 +39,7 @@ seastar::future<> PGShardManager::load_pgs(crimson::os::FuturizedStore& store)
                return seastar::now();
              });
            });
+          });
        } else if (coll.is_temp(&pgid)) {
          logger().warn(
            "found temp collection on crimson osd, should be impossible: {}",
@@ -117,8 +85,13 @@ seastar::future<> PGShardManager::broadcast_map_to_pgs(epoch_t epoch)
       local_service, epoch
     );
   }).then([this, epoch] {
-    get_osd_singleton_state().osdmap_gate.got_map(epoch);
-    return seastar::now();
+    logger().debug("PGShardManager::broadcast_map_to_pgs "
+                   "broadcasted up to {}",
+                    epoch);
+    return shard_services.invoke_on_all([epoch](auto &local_service) {
+      local_service.local_state.osdmap_gate.got_map(epoch);
+      return seastar::now();
+    });
   });
 }