]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/alienstore: support multiple store shards on each reactor
authorChunmei Liu <chunmei.liu@ibm.com>
Wed, 1 Oct 2025 22:33:12 +0000 (22:33 +0000)
committerchunmei liu <chunmei.liu@ibm.com>
Thu, 19 Feb 2026 22:12:32 +0000 (14:12 -0800)
Signed-off-by: Chunmei Liu <chunmei.liu@ibm.com>
src/crimson/common/smp_helpers.h
src/crimson/os/alienstore/alien_store.cc
src/crimson/os/alienstore/alien_store.h

index 923d6434cfa008e7e6d57960d35a6c2a3166c2f0..362edf00d2cd6dbaf148bcbaea532a6862dc9f69 100644 (file)
@@ -21,6 +21,9 @@ namespace crimson {
 
 using core_id_t = seastar::shard_id;
 static constexpr core_id_t NULL_CORE = std::numeric_limits<core_id_t>::max();
+static constexpr unsigned int NULL_STORE_INDEX = std::numeric_limits<unsigned int>::max();
+static constexpr uint32_t GLOBAL_STORE = std::numeric_limits<uint32_t>::max();
+static constexpr unsigned int DEFAULT_STORE_INDEX = 0;
 
 /**
  * submit_to
index 65b8f061e64e356ffaadcf588f621c0f88a1d8c8..3affe28170bff1535adf0bf39cb3d5f13c695636 100644 (file)
@@ -84,7 +84,7 @@ AlienStore::~AlienStore()
 {
 }
 
-seastar::future<> AlienStore::start()
+seastar::future<unsigned int> AlienStore::start()
 {
   cct = std::make_unique<CephContext>(
     CEPH_ENTITY_TYPE_OSD,
@@ -119,7 +119,9 @@ seastar::future<> AlienStore::start()
   const auto num_threads =
     get_conf<uint64_t>("crimson_bluestore_num_threads");
   tp = std::make_unique<crimson::os::ThreadPool>(num_threads, 128, alien_thread_cpu_cores);
-  return tp->start();
+  return tp->start().then([]() {
+    return seastar::make_ready_future<unsigned int>(seastar::smp::count);
+  });
 }
 
 seastar::future<> AlienStore::stop()
@@ -273,7 +275,7 @@ seastar::future<std::vector<coll_core_t>> AlienStore::list_collections()
       ret.resize(ls.size());
       std::transform(
         ls.begin(), ls.end(), ret.begin(),
-        [](auto p) { return std::make_pair(p, NULL_CORE); });
+        [](auto p) { return std::make_pair(p, std::make_pair(NULL_CORE, NULL_STORE_INDEX)); });
       return seastar::make_ready_future<std::vector<coll_core_t>>(std::move(ret));
     });
   });
index 613501fffe007d12590ae2093f85e3a3b497cb77..9fe062b2f3a4b7a9de88e2bb0960a35651747a3d 100644 (file)
@@ -29,7 +29,7 @@ public:
              const ConfigValues& values);
   ~AlienStore() final;
 
-  seastar::future<> start() final;
+  seastar::future<unsigned int> start() final;
   seastar::future<> stop() final;
   mount_ertr::future<> mount() final;
   seastar::future<> umount() final;
@@ -48,7 +48,6 @@ public:
                                                 const ghobject_t& oid,
                                                 interval_set<uint64_t>& m,
                                                 uint32_t op_flags = 0) final;
-                                             
 
   get_attr_errorator::future<ceph::bufferlist> get_attr(
     CollectionRef c,
@@ -118,7 +117,11 @@ public:
     uint64_t len,
     uint32_t op_flags) final;
 
-  FuturizedStore::Shard& get_sharded_store() final {
+  BackendStore get_backend_store(uint32_t store_index = NULL_STORE_INDEX) final {
+    return BackendStore(*this, GLOBAL_STORE, store_index);
+  }
+
+  FuturizedStore::Shard& get_sharded_store(uint32_t store_index) final {
     return *this;
   }