Skip to content

Commit 6020de3

Browse files
authored
Merge pull request ceph#59615 from xxhdx1985126/wip-63844-67916
crimson/osd/recovery_backend: always set the primary osd's BackfillInterval::version to the last_update before the backfill scan Reviewed-by: Samuel Just <[email protected]>
2 parents 15101a5 + df83836 commit 6020de3

File tree

6 files changed

+9
-8
lines changed

6 files changed

+9
-8
lines changed

src/crimson/osd/backfill_facades.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ struct PeeringFacade final : BackfillState::PeeringFacade {
2828
return peering_state.get_peer_info(peer).last_backfill;
2929
}
3030

31-
const eversion_t& get_last_update() const override {
32-
return peering_state.get_info().last_update;
31+
eversion_t get_pg_committed_to() const override {
32+
return peering_state.get_pg_committed_to();
3333
}
3434

3535
const eversion_t& get_log_tail() const override {

src/crimson/osd/backfill_state.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ BackfillState::Enqueuing::Enqueuing(my_context ctx)
406406
BackfillState::PrimaryScanning::PrimaryScanning(my_context ctx)
407407
: my_base(ctx)
408408
{
409-
backfill_state().backfill_info.version = peering_state().get_last_update();
409+
backfill_state().backfill_info.version = peering_state().get_pg_committed_to();
410410
backfill_listener().request_primary_scan(
411411
backfill_state().backfill_info.begin);
412412
}
@@ -416,6 +416,7 @@ BackfillState::PrimaryScanning::react(PrimaryScanned evt)
416416
{
417417
LOG_PREFIX(BackfillState::PrimaryScanning::react::PrimaryScanned);
418418
DEBUGDPP("", pg());
419+
evt.result.version = backfill_state().backfill_info.version;
419420
backfill_state().backfill_info = std::move(evt.result);
420421
if (!backfill_state().is_suspended()) {
421422
return transit<Enqueuing>();

src/crimson/osd/backfill_state.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ struct BackfillState::PeeringFacade {
387387
virtual const std::set<pg_shard_t>& get_backfill_targets() const = 0;
388388
virtual const hobject_t& get_peer_last_backfill(pg_shard_t peer) const = 0;
389389
virtual const PGLog& get_pg_log() const = 0;
390-
virtual const eversion_t& get_last_update() const = 0;
390+
virtual eversion_t get_pg_committed_to() const = 0;
391391
virtual const eversion_t& get_log_tail() const = 0;
392392

393393
// the performance impact of `std::function` has not been considered yet.

src/crimson/osd/pg_recovery.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,10 +531,10 @@ void PGRecovery::enqueue_push(
531531
{
532532
logger().info("{}: obj={} v={} peers={}", __func__, obj, v, peers);
533533
auto &peering_state = pg->get_peering_state();
534-
peering_state.prepare_backfill_for_missing(obj, v, peers);
535534
auto [recovering, added] = pg->get_recovery_backend()->add_recovering(obj);
536535
if (!added)
537536
return;
537+
peering_state.prepare_backfill_for_missing(obj, v, peers);
538538
std::ignore = pg->get_recovery_backend()->recover_object(obj, v).\
539539
handle_exception_interruptible([] (auto) {
540540
ceph_abort_msg("got exception on backfill's push");

src/crimson/osd/recovery_backend.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,11 +265,11 @@ RecoveryBackend::scan_for_backfill(
265265
}, PGBackend::load_metadata_ertr::assert_all{});
266266
}
267267
});
268-
}).then_interruptible([FNAME, this, version_map, start=std::move(start), next=std::move(next)] {
268+
}).then_interruptible([FNAME, version_map, start=std::move(start),
269+
next=std::move(next), this] {
269270
BackfillInterval bi;
270271
bi.begin = std::move(start);
271272
bi.end = std::move(next);
272-
bi.version = pg.get_info().last_update;
273273
bi.objects = std::move(*version_map);
274274
DEBUGDPP("{} BackfillInterval filled, leaving, {}",
275275
"scan_for_backfill",

src/test/crimson/test_backfill.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ struct BackfillFixture::PeeringFacade
233233
const hobject_t& get_peer_last_backfill(pg_shard_t peer) const override {
234234
return backfill_targets.at(peer).last_backfill;
235235
}
236-
const eversion_t& get_last_update() const override {
236+
eversion_t get_pg_committed_to() const override {
237237
return backfill_source.last_update;
238238
}
239239
const eversion_t& get_log_tail() const override {

0 commit comments

Comments
 (0)