From: myoungwon oh Date: Wed, 11 Sep 2024 07:53:35 +0000 (+0000) Subject: crimson/os/seastore/rbm: remove unnecessary copy during ool write X-Git-Tag: testing/wip-rishabh-testing-20240930.143059~55^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=3bc36d1fa8d88208eb26cb9053474488e92958c5;p=ceph-ci.git crimson/os/seastore/rbm: remove unnecessary copy during ool write Signed-off-by: Myoungwon Oh --- diff --git a/src/crimson/os/seastore/random_block_manager.h b/src/crimson/os/seastore/random_block_manager.h index 5e8a4d7c553..69a36d6a1d3 100644 --- a/src/crimson/os/seastore/random_block_manager.h +++ b/src/crimson/os/seastore/random_block_manager.h @@ -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, diff --git a/src/crimson/os/seastore/random_block_manager/block_rb_manager.cc b/src/crimson/os/seastore/random_block_manager/block_rb_manager.cc index e8376712a71..81a836a7c3e 100644 --- a/src/crimson/os/seastore/random_block_manager/block_rb_manager.cc +++ b/src/crimson/os/seastore/random_block_manager/block_rb_manager.cc @@ -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( diff --git a/src/crimson/os/seastore/random_block_manager/block_rb_manager.h b/src/crimson/os/seastore/random_block_manager/block_rb_manager.h index 877b2a07662..0067dfaabaf 100644 --- a/src/crimson/os/seastore/random_block_manager/block_rb_manager.h +++ b/src/crimson/os/seastore/random_block_manager/block_rb_manager.h @@ -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; diff --git a/src/crimson/os/seastore/random_block_manager/nvme_block_device.cc b/src/crimson/os/seastore/random_block_manager/nvme_block_device.cc index eb7070d5de1..b66bf6f8f6c 100644 --- a/src/crimson/os/seastore/random_block_manager/nvme_block_device.cc +++ b/src/crimson/os/seastore/random_block_manager/nvme_block_device.cc @@ -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( diff --git a/src/crimson/os/seastore/random_block_manager/nvme_block_device.h b/src/crimson/os/seastore/random_block_manager/nvme_block_device.h index 01755d047a0..2abf0af7a9e 100644 --- a/src/crimson/os/seastore/random_block_manager/nvme_block_device.h +++ b/src/crimson/os/seastore/random_block_manager/nvme_block_device.h @@ -221,7 +221,7 @@ public: write_ertr::future<> write( uint64_t offset, - bufferptr &&bptr, + bufferptr bptr, uint16_t stream = 0) override; using RBMDevice::read; diff --git a/src/crimson/os/seastore/random_block_manager/rbm_device.cc b/src/crimson/os/seastore/random_block_manager/rbm_device.cc index f31bafcef9f..cd0675f220d 100644 --- a/src/crimson/os/seastore/random_block_manager/rbm_device.cc +++ b/src/crimson/os/seastore/random_block_manager/rbm_device.cc @@ -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 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); diff --git a/src/crimson/os/seastore/random_block_manager/rbm_device.h b/src/crimson/os/seastore/random_block_manager/rbm_device.h index b74e6b14395..e8c834c63ba 100644 --- a/src/crimson/os/seastore/random_block_manager/rbm_device.h +++ b/src/crimson/os/seastore/random_block_manager/rbm_device.h @@ -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;