]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
seastore: make public interfaces in RBM to use paddr_t
authormyoungwon oh <ohmyoungwon@gmail.com>
Fri, 22 Oct 2021 06:26:52 +0000 (15:26 +0900)
committermyoungwon oh <ohmyoungwon@gmail.com>
Fri, 22 Oct 2021 06:28:00 +0000 (15:28 +0900)
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/crimson/os/seastore/random_block_manager.h
src/crimson/os/seastore/random_block_manager/nvme_manager.cc
src/crimson/os/seastore/random_block_manager/nvme_manager.h
src/test/crimson/seastore/test_randomblock_manager.cc

index d184bb205f8c1338a0ca6963c82d5c2335089e64..eb619739cd329a6bfa9fa80b85bea97a14453358 100644 (file)
@@ -28,8 +28,8 @@ public:
 
   struct mkfs_config_t {
     std::string path;
-    blk_paddr_t start;
-    blk_paddr_t end;
+    paddr_t start;
+    paddr_t end;
     size_t block_size = 0;
     size_t total_size = 0;
     uint32_t blocks_per_segment = 1 << 18;
@@ -61,7 +61,7 @@ public:
     crimson::ct_error::input_output_error,
     crimson::ct_error::invarg,
     crimson::ct_error::enoent>;
-  virtual open_ertr::future<> open(const std::string &path, blk_paddr_t start) = 0;
+  virtual open_ertr::future<> open(const std::string &path, paddr_t start) = 0;
 
   using close_ertr = crimson::errorator<
     crimson::ct_error::input_output_error,
index 07ccbbce7c4c83b41224c12fd4e72edd628185d6..558cad59db2a636f2eb5f41fdcd45b5e6b131b64 100644 (file)
@@ -119,15 +119,25 @@ NVMeManager::mkfs_ertr::future<> NVMeManager::mkfs(mkfs_config_t config)
 {
   logger().debug("path {}", path);
   return _open_device(path).safe_then([this, &config]() {
-    return read_rbm_header(config.start).safe_then([](auto super) {
+    blk_paddr_t addr = convert_paddr_to_blk_paddr(
+      config.start,
+      config.block_size,
+      config.blocks_per_segment);
+    return read_rbm_header(addr).safe_then([](auto super) {
       logger().debug(" already exists ");
       return mkfs_ertr::now();
     }).handle_error(
       crimson::ct_error::enoent::handle([this, &config] (auto) {
        super.uuid = uuid_d(); // TODO
        super.magic = 0xFF; // TODO
-       super.start = config.start;
-       super.end = config.end;
+       super.start = convert_paddr_to_blk_paddr(
+         config.start,
+         config.block_size,
+         config.blocks_per_segment);
+       super.end = convert_paddr_to_blk_paddr(
+         config.end,
+         config.block_size,
+         config.blocks_per_segment);
        super.block_size = config.block_size;
        super.size = config.total_size;
        super.free_block_count = config.total_size/config.block_size - 2;
@@ -465,9 +475,14 @@ NVMeManager::write_ertr::future<> NVMeManager::sync_allocation(
 }
 
 NVMeManager::open_ertr::future<> NVMeManager::open(
-    const std::string &path, blk_paddr_t addr)
+    const std::string &path, paddr_t paddr)
 {
   logger().debug("open: path{}", path);
+
+  blk_paddr_t addr = convert_paddr_to_blk_paddr(
+    paddr,
+    super.block_size,
+    super.blocks_per_segment);
   return _open_device(path
       ).safe_then([this, addr]() {
       return read_rbm_header(addr).safe_then([&](auto s)
index 5ae66030d90347ede507928da8e790b64e5951b2..04ba5d12c52f722f2f5d249f067105263bda64b4 100644 (file)
@@ -186,7 +186,7 @@ public:
   mkfs_ertr::future<> mkfs(mkfs_config_t) final;
   read_ertr::future<> read(uint64_t addr, bufferptr &buffer) final;
   write_ertr::future<> write(uint64_t addr, bufferptr &buf) final;
-  open_ertr::future<> open(const std::string &path, blk_paddr_t start) final;
+  open_ertr::future<> open(const std::string &path, paddr_t start) final;
   close_ertr::future<> close() final;
 
   /*
index 2973ef487dccc1474f9fdcc585828cfc49eb5249..b92ae3444aa1591bfec481e10b03b7f6ee31837f 100644 (file)
@@ -64,8 +64,8 @@ struct rbm_test_t : public  seastar_test_suite_t,
     reader->add_segment_manager(segment_manager.get());
     device = new nvme_device::TestMemory(DEFAULT_TEST_SIZE);
     rbm_manager.reset(new NVMeManager(device, std::string()));
-    config.start = 0;
-    config.end = DEFAULT_TEST_SIZE;
+    config.start = paddr_t {0, 0, 0};
+    config.end = paddr_t {0, 0, DEFAULT_TEST_SIZE};
     config.block_size = DEFAULT_BLOCK_SIZE;
     config.total_size = DEFAULT_TEST_SIZE;
   }
@@ -86,7 +86,11 @@ struct rbm_test_t : public  seastar_test_suite_t,
   }
 
   auto read_rbm_header() {
-    return rbm_manager->read_rbm_header(config.start).unsafe_get0();
+    blk_paddr_t addr = convert_paddr_to_blk_paddr(
+      config.start,
+      config.block_size,
+      config.blocks_per_segment);
+    return rbm_manager->read_rbm_header(addr).unsafe_get0();
   }
 
   auto open() {
@@ -283,8 +287,8 @@ TEST_F(rbm_test_t, block_alloc_free_test)
 TEST_F(rbm_test_t, many_block_alloc)
 {
  run_async([this] {
-   config.start = 0;
-   config.end = DEFAULT_TEST_SIZE * 1024;
+   config.start = paddr_t {0, 0, 0};
+   config.end = paddr_t {0, 0, DEFAULT_TEST_SIZE * 1024};
    config.block_size = DEFAULT_BLOCK_SIZE;
    config.total_size = DEFAULT_TEST_SIZE * 1024;
    mkfs();