]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
seastore/cbjournal: use cur_segment_seq to track the sequence of written records
authormyoungwon oh <ohmyoungwon@gmail.com>
Fri, 6 May 2022 05:42:23 +0000 (14:42 +0900)
committermyoungwon oh <ohmyoungwon@gmail.com>
Thu, 19 May 2022 00:48:18 +0000 (09:48 +0900)
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/crimson/os/seastore/journal/circular_bounded_journal.cc
src/crimson/os/seastore/journal/circular_bounded_journal.h

index fa1ef3250af52e5ebe9652fa03909486b313462d..1d3a852d6b0e3a2f085559c5ce86e5510c1ed1ee 100644 (file)
@@ -134,7 +134,7 @@ CircularBoundedJournal::open_for_write(rbm_abs_addr start)
     return open_for_write_ret(
       open_for_write_ertr::ready_future_marker{},
       journal_seq_t{
-       header.cur_segment_seq,
+       cur_segment_seq,
        paddr
       });
   }
@@ -157,7 +157,7 @@ CircularBoundedJournal::open_for_write(rbm_abs_addr start)
       return open_for_write_ret(
        open_for_write_ertr::ready_future_marker{},
        journal_seq_t{
-         header.cur_segment_seq,
+         cur_segment_seq,
          paddr
        });
     });
@@ -240,7 +240,7 @@ CircularBoundedJournal::submit_record_ret CircularBoundedJournal::submit_record(
   }
 
   journal_seq_t j_seq {
-    header.cur_segment_seq++,
+    cur_segment_seq++,
     convert_abs_addr_to_paddr(
       get_written_to(),
       header.device_id)};
@@ -401,6 +401,7 @@ Journal::replay_ret CircularBoundedJournal::replay(
            r_header.committed_to,
            (seastore_off_t)bl.length()
          };
+         cur_segment_seq = r_header.committed_to.segment_seq + 1;
          cursor_addr += bl.length();
          set_written_to(cursor_addr);
          last_seq = r_header.committed_to.segment_seq;
index f5f04cb1099b680f262253e9312cd1f8b40140ca..c48d5a2f2a86636f47dc8f469a97275a244405da 100644 (file)
@@ -222,7 +222,6 @@ public:
     uint64_t flag = 0;       // represent features (reserved)
     uint8_t csum_type = 0;   // type of checksum algoritghm used in cbj_header_t
     uint64_t csum = 0;       // checksum of entire cbj_header_t
-    uint32_t cur_segment_seq = 0;
 
     rbm_abs_addr start = 0; // start address of CircularBoundedJournal
     rbm_abs_addr end = 0;   // start address of CircularBoundedJournal
@@ -243,7 +242,6 @@ public:
       denc(v.flag, p);
       denc(v.csum_type, p);
       denc(v.csum, p);
-      denc(v.cur_segment_seq, p);
       denc(v.start, p);
       denc(v.end, p);
       denc(v.device_id, p);
@@ -323,6 +321,7 @@ private:
   std::string path;
   WritePipeline *write_pipeline = nullptr;
   bool init = false;
+  segment_seq_t cur_segment_seq = 0; // segment seq to track the sequence to written records
 };
 
 std::ostream &operator<<(std::ostream &out, const CircularBoundedJournal::cbj_header_t &header);