@@ -1732,22 +1732,25 @@ Cache::replay_delta(
17321732 segment_seq_printer_t {delta_paddr_segment_seq},
17331733 delta_paddr_segment_type,
17341734 delta);
1735- return replay_delta_ertr::make_ready_future<bool >(false );
1735+ return replay_delta_ertr::make_ready_future<std::pair<bool , CachedExtentRef>>(
1736+ std::make_pair (false , nullptr ));
17361737 }
17371738 }
17381739 }
17391740
17401741 if (delta.type == extent_types_t ::JOURNAL_TAIL) {
17411742 // this delta should have been dealt with during segment cleaner mounting
1742- return replay_delta_ertr::make_ready_future<bool >(false );
1743+ return replay_delta_ertr::make_ready_future<std::pair<bool , CachedExtentRef>>(
1744+ std::make_pair (false , nullptr ));
17431745 }
17441746
17451747 // replay alloc
17461748 if (delta.type == extent_types_t ::ALLOC_INFO) {
17471749 if (journal_seq < alloc_tail) {
17481750 DEBUG (" journal_seq {} < alloc_tail {}, don't replay {}" ,
17491751 journal_seq, alloc_tail, delta);
1750- return replay_delta_ertr::make_ready_future<bool >(false );
1752+ return replay_delta_ertr::make_ready_future<std::pair<bool , CachedExtentRef>>(
1753+ std::make_pair (false , nullptr ));
17511754 }
17521755
17531756 alloc_delta_t alloc_delta;
@@ -1771,14 +1774,16 @@ Cache::replay_delta(
17711774 if (!backref_list.empty ()) {
17721775 backref_batch_update (std::move (backref_list), journal_seq);
17731776 }
1774- return replay_delta_ertr::make_ready_future<bool >(true );
1777+ return replay_delta_ertr::make_ready_future<std::pair<bool , CachedExtentRef>>(
1778+ std::make_pair (true , nullptr ));
17751779 }
17761780
17771781 // replay dirty
17781782 if (journal_seq < dirty_tail) {
17791783 DEBUG (" journal_seq {} < dirty_tail {}, don't replay {}" ,
17801784 journal_seq, dirty_tail, delta);
1781- return replay_delta_ertr::make_ready_future<bool >(false );
1785+ return replay_delta_ertr::make_ready_future<std::pair<bool , CachedExtentRef>>(
1786+ std::make_pair (false , nullptr ));
17821787 }
17831788
17841789 if (delta.type == extent_types_t ::ROOT) {
@@ -1792,7 +1797,8 @@ Cache::replay_delta(
17921797 journal_seq, record_base, delta, *root);
17931798 root->set_modify_time (modify_time);
17941799 add_extent (root);
1795- return replay_delta_ertr::make_ready_future<bool >(true );
1800+ return replay_delta_ertr::make_ready_future<std::pair<bool , CachedExtentRef>>(
1801+ std::make_pair (true , root));
17961802 } else {
17971803 auto _get_extent_if_cached = [this ](paddr_t addr)
17981804 -> get_extent_ertr::future<CachedExtentRef> {
@@ -1832,28 +1838,25 @@ Cache::replay_delta(
18321838 DEBUG (" replay extent is not present, so delta is obsolete at {} {} -- {}" ,
18331839 journal_seq, record_base, delta);
18341840 assert (delta.pversion > 0 );
1835- return replay_delta_ertr::make_ready_future<bool >(true );
1841+ return replay_delta_ertr::make_ready_future<std::pair<bool , CachedExtentRef>>(
1842+ std::make_pair (true , nullptr ));
18361843 }
18371844
18381845 DEBUG (" replay extent delta at {} {} ... -- {}, prv_extent={}" ,
18391846 journal_seq, record_base, delta, *extent);
18401847
18411848 if (delta.paddr .get_addr_type () == paddr_types_t ::SEGMENT ||
18421849 !can_inplace_rewrite (delta.type )) {
1843- assert (extent->last_committed_crc == delta.prev_crc );
1850+ ceph_assert_always (extent->last_committed_crc == delta.prev_crc );
18441851 assert (extent->version == delta.pversion );
18451852 extent->apply_delta_and_adjust_crc (record_base, delta.bl );
18461853 extent->set_modify_time (modify_time);
1847- assert (extent->last_committed_crc == delta.final_crc );
1854+ ceph_assert_always (extent->last_committed_crc == delta.final_crc );
18481855 } else {
18491856 assert (delta.paddr .get_addr_type () == paddr_types_t ::RANDOM_BLOCK);
18501857 extent->apply_delta_and_adjust_crc (record_base, delta.bl );
18511858 extent->set_modify_time (modify_time);
1852- // Since rewrite_dirty can conflict with other transaction after
1853- // inplace rewrite is complete, crc may not be matched
1854- if (delta.final_crc == extent->last_committed_crc ) {
1855- assert (extent->version == delta.pversion );
1856- }
1859+ // crc will be checked after journal replay is done
18571860 }
18581861
18591862 extent->version ++;
@@ -1866,7 +1869,8 @@ Cache::replay_delta(
18661869 journal_seq, record_base, delta, *extent);
18671870 }
18681871 mark_dirty (extent);
1869- return replay_delta_ertr::make_ready_future<bool >(true );
1872+ return replay_delta_ertr::make_ready_future<std::pair<bool , CachedExtentRef>>(
1873+ std::make_pair (true , extent));
18701874 });
18711875 }
18721876}
0 commit comments