]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/rbm: rename TestMemory to EphemeralRBMDevice and adjust default...
authormyoungwon oh <ohmyoungwon@gmail.com>
Wed, 19 Oct 2022 07:27:37 +0000 (16:27 +0900)
committermyoungwon oh <ohmyoungwon@gmail.com>
Wed, 19 Oct 2022 08:18:58 +0000 (17:18 +0900)
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/crimson/os/seastore/random_block_manager/nvme_block_device.cc
src/crimson/os/seastore/random_block_manager/rbm_device.h
src/test/crimson/seastore/test_cbjournal.cc
src/test/crimson/seastore/test_randomblock_manager.cc
src/test/crimson/seastore/transaction_manager_test_state.h

index f060e1688c232ff1ab6dd77d67f598090ced7341..8f03db73421c1e6b23bd023b143f165a4931b1f8 100644 (file)
@@ -363,7 +363,15 @@ nvme_command_ertr::future<int> 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());
 
index d5604fe420a288f8926925c61b15b7ce5e885c62..b6425f26487cf604d7cb1625d5e239be8ab60fb0 100644 (file)
@@ -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<EphemeralRBMDevice>;
+EphemeralRBMDeviceRef create_test_ephemeral(uint64_t journal_size, uint64_t data_size);
+
 }
index 295dc8c5c6e388c18737232ed92daa46db4d3e5c..5f13739976c79bb8956fa6220c2d0e5880e61573 100644 (file)
@@ -27,7 +27,6 @@ namespace {
 }
 
 constexpr uint64_t CBTEST_DEFAULT_TEST_SIZE = 1 << 20;
-constexpr uint64_t CBTEST_DEFAULT_BLOCK_SIZE = 4096;
 
 
 std::optional<record_t> decode_record(
@@ -125,19 +124,17 @@ struct cbjournal_test_t : public seastar_test_suite_t, JournalTrimmer
 {
   std::vector<entry_validator_t> entries;
   std::unique_ptr<CircularBoundedJournal> 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,
index 2f5bed810191e9c55606cb0023f0c06d37b1ef57..58ec88a4ba2a4f4faa819ddab05baa2fe1dd31ee 100644 (file)
@@ -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;
index 86ed6f2d734ea0ee16929b675a5ff9d91246313e..1ea50e5160ea65125d6eb386362946ad0ea2604d 100644 (file)
@@ -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);