From a75cee283358111e788b4b7da3891060dda7ca16 Mon Sep 17 00:00:00 2001 From: myoungwon oh Date: Wed, 19 Oct 2022 16:27:37 +0900 Subject: [PATCH] crimson/os/seastore/rbm: rename TestMemory to EphemeralRBMDevice and adjust default paramter location Signed-off-by: Myoungwon Oh --- .../random_block_manager/nvme_block_device.cc | 24 ++++++++++++------ .../random_block_manager/rbm_device.h | 10 +++++--- src/test/crimson/seastore/test_cbjournal.cc | 18 +++++-------- .../seastore/test_randomblock_manager.cc | 25 +++++++++++-------- .../seastore/transaction_manager_test_state.h | 6 ++--- 5 files changed, 45 insertions(+), 38 deletions(-) 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 f060e1688c232..8f03db73421c1 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 @@ -363,7 +363,15 @@ nvme_command_ertr::future NVMeBlockDevice::pass_through_io( namespace crimson::os::seastore::random_block_device { -open_ertr::future<> TestMemory::open( +EphemeralRBMDeviceRef create_test_ephemeral(uint64_t journal_size, uint64_t data_size) { + return EphemeralRBMDeviceRef( + new EphemeralRBMDevice(journal_size + data_size + + EphemeralRBMDevice::TEST_BLOCK_SIZE + + random_block_device::RBMDevice::get_journal_start(), + EphemeralRBMDevice::TEST_BLOCK_SIZE)); +} + +open_ertr::future<> EphemeralRBMDevice::open( const std::string &in_path, seastar::open_flags mode) { if (buf) { @@ -387,13 +395,13 @@ open_ertr::future<> TestMemory::open( return open_ertr::now(); } -write_ertr::future<> TestMemory::write( +write_ertr::future<> EphemeralRBMDevice::write( uint64_t offset, bufferptr &bptr, uint16_t stream) { ceph_assert(buf); logger().debug( - "TestMemory: write offset {} len {}", + "EphemeralRBMDevice: write offset {} len {}", offset, bptr.length()); @@ -402,12 +410,12 @@ write_ertr::future<> TestMemory::write( return write_ertr::now(); } -read_ertr::future<> TestMemory::read( +read_ertr::future<> EphemeralRBMDevice::read( uint64_t offset, bufferptr &bptr) { ceph_assert(buf); logger().debug( - "TestMemory: read offset {} len {}", + "EphemeralRBMDevice: read offset {} len {}", offset, bptr.length()); @@ -415,18 +423,18 @@ read_ertr::future<> TestMemory::read( return read_ertr::now(); } -Device::close_ertr::future<> TestMemory::close() { +Device::close_ertr::future<> EphemeralRBMDevice::close() { logger().debug(" close "); return close_ertr::now(); } -write_ertr::future<> TestMemory::writev( +write_ertr::future<> EphemeralRBMDevice::writev( uint64_t offset, ceph::bufferlist bl, uint16_t stream) { ceph_assert(buf); logger().debug( - "TestMemory: write offset {} len {}", + "EphemeralRBMDevice: write offset {} len {}", offset, bl.length()); 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 d5604fe420a28..b6425f26487cf 100644 --- a/src/crimson/os/seastore/random_block_manager/rbm_device.h +++ b/src/crimson/os/seastore/random_block_manager/rbm_device.h @@ -177,15 +177,16 @@ public: } }; -class TestMemory : public RBMDevice { +class EphemeralRBMDevice : public RBMDevice { public: uint64_t size = 0; uint64_t block_size = 0; + constexpr static uint32_t TEST_BLOCK_SIZE = 4096; - TestMemory(size_t size, uint64_t block_size) : + EphemeralRBMDevice(size_t size, uint64_t block_size) : size(size), block_size(block_size), buf(nullptr) { } - ~TestMemory() { + ~EphemeralRBMDevice() { if (buf) { ::munmap(buf, size); buf = nullptr; @@ -239,4 +240,7 @@ public: } char *buf; }; +using EphemeralRBMDeviceRef = std::unique_ptr; +EphemeralRBMDeviceRef create_test_ephemeral(uint64_t journal_size, uint64_t data_size); + } diff --git a/src/test/crimson/seastore/test_cbjournal.cc b/src/test/crimson/seastore/test_cbjournal.cc index 295dc8c5c6e38..5f13739976c79 100644 --- a/src/test/crimson/seastore/test_cbjournal.cc +++ b/src/test/crimson/seastore/test_cbjournal.cc @@ -27,7 +27,6 @@ namespace { } constexpr uint64_t CBTEST_DEFAULT_TEST_SIZE = 1 << 20; -constexpr uint64_t CBTEST_DEFAULT_BLOCK_SIZE = 4096; std::optional decode_record( @@ -125,19 +124,17 @@ struct cbjournal_test_t : public seastar_test_suite_t, JournalTrimmer { std::vector entries; std::unique_ptr cbj; - random_block_device::RBMDevice *device; + random_block_device::EphemeralRBMDeviceRef device; std::default_random_engine generator; uint64_t block_size; WritePipeline pipeline; cbjournal_test_t() { - device = new random_block_device::TestMemory( - CBTEST_DEFAULT_TEST_SIZE + CBTEST_DEFAULT_BLOCK_SIZE + - random_block_device::RBMDevice::get_journal_start(), - CBTEST_DEFAULT_BLOCK_SIZE); - cbj.reset(new CircularBoundedJournal(*this, device, std::string())); - block_size = CBTEST_DEFAULT_BLOCK_SIZE; + device = random_block_device::create_test_ephemeral( + CBTEST_DEFAULT_TEST_SIZE, 0); + cbj.reset(new CircularBoundedJournal(*this, device.get(), std::string())); + block_size = device->get_block_size(); cbj->set_write_pipeline(&pipeline); } @@ -180,9 +177,6 @@ struct cbjournal_test_t : public seastar_test_suite_t, JournalTrimmer } seastar::future<> tear_down_fut() final { - if (device) { - delete device; - } return seastar::now(); } @@ -210,7 +204,7 @@ struct cbjournal_test_t : public seastar_test_suite_t, JournalTrimmer paddr_t{}, L_ADDR_NULL, 0, 0, - CBTEST_DEFAULT_BLOCK_SIZE, + device->get_block_size(), 1, 0, segment_type_t::JOURNAL, diff --git a/src/test/crimson/seastore/test_randomblock_manager.cc b/src/test/crimson/seastore/test_randomblock_manager.cc index 2f5bed810191e..58ec88a4ba2a4 100644 --- a/src/test/crimson/seastore/test_randomblock_manager.cc +++ b/src/test/crimson/seastore/test_randomblock_manager.cc @@ -20,7 +20,6 @@ namespace { } constexpr uint64_t DEFAULT_TEST_SIZE = 1 << 20; -constexpr uint64_t DEFAULT_BLOCK_SIZE = 4096; struct rbm_test_t : public seastar_test_suite_t { @@ -44,14 +43,18 @@ struct rbm_test_t : std::default_random_engine generator; - const uint64_t block_size = DEFAULT_BLOCK_SIZE; + uint64_t block_size = 0; + uint64_t size = 0; device_config_t config; rbm_test_t() = default; seastar::future<> set_up_fut() final { - device.reset(new random_block_device::TestMemory(DEFAULT_TEST_SIZE, DEFAULT_BLOCK_SIZE)); + device = random_block_device::create_test_ephemeral( + 0, DEFAULT_TEST_SIZE); + block_size = device->get_block_size(); + size = device->get_available_size(); rbm_manager.reset(new BlockRBManager(device.get(), std::string())); config = get_rbm_ephemeral_device_config(0, 1); return device->mount().handle_error(crimson::ct_error::assert_all{} @@ -119,15 +122,15 @@ TEST_F(rbm_test_t, mkfs_test) run_async([this] { auto super = read_rbm_header(); ASSERT_TRUE( - super.block_size == DEFAULT_BLOCK_SIZE && - super.size == DEFAULT_TEST_SIZE + super.block_size == block_size && + super.size == size ); config.spec.id = DEVICE_ID_NULL; mkfs(); super = read_rbm_header(); ASSERT_TRUE( super.config.spec.id == DEVICE_ID_NULL && - super.size == DEFAULT_TEST_SIZE + super.size == size ); }); } @@ -138,12 +141,12 @@ TEST_F(rbm_test_t, open_read_write_test) auto content = generate_extent(1); { write( - DEFAULT_BLOCK_SIZE, + block_size, content ); - auto bp = bufferptr(ceph::buffer::create_page_aligned(DEFAULT_BLOCK_SIZE)); + auto bp = bufferptr(ceph::buffer::create_page_aligned(block_size)); read( - DEFAULT_BLOCK_SIZE, + block_size, bp ); bufferlist bl; @@ -157,9 +160,9 @@ TEST_F(rbm_test_t, open_read_write_test) close(); open(); { - auto bp = bufferptr(ceph::buffer::create_page_aligned(DEFAULT_BLOCK_SIZE)); + auto bp = bufferptr(ceph::buffer::create_page_aligned(block_size)); read( - DEFAULT_BLOCK_SIZE, + block_size, bp ); bufferlist bl; diff --git a/src/test/crimson/seastore/transaction_manager_test_state.h b/src/test/crimson/seastore/transaction_manager_test_state.h index 86ed6f2d734ea..1ea50e5160ea6 100644 --- a/src/test/crimson/seastore/transaction_manager_test_state.h +++ b/src/test/crimson/seastore/transaction_manager_test_state.h @@ -117,10 +117,8 @@ protected: seastar::future<> randomblock_setup() { - rb_device.reset(new random_block_device::TestMemory( - journal::DEFAULT_TEST_CBJOURNAL_SIZE + journal::DEFAULT_BLOCK_SIZE + - random_block_device::RBMDevice::get_journal_start(), - journal::DEFAULT_BLOCK_SIZE)); + rb_device = random_block_device::create_test_ephemeral( + journal::DEFAULT_TEST_CBJOURNAL_SIZE, 0); return rb_device->mount().handle_error(crimson::ct_error::assert_all{} ).then([this]() { device_config_t config = get_rbm_ephemeral_device_config(0, 1); -- 2.39.5