@@ -907,11 +907,23 @@ void PG::mutate_object(
907907 }
908908}
909909
910+ void PG::enqueue_push_for_backfill (
911+ const hobject_t &obj,
912+ const eversion_t &v,
913+ const std::vector<pg_shard_t > &peers)
914+ {
915+ assert (recovery_handler);
916+ assert (recovery_handler->backfill_state );
917+ auto backfill_state = recovery_handler->backfill_state .get ();
918+ backfill_state->enqueue_standalone_push (obj, v, peers);
919+ }
920+
910921PG::interruptible_future<
911922 std::tuple<PG::interruptible_future<>,
912923 PG::interruptible_future<>>>
913924PG::submit_transaction (
914925 ObjectContextRef&& obc,
926+ ObjectContextRef&& new_clone,
915927 ceph::os::Transaction&& txn,
916928 osd_op_params_t && osd_op_p,
917929 std::vector<pg_log_entry_t >&& log_entries)
@@ -940,6 +952,7 @@ PG::submit_transaction(
940952 auto [submitted, all_completed] = co_await backend->submit_transaction (
941953 peering_state.get_acting_recovery_backfill (),
942954 obc->obs .oi .soid ,
955+ std::move (new_clone),
943956 std::move (txn),
944957 std::move (osd_op_p),
945958 peering_state.get_last_peering_reset (),
@@ -948,8 +961,8 @@ PG::submit_transaction(
948961 co_return std::make_tuple (
949962 std::move (submitted),
950963 all_completed.then_interruptible (
951- [this , at_version,
952- last_complete=peering_state. get_info (). last_complete ] (auto acked) {
964+ [this , last_complete=peering_state. get_info (). last_complete , at_version]
965+ (auto acked) {
953966 for (const auto & peer : acked) {
954967 peering_state.update_peer_last_complete_ondisk (
955968 peer.shard , peer.last_complete_ondisk );
@@ -1154,11 +1167,13 @@ PG::submit_executer_fut PG::submit_executer(
11541167 [FNAME, this ](auto && txn,
11551168 auto && obc,
11561169 auto && osd_op_p,
1157- auto && log_entries) {
1170+ auto && log_entries,
1171+ auto && new_clone) {
11581172 DEBUGDPP (" object {} submitting txn" , *this , obc->get_oid ());
11591173 mutate_object (obc, txn, osd_op_p);
11601174 return submit_transaction (
11611175 std::move (obc),
1176+ std::move (new_clone),
11621177 std::move (txn),
11631178 std::move (osd_op_p),
11641179 std::move (log_entries));
0 commit comments