]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/backfill_state: don't try to do object backfills when primary_bi is empty 60572/head
authorXuehan Xu <xuxuehan@qianxin.com>
Thu, 31 Oct 2024 07:39:21 +0000 (15:39 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Thu, 31 Oct 2024 07:59:08 +0000 (15:59 +0800)
Fixes: https://tracker.ceph.com/issues/68787
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
src/crimson/osd/backfill_state.cc

index 018e58b68f8512db22bda82736cffbbbd8f1fd35..2922bf71039e4f2acd55c7897183d5a6603e0aba 100644 (file)
@@ -378,16 +378,17 @@ BackfillState::Enqueuing::Enqueuing(my_context ctx)
       trim_backfilled_object_from_intervals(std::move(result),
                                            backfill_state().last_backfill_started,
                                            backfill_state().peer_backfill_info);
-    } else {
+      backfill_listener().maybe_flush();
+    } else if (!primary_bi.empty()) {
       auto result = update_on_peers(check);
       trim_backfilled_object_from_intervals(std::move(result),
                                            backfill_state().last_backfill_started,
                                            backfill_state().peer_backfill_info);
-      if (!primary_bi.empty()) {
-       primary_bi.pop_front();
-      }
+      primary_bi.pop_front();
+      backfill_listener().maybe_flush();
+    } else {
+      break;
     }
-    backfill_listener().maybe_flush();
   } while (!all_emptied(primary_bi, backfill_state().peer_backfill_info));
 
   if (backfill_state().progress_tracker->tracked_objects_completed()