]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/seastore: make device according to device type
authorZhang Song <zhangsong325@gmail.com>
Tue, 20 Sep 2022 06:09:57 +0000 (14:09 +0800)
committerZhang Song <zhangsong325@gmail.com>
Thu, 22 Sep 2022 05:47:50 +0000 (13:47 +0800)
Signed-off-by: Zhang Song <zhangsong325@gmail.com>
src/crimson/os/seastore/device.cc
src/crimson/os/seastore/device.h
src/crimson/os/seastore/seastore.cc
src/crimson/tools/store_nbd/tm_driver.cc

index 6eab7a27e2e74398a64bfab5d61a23cd8d9ab821..e28673dd06c694426bf85a893c9dfc0ab40b5867 100644 (file)
@@ -31,9 +31,10 @@ std::ostream& operator<<(std::ostream& out, const device_config_t& conf)
 }
 
 seastar::future<DeviceRef>
-Device::make_device(const std::string& device)
+Device::make_device(const std::string& device, device_type_t dtype)
 {
-  // TODO: configure device type
+  // TODO: support other backend types
+  assert(get_default_backend_of_device(dtype) == backend_type_t::SEGMENTED);
   return SegmentManager::get_segment_manager(device
   ).then([](DeviceRef ret) {
     return ret;
index 814413aec3ec0fc39d15ec8ca84094a74c7b2988..c9395cba4086bb928ccd4f7616ed288ece323397 100644 (file)
@@ -116,7 +116,9 @@ public:
     });
   }
 
-  static seastar::future<DeviceRef> make_device(const std::string &device);
+  static seastar::future<DeviceRef> make_device(
+    const std::string &device,
+    device_type_t dtype);
 };
 
 }
index 0c9514e665a4b6a5526a82b933ea82345ee80160..4879ed3e4372ae3e29d26eb92cfe918e16e5c696 100644 (file)
@@ -179,7 +179,7 @@ SeaStore::mount_ertr::future<> SeaStore::mount()
       device_type_t dtype = device_entry.second.dtype;
       std::ostringstream oss;
       oss << root << "/block." << dtype << "." << std::to_string(id);
-      return Device::make_device(oss.str()
+      return Device::make_device(oss.str(), dtype
       ).then([this, magic](DeviceRef sec_dev) {
         return sec_dev->mount(
         ).safe_then([this, sec_dev=std::move(sec_dev), magic]() mutable {
@@ -283,7 +283,7 @@ SeaStore::mkfs_ertr::future<> SeaStore::mkfs(uuid_d new_osd_fsid)
                 auto id = std::stoi(entry_name.substr(dtype_end + 1));
                 std::ostringstream oss;
                 oss << root << "/" << entry_name;
-                return Device::make_device(oss.str()
+                return Device::make_device(oss.str(), dtype
                 ).then([this, &sds, id, dtype, new_osd_fsid](DeviceRef sec_dev) {
                   magic_t magic = (magic_t)std::rand();
                   sds.emplace(
@@ -1882,7 +1882,7 @@ seastar::future<std::unique_ptr<SeaStore>> make_seastore(
   const ConfigValues &config)
 {
   return Device::make_device(
-    device
+    device, device_type_t::SSD
   ).then([&device](DeviceRef device_obj) {
 #ifndef NDEBUG
     bool is_test = true;
index 060016822f271995f1620f46caf60c6303fac237..7df85d1b2d1a9f8ef3b33a87a88b5b3b613f21f3 100644 (file)
@@ -153,7 +153,7 @@ seastar::future<> TMDriver::mkfs()
 {
   assert(config.path);
   logger().debug("mkfs");
-  return Device::make_device(*config.path
+  return Device::make_device(*config.path, device_type_t::SSD
   ).then([this](DeviceRef dev) {
     device = std::move(dev);
     seastore_meta_t meta;
@@ -195,7 +195,7 @@ seastar::future<> TMDriver::mount()
 {
   return (config.mkfs ? mkfs() : seastar::now()
   ).then([this] {
-    return Device::make_device(*config.path);
+    return Device::make_device(*config.path, device_type_t::SSD);
   }).then([this](DeviceRef dev) {
     device = std::move(dev);
     return device->mount();