]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/backfill_state: set backfill_infos when the last round of 53151/head
authorXuehan Xu <xxhdx1985126@gmail.com>
Mon, 28 Aug 2023 03:14:27 +0000 (11:14 +0800)
committerXuehan Xu <xxhdx1985126@gmail.com>
Mon, 28 Aug 2023 03:14:27 +0000 (11:14 +0800)
scan doesn't produce any object that needs to be backkfilled

Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
src/crimson/osd/backfill_state.cc
src/crimson/osd/recovery_backend.cc

index f5f9eb37f95497da5dff183bce13b5a5b991b9bc..b306226a9dd456f09d844c5497faca10dc8a6fa6 100644 (file)
@@ -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{});
index 9d4805370898744ae33edc259fd6024789868153..e45ca35e797363f8401bc509ee945b48baac6ddd 100644 (file)
@@ -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<BackfillInterval>(std::move(bi));
     });
   });