]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: encode ool records without padding 58834/head
authorYingxin Cheng <yingxin.cheng@intel.com>
Fri, 21 Jun 2024 05:49:41 +0000 (13:49 +0800)
committerMatan Breizman <mbreizma@redhat.com>
Thu, 25 Jul 2024 07:46:28 +0000 (10:46 +0300)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
(cherry picked from commit 35085b94a1a7ca0af5f5088ecc73ebc9cafebb28)

src/crimson/os/seastore/extent_placement_manager.cc
src/crimson/os/seastore/seastore_types.cc

index 2c59ec590ba59dff0d899c1bb0ed255ebfa1c774..c7f4a41f431c3e6a09ed38f92fc319e222306421 100644 (file)
@@ -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<LogicalCachedExtentRef> pending_extents;
   auto commit_time = seastar::lowres_system_clock::now();
 
index 070efa0c046900857485bed331df2aea8a31509c..e31b104a5265292d56cd2fbc00427388fa510121 100644 (file)
@@ -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<extent_len_t>(record_group.records.size()),