From: Xuehan Xu Date: Mon, 28 Aug 2023 03:14:27 +0000 (+0800) Subject: crimson/osd/backfill_state: set backfill_infos when the last round of X-Git-Tag: v20.0.0~1263^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F53151%2Fhead;p=ceph.git crimson/osd/backfill_state: set backfill_infos when the last round of scan doesn't produce any object that needs to be backkfilled Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/osd/backfill_state.cc b/src/crimson/osd/backfill_state.cc index f5f9eb37f95..b306226a9dd 100644 --- a/src/crimson/osd/backfill_state.cc +++ b/src/crimson/osd/backfill_state.cc @@ -352,9 +352,14 @@ BackfillState::Enqueuing::Enqueuing(my_context ctx) logger().debug("{}: reached end for current local chunk", __func__); post_event(RequestPrimaryScanning{}); - } else if (backfill_state().progress_tracker->tracked_objects_completed()) { - post_event(RequestDone{}); } else { + if (backfill_state().progress_tracker->tracked_objects_completed() + && Enqueuing::all_enqueued(peering_state(), + backfill_state().backfill_info, + backfill_state().peer_backfill_info)) { + backfill_state().last_backfill_started = hobject_t::get_max(); + backfill_listener().update_peers_last_backfill(hobject_t::get_max()); + } logger().debug("{}: reached end for both local and all peers " "but still has in-flight operations", __func__); post_event(RequestWaiting{}); diff --git a/src/crimson/osd/recovery_backend.cc b/src/crimson/osd/recovery_backend.cc index 9d480537089..e45ca35e797 100644 --- a/src/crimson/osd/recovery_backend.cc +++ b/src/crimson/osd/recovery_backend.cc @@ -217,8 +217,9 @@ RecoveryBackend::scan_for_backfill( bi.end = std::move(next); bi.version = pg.get_info().last_update; bi.objects = std::move(*version_map); - logger().debug("{} BackfillInterval filled, leaving", - "scan_for_backfill"); + logger().debug("{} BackfillInterval filled, leaving, {}", + "scan_for_backfill", + bi); return seastar::make_ready_future(std::move(bi)); }); });