From ab91b7c3d3b73bb34d2e98e895e0f8a7d9199a6f Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Sun, 29 Jan 2023 22:20:27 -0800 Subject: [PATCH] crimson/osd/pg: remove incorrect map epoch check in PG::submit_transasction It's entirely fine for the map_epoch to change while the op is processed as long as none of the intervening epochs caused an interval change. In general, the correct way to check for an interval change is with has_reset_since. We don't need to do this check here at all because IOInterruptCondition will already have performed it against the captured epoch when the continuation resumed. Introduced: 31418020fd58 Fixes: https://tracker.ceph.com/issues/58486 Signed-off-by: Samuel Just --- src/crimson/osd/pg.cc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index 27f3b28589d..d4d76d1787e 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -594,10 +594,7 @@ PG::submit_transaction( } epoch_t map_epoch = get_osdmap_epoch(); - - if (__builtin_expect(osd_op_p.at_version.epoch != map_epoch, false)) { - throw crimson::common::actingset_changed(is_primary()); - } + ceph_assert(!has_reset_since(osd_op_p.at_version.epoch)); peering_state.pre_submit_op(obc->obs.oi.soid, log_entries, osd_op_p.at_version); peering_state.append_log_with_trim_to_updated(std::move(log_entries), osd_op_p.at_version, -- 2.39.5