]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/seastore/rbm: remove unnecessary copy during ool write
authormyoungwon oh <ohmyoungwon@gmail.com>
Wed, 11 Sep 2024 07:53:35 +0000 (07:53 +0000)
committermyoungwon oh <ohmyoungwon@gmail.com>
Sun, 15 Sep 2024 15:39:50 +0000 (15:39 +0000)
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/crimson/os/seastore/random_block_manager.h
src/crimson/os/seastore/random_block_manager/block_rb_manager.cc
src/crimson/os/seastore/random_block_manager/block_rb_manager.h
src/crimson/os/seastore/random_block_manager/nvme_block_device.cc
src/crimson/os/seastore/random_block_manager/nvme_block_device.h
src/crimson/os/seastore/random_block_manager/rbm_device.cc
src/crimson/os/seastore/random_block_manager/rbm_device.h

index 5e8a4d7c553450ddc8b343bf71e7567a7d105b21..69a36d6a1d379d4ea820d4a5f7a8c489c7ab1a57 100644 (file)
@@ -122,7 +122,7 @@ public:
     crimson::ct_error::enospc,
     crimson::ct_error::erange
     >;
-  virtual write_ertr::future<> write(paddr_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 e8376712a713c2181d250d9a71c6187b3ec18e71..81a836a7c3e54bdf5f6ea11ee698a814d39daf5a 100644 (file)
@@ -129,18 +129,16 @@ bool BlockRBManager::check_valid_range(rbm_abs_addr addr, bufferptr &bptr) {
 
 BlockRBManager::write_ertr::future<> BlockRBManager::write(
   paddr_t paddr,
-  bufferptr &bptr)
+  bufferptr bptr)
 {
   ceph_assert(device);
   rbm_abs_addr addr = convert_paddr_to_abs_addr(paddr);
   if (!check_valid_range(addr, bptr)) {
     return crimson::ct_error::erange::make();
   }
-  bufferptr bp = bufferptr(ceph::buffer::create_page_aligned(bptr.length()));
-  bp.copy_in(0, bptr.length(), bptr.c_str());
   return device->write(
     addr,
-    std::move(bp));
+    bptr);
 }
 
 BlockRBManager::read_ertr::future<> BlockRBManager::read(
index 877b2a076628d0b08caf51b1543e5365b1f53e37..0067dfaabaf2c4e7c6e0b2d929f7651d001cb8df 100644 (file)
@@ -43,7 +43,7 @@ public:
    */
 
   read_ertr::future<> read(paddr_t addr, bufferptr &buffer) final;
-  write_ertr::future<> write(paddr_t addr, bufferptr &buf) final;
+  write_ertr::future<> write(paddr_t addr, bufferptr buf) final;
   open_ertr::future<> open() final;
   close_ertr::future<> close() final;
 
index eb7070d5de177f73fe82eb85dff67a65bb3311ed..b66bf6f8f6c766160dd2cdab5e923a0c8d5d2817 100644 (file)
@@ -112,7 +112,7 @@ NVMeBlockDevice::mount_ret NVMeBlockDevice::mount()
 
 write_ertr::future<> NVMeBlockDevice::write(
   uint64_t offset,
-  bufferptr &&bptr,
+  bufferptr bptr,
   uint16_t stream) {
   logger().debug(
       "block: write offset {} len {}",
@@ -127,13 +127,13 @@ write_ertr::future<> NVMeBlockDevice::write(
   }
   if (is_end_to_end_data_protection()) {
     return seastar::do_with(
-      std::move(bptr),
+      bptr,
       [this, offset] (auto &bptr) {
       return nvme_write(offset, bptr.length(), bptr.c_str());
     });
   }
   return seastar::do_with(
-    std::move(bptr),
+    bptr,
     [this, offset, length, supported_stream] (auto& bptr) {
     return io_device[supported_stream].dma_write(
       offset, bptr.c_str(), length).handle_exception(
index 01755d047a0c0cafc566485ec15039edb4de256d..2abf0af7a9e2a01c396905cb81e12b614d2b1862 100644 (file)
@@ -221,7 +221,7 @@ public:
 
   write_ertr::future<> write(
     uint64_t offset,
-    bufferptr &&bptr,
+    bufferptr bptr,
     uint16_t stream = 0) override;
 
   using RBMDevice::read;
index f31bafcef9fb7636783c13d0eed02c74e0adf658..cd0675f220dc9a81d8db9cae60283ec0b6bd0e9c 100644 (file)
@@ -93,7 +93,7 @@ write_ertr::future<> RBMDevice::write_rbm_superblock()
   auto bp = bufferptr(ceph::buffer::create_page_aligned(super.block_size));
   assert(bl.length() < super.block_size);
   iter.copy(bl.length(), bp.c_str());
-  return write(RBM_START_ADDRESS, std::move(bp));
+  return write(RBM_START_ADDRESS, bp);
 }
 
 read_ertr::future<rbm_superblock_t> RBMDevice::read_rbm_superblock(
@@ -212,7 +212,7 @@ open_ertr::future<> EphemeralRBMDevice::open(
 
 write_ertr::future<> EphemeralRBMDevice::write(
   uint64_t offset,
-  bufferptr &&bptr,
+  bufferptr bptr,
   uint16_t stream) {
   LOG_PREFIX(EphemeralRBMDevice::write);
   ceph_assert(buf);
index b74e6b1439567d07468d98fd361757f89092636e..e8c834c63ba0b0022770f229049392bcb5facc33 100644 (file)
@@ -128,7 +128,7 @@ public:
    */
   virtual write_ertr::future<> write(
     uint64_t offset,
-    bufferptr &&bptr,
+    bufferptr bptr,
     uint16_t stream = 0) = 0;
 
   virtual discard_ertr::future<> discard(
@@ -223,7 +223,7 @@ public:
 
   write_ertr::future<> write(
     uint64_t offset,
-    bufferptr &&bptr,
+    bufferptr bptr,
     uint16_t stream = 0) override;
 
   using RBMDevice::read;