]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/record_submitter: cleanup around write_base
authorYingxin Cheng <yingxin.cheng@intel.com>
Tue, 16 Jul 2024 08:11:04 +0000 (16:11 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Mon, 5 Aug 2024 03:18:36 +0000 (11:18 +0800)
No longer need to pass write_base through the write promise.

Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/journal/record_submitter.cc
src/crimson/os/seastore/journal/record_submitter.h

index 6b6118b87d7ffff0bd80c92a20958729e72eab16..c93d11085aea6e42066cbebcf2c86aa2f331fe29 100644 (file)
@@ -46,17 +46,16 @@ RecordBatch::add_pending(
   assert(io_promise.has_value());
 
   return io_promise->get_shared_future(
-  ).then([dlength_offset, FNAME, &name
+  ).then([dlength_offset, FNAME, &name, write_base=*write_base
          ](auto maybe_promise_result) -> add_pending_ret {
     if (!maybe_promise_result.has_value()) {
       ERROR("{} write failed", name);
       return crimson::ct_error::input_output_error::make();
     }
-    auto write_result = maybe_promise_result->write_result;
     auto submit_result = record_locator_t{
-      write_result.start_seq.offset.add_offset(
+      write_base.offset.add_offset(
           maybe_promise_result->mdlength + dlength_offset),
-      write_result
+      write_result_t{write_base, maybe_promise_result->write_length}
     };
     TRACE("{} write finish with {}", name, submit_result);
     return add_pending_ret(
@@ -87,13 +86,13 @@ RecordBatch::encode_ret_t RecordBatch::encode_batch(
 }
 
 void RecordBatch::set_result(
-  maybe_result_t maybe_write_result)
+  maybe_result_t maybe_write_length)
 {
   maybe_promise_result_t result;
-  if (maybe_write_result.has_value()) {
-    assert(maybe_write_result->length == submitting_length);
+  if (maybe_write_length.has_value()) {
+    assert(*maybe_write_length == submitting_length);
     result = promise_result_t{
-      *maybe_write_result,
+      *maybe_write_length,
       submitting_mdlength
     };
   }
@@ -551,17 +550,18 @@ void RecordSubmitter::flush_current_batch()
   auto encode_ret = p_batch->encode_batch(
     get_committed_to(), journal_allocator.get_nonce());
   // Note: rg is cleared
-  DEBUG("{} {} records, {}, committed_to={}, outstanding_io={} ...",
-        get_name(), num, sizes, get_committed_to(), num_outstanding_io);
-  assert(encode_ret.write_base == journal_allocator.get_written_to());
-  write_result_t result{
-      encode_ret.write_base,
-      encode_ret.bl.length()};
+  auto write_base = encode_ret.write_base;
+  auto write_len = encode_ret.bl.length();
+  DEBUG("{} {} records, {}, write_to={}, committed_to={}, outstanding_io={} ...",
+        get_name(), num, sizes,
+        write_result_t{write_base, write_len},
+        get_committed_to(), num_outstanding_io);
+  assert(write_base == journal_allocator.get_written_to());
   std::ignore = journal_allocator.write(std::move(encode_ret.bl)
-  ).safe_then([this, p_batch, FNAME, num, sizes, result] {
-    TRACE("{} {} records, {}, write done with {}",
-          get_name(), num, sizes, result);
-    finish_submit_batch(p_batch, result);
+  ).safe_then([this, p_batch, FNAME, num, sizes, write_len] {
+    TRACE("{} {} records, {}, write done",
+          get_name(), num, sizes);
+    finish_submit_batch(p_batch, write_len);
   }).handle_error(
     crimson::ct_error::all_same_way([this, p_batch, FNAME, num, sizes](auto e) {
       ERROR("{} {} records, {}, got error {}",
index b5d6fc07f3fc5894782470268bbb0b84cc0de5df..7c76ac78c32a2b811a6aceca4c5b5b78c352504c 100644 (file)
@@ -168,8 +168,8 @@ public:
       segment_nonce_t segment_nonce);
 
   // Set the write result and reset for reuse
-  using maybe_result_t = std::optional<write_result_t>;
-  void set_result(maybe_result_t maybe_write_end_seq);
+  using maybe_result_t = std::optional<extent_len_t>;
+  void set_result(maybe_result_t maybe_write_length);
 
   // The fast path that is equivalent to submit a single record as a batch.
   //
@@ -205,7 +205,7 @@ private:
   extent_len_t submitting_mdlength = 0;
 
   struct promise_result_t {
-    write_result_t write_result;
+    extent_len_t write_length;
     extent_len_t mdlength;
   };
   using maybe_promise_result_t = std::optional<promise_result_t>;