From 35085b94a1a7ca0af5f5088ecc73ebc9cafebb28 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Fri, 21 Jun 2024 13:49:41 +0800 Subject: [PATCH] crimson/os/seastore: encode ool records without padding Signed-off-by: Yingxin Cheng --- src/crimson/os/seastore/extent_placement_manager.cc | 2 +- src/crimson/os/seastore/seastore_types.cc | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/crimson/os/seastore/extent_placement_manager.cc b/src/crimson/os/seastore/extent_placement_manager.cc index 306e7ee9ce01..fb8bafde9607 100644 --- a/src/crimson/os/seastore/extent_placement_manager.cc +++ b/src/crimson/os/seastore/extent_placement_manager.cc @@ -84,7 +84,7 @@ SegmentedOolWriter::do_write( return do_write(t, extents); }); } - record_t record(record_type_t::JOURNAL, t.get_src()); + record_t record(record_type_t::OOL, t.get_src()); std::list pending_extents; auto commit_time = seastar::lowres_system_clock::now(); diff --git a/src/crimson/os/seastore/seastore_types.cc b/src/crimson/os/seastore/seastore_types.cc index 0bbd569e149c..25d787f0fd3e 100644 --- a/src/crimson/os/seastore/seastore_types.cc +++ b/src/crimson/os/seastore/seastore_types.cc @@ -571,6 +571,7 @@ ceph::bufferlist encode_records( const journal_seq_t& committed_to, segment_nonce_t current_segment_nonce) { + assert(record_group.size.record_type < record_type_t::MAX); assert(record_group.size.block_size > 0); assert(record_group.records.size() > 0); @@ -582,6 +583,15 @@ ceph::bufferlist encode_records( } } + if (record_group.size.record_type == record_type_t::OOL) { + // OOL won't contain metadata + assert(record_group.size.get_mdlength() == 0); + ceph_assert(data_bl.length() == + record_group.size.get_encoded_length()); + record_group.clear(); + return data_bl; + } + // JOURNAL bufferlist bl; record_group_header_t header{ static_cast(record_group.records.size()), -- 2.47.3