From 05102c1f93d142e0b30adafab4e644d48e9f19dd Mon Sep 17 00:00:00 2001 From: Matan Breizman Date: Tue, 20 Jun 2023 17:51:52 +0000 Subject: [PATCH] crimson/osd/osd_operations/pg_advance_map: 'from' epoch may vary between PGS explanation Signed-off-by: Matan Breizman (cherry picked from commit ba519f5e72350e86647b7d9bc40fc2d26d908da3) --- src/crimson/osd/osd_operations/pg_advance_map.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/crimson/osd/osd_operations/pg_advance_map.cc b/src/crimson/osd/osd_operations/pg_advance_map.cc index cd2ef615b41..7a9b0ffb45f 100644 --- a/src/crimson/osd/osd_operations/pg_advance_map.cc +++ b/src/crimson/osd/osd_operations/pg_advance_map.cc @@ -65,6 +65,15 @@ seastar::future<> PGAdvanceMap::start() return enter_stage<>( pg->peering_request_pg_pipeline.process ).then([this] { + /* + * PGAdvanceMap is scheduled at pg creation and when + * broadcasting new osdmaps to pgs. We are not able to serialize + * between the two different PGAdvanceMap callers since a new pg + * will get advanced to the latest osdmap at it's creation. + * As a result, we may need to adjust the PGAdvance operation + * 'from' epoch. + * See: https://tracker.ceph.com/issues/61744 + */ from = pg->get_osdmap_epoch(); auto fut = seastar::now(); if (do_init) { -- 2.39.5