From 8c692df5885640771f0ad49e7fbc3be2c9375a22 Mon Sep 17 00:00:00 2001 From: myoungwon oh Date: Thu, 13 Oct 2022 21:38:15 +0900 Subject: [PATCH] crimson/os/seastore/rbm: use device_config_t in rbm_metadata_header_t Signed-off-by: Myoungwon Oh --- .../os/seastore/random_block_manager.h | 25 ++++++------------- .../random_block_manager/block_rb_manager.cc | 7 ++---- .../random_block_manager/nvme_block_device.cc | 6 +++-- .../random_block_manager/rbm_device.h | 13 ++++------ .../seastore/test_randomblock_manager.cc | 5 ++-- 5 files changed, 21 insertions(+), 35 deletions(-) diff --git a/src/crimson/os/seastore/random_block_manager.h b/src/crimson/os/seastore/random_block_manager.h index 1158e32befd71..718edfb59946c 100644 --- a/src/crimson/os/seastore/random_block_manager.h +++ b/src/crimson/os/seastore/random_block_manager.h @@ -18,38 +18,29 @@ #include "crimson/common/layout.h" #include "include/buffer.h" -#include "include/uuid.h" - +#include "crimson/os/seastore/device.h" namespace crimson::os::seastore { struct rbm_metadata_header_t { size_t size = 0; size_t block_size = 0; - uint64_t start; // start location of the device - uint64_t end; // end location of the device - uint64_t magic; // to indicate randomblock_manager - uuid_d uuid; - uint32_t start_data_area; - uint64_t flag; // reserved - uint64_t feature; - device_id_t device_id; - checksum_t crc; + uint64_t start = 0; // start location of the device + uint64_t feature = 0; + uint32_t start_data_area = 0; + checksum_t crc = 0; + device_config_t config; DENC(rbm_metadata_header_t, v, p) { DENC_START(1, 1, p); denc(v.size, p); denc(v.block_size, p); denc(v.start, p); - denc(v.end, p); - denc(v.magic, p); - denc(v.uuid, p); - denc(v.start_data_area, p); - denc(v.flag, p); denc(v.feature, p); - denc(v.device_id, p); + denc(v.start_data_area, p); denc(v.crc, p); + denc(v.config, p); DENC_FINISH(p); } 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 80acffd726d70..2e8754bfd410e 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 @@ -166,13 +166,10 @@ std::ostream &operator<<(std::ostream &out, const rbm_metadata_header_t &header) out << " rbm_metadata_header_t(size=" << header.size << ", block_size=" << header.block_size << ", start=" << header.start - << ", end=" << header.end - << ", magic=" << header.magic - << ", uuid=" << header.uuid << ", start_data_area=" << header.start_data_area - << ", flag=" << header.flag << ", feature=" << header.feature - << ", crc=" << header.crc; + << ", crc=" << header.crc + << ", config=" << header.config; return out << ")"; } 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 2a3d52947a306..e6b7d449f9f33 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 @@ -12,6 +12,7 @@ #include "include/buffer.h" #include "rbm_device.h" #include "nvme_block_device.h" +#include "block_rb_manager.h" namespace { seastar::logger& logger() { @@ -25,13 +26,12 @@ SET_SUBSYS(seastore_device); RBMDevice::mkfs_ret RBMDevice::mkfs(device_config_t config) { LOG_PREFIX(RBMDevice::mkfs); super.start = 0; - super.end = get_available_size(); super.block_size = get_block_size(); super.size = get_available_size(); super.start_data_area = 0; super.feature |= RBM_BITMAP_BLOCK_CRC; - super.device_id = config.spec.id; + super.config = std::move(config); DEBUG("super {} ", super); // write super block return write_rbm_header( @@ -96,6 +96,8 @@ read_ertr::future RBMDevice::read_rbm_header( bufferlist meta_b_header; super_block.crc = 0; encode(super_block, meta_b_header); + assert(ceph::encoded_sizeof(super_block) < + super_block.block_size); // Do CRC verification only if data protection is not supported. if (is_data_protection_enabled() == false) { 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 9264b10441433..b2565fffda0ee 100644 --- a/src/crimson/os/seastore/random_block_manager/rbm_device.h +++ b/src/crimson/os/seastore/random_block_manager/rbm_device.h @@ -88,9 +88,6 @@ protected: // LBA Size uint64_t block_size = 4096; - device_id_t device_id; - seastore_meta_t meta; - secondary_device_set_t devices; rbm_metadata_header_t super; public: RBMDevice() {} @@ -102,10 +99,10 @@ public: } device_id_t get_device_id() const { - return device_id; + return super.config.spec.id; } void set_device_id(device_id_t id) { - device_id = id; + super.config.spec.id = id; } void set_block_size(uint64_t bs) { @@ -113,7 +110,7 @@ public: } magic_t get_magic() const final { - return magic_t(); + return super.config.spec.magic; } device_type_t get_device_type() const final { @@ -125,11 +122,11 @@ public: } const seastore_meta_t &get_meta() const final { - return meta; + return super.config.meta; } secondary_device_set_t& get_secondary_devices() final { - return devices; + return super.config.secondary_devices; } std::size_t get_available_size() const final { return size; } extent_len_t get_block_size() const final { return block_size; } diff --git a/src/test/crimson/seastore/test_randomblock_manager.cc b/src/test/crimson/seastore/test_randomblock_manager.cc index be748393cf3f6..05b97e440bbbd 100644 --- a/src/test/crimson/seastore/test_randomblock_manager.cc +++ b/src/test/crimson/seastore/test_randomblock_manager.cc @@ -47,7 +47,6 @@ struct rbm_test_t : const uint64_t block_size = DEFAULT_BLOCK_SIZE; device_config_t config; - paddr_t current; rbm_test_t() = default; @@ -121,14 +120,14 @@ TEST_F(rbm_test_t, mkfs_test) auto super = read_rbm_header(); ASSERT_TRUE( super.block_size == DEFAULT_BLOCK_SIZE && - super.end == DEFAULT_TEST_SIZE + super.size == DEFAULT_TEST_SIZE ); device->set_block_size(8196); mkfs(); super = read_rbm_header(); ASSERT_TRUE( super.block_size == 8196 && - super.end == DEFAULT_TEST_SIZE + super.size == DEFAULT_TEST_SIZE ); }); } -- 2.39.5