]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
seastore/random_block_manager: use paddr_t instead of uint64
authormyoungwon oh <ohmyoungwon@gmail.com>
Wed, 24 Nov 2021 10:19:45 +0000 (19:19 +0900)
committermyoungwon oh <ohmyoungwon@gmail.com>
Tue, 18 Jan 2022 16:32:35 +0000 (01:32 +0900)
Reagarding read() and write(), use paddr_t as input parameter
instead of uint64

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 d7ac73d0ec91ef6e9f0c80d4f0869f51f88deec4..14d6f5696012cb60d9e3c127c0efbe61c8801fb9 100644 (file)
@@ -46,7 +46,7 @@ public:
     crimson::ct_error::invarg,
     crimson::ct_error::enoent,
     crimson::ct_error::erange>;
-  virtual read_ertr::future<> read(uint64_t addr, bufferptr &buffer) = 0;
+  virtual read_ertr::future<> read(paddr_t addr, bufferptr &buffer) = 0;
 
   using write_ertr = crimson::errorator<
     crimson::ct_error::input_output_error,
@@ -55,7 +55,7 @@ public:
     crimson::ct_error::enospc,
     crimson::ct_error::erange
     >;
-  virtual write_ertr::future<> write(uint64_t addr, bufferptr &buf) = 0;
+  virtual write_ertr::future<> write(paddr_t addr, bufferptr &buf) = 0;
 
   using open_ertr = crimson::errorator<
     crimson::ct_error::input_output_error,
index 577dc0394de1dfd2c4963b400ec7127be4a4d73d..1d53f10d21617c56f1c88abd888cec8472ff6735 100644 (file)
@@ -506,10 +506,11 @@ NVMeManager::open_ertr::future<> NVMeManager::open(
 }
 
 NVMeManager::write_ertr::future<> NVMeManager::write(
-  rbm_abs_addr addr,
+  paddr_t paddr,
   bufferptr &bptr)
 {
   ceph_assert(device);
+  rbm_abs_addr addr = convert_paddr_to_abs_addr(paddr);
   if (addr > super.end || addr < super.start ||
       bptr.length() > super.end - super.start) {
     return crimson::ct_error::erange::make();
@@ -520,10 +521,11 @@ NVMeManager::write_ertr::future<> NVMeManager::write(
 }
 
 NVMeManager::read_ertr::future<> NVMeManager::read(
-  rbm_abs_addr addr,
+  paddr_t paddr,
   bufferptr &bptr)
 {
   ceph_assert(device);
+  rbm_abs_addr addr = convert_paddr_to_abs_addr(paddr);
   if (addr > super.end || addr < super.start ||
       bptr.length() > super.end - super.start) {
     return crimson::ct_error::erange::make();
index 07313b2baccd6b9e774ae33b9df8e014ba390d69..cf865513df6aaf022e2fa5838f3a79cc6f0c3faa 100644 (file)
@@ -184,8 +184,8 @@ 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;
+  read_ertr::future<> read(paddr_t addr, bufferptr &buffer) final;
+  write_ertr::future<> write(paddr_t addr, bufferptr &buf) final;
   open_ertr::future<> open(const std::string &path, paddr_t start) final;
   close_ertr::future<> close() final;
 
index 39c37f63297d7bc42b6dffaa24ccecef259a6f83..f5a598cd389b9cd6d225fb3f2a271aa1808badbe 100644 (file)
@@ -75,9 +75,7 @@ struct rbm_test_t :
   }
 
   auto read_rbm_header() {
-    rbm_abs_addr addr = convert_paddr_to_abs_addr(
-      config.start,
-      config.block_size);
+    rbm_abs_addr addr = convert_paddr_to_abs_addr(config.start);
     return rbm_manager->read_rbm_header(addr).unsafe_get0();
   }
 
@@ -86,11 +84,17 @@ struct rbm_test_t :
   }
 
   auto write(uint64_t addr, bufferptr &ptr) {
-    return rbm_manager->write(addr, ptr).unsafe_get0();
+    paddr_t paddr = convert_abs_addr_to_paddr(
+      addr,
+      rbm_manager->get_device_id());
+    return rbm_manager->write(paddr, ptr).unsafe_get0();
   }
 
   auto read(uint64_t addr, bufferptr &ptr) {
-    return rbm_manager->read(addr, ptr).unsafe_get0();
+    paddr_t paddr = convert_abs_addr_to_paddr(
+      addr,
+      rbm_manager->get_device_id());
+    return rbm_manager->read(paddr, ptr).unsafe_get0();
   }
 
   auto create_rbm_transaction() {
@@ -105,8 +109,7 @@ struct rbm_test_t :
       for (auto p : extent) {
        paddr_t paddr = convert_abs_addr_to_paddr(
            p.first * block_size,
-           block_size,
-           0);
+           rbm_manager->get_device_id());
        size_t len = p.second * block_size;
        alloc_info.alloc_blk_ranges.push_back(std::make_pair(paddr, len));
        alloc_info.op = rbm_alloc_delta_t::op_types_t::SET;
@@ -130,9 +133,7 @@ struct rbm_test_t :
     for (auto p : allocated_blocks) {
       for (auto b : p.alloc_blk_ranges) {
        rbm_abs_addr addr =
-         convert_paddr_to_abs_addr(
-           b.first,
-           block_size);
+         convert_paddr_to_abs_addr(b.first);
        alloc_ids.insert(addr / block_size, b.second / block_size);
       }
     }
@@ -149,7 +150,10 @@ struct rbm_test_t :
                     * DEFAULT_BLOCK_SIZE;
        logger().debug(" addr {} id {} ", addr, id);
        auto bp = bufferptr(ceph::buffer::create_page_aligned(DEFAULT_BLOCK_SIZE));
-       rbm_manager->read(addr, bp).unsafe_get0();
+       paddr_t paddr = convert_abs_addr_to_paddr(
+         addr,
+         rbm_manager->get_device_id());
+       rbm_manager->read(paddr, bp).unsafe_get0();
        rbm_bitmap_block_t b_block(DEFAULT_BLOCK_SIZE);
        bufferlist bl;
        bl.append(bp);