]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: encode ool records without padding 58250/head
authorYingxin Cheng <yingxin.cheng@intel.com>
Fri, 21 Jun 2024 05:49:41 +0000 (13:49 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Tue, 25 Jun 2024 07:37:58 +0000 (15:37 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/extent_placement_manager.cc
src/crimson/os/seastore/seastore_types.cc

index 306e7ee9ce016fa1d7bcdb2a52369dff0bef3b9e..fb8bafde96077298812dcf8f6e333027250c49dd 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 0bbd569e149ca3737da43f015c68ceb102ea295f..25d787f0fd3e9a76710d231b9286addfe57045fe 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()),