From e9cfeedb5dfd63e4a8cbfda7ed8b8bb953fc2668 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 2 Feb 2017 15:07:48 -0500 Subject: [PATCH] osd/PG: fix tracking of last_epoch_split Note that it is only (currently) important that this value be accurate on the current OSD since we only use this value (currently) to discard ops sent before the split. If we are getting the history from a different OSD in the cluster that doesn't have an up to date value it doesn't matter because that implies a primary change and also a client resend. Signed-off-by: Sage Weil --- src/osd/PG.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index ee092b61d25..03dc1c3152d 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -5211,6 +5211,11 @@ void PG::start_peering_interval( dirty_info = true; dirty_big_info = true; info.history.same_interval_since = osdmap->get_epoch(); + if (info.pgid.pgid.is_split(lastmap->get_pg_num(info.pgid.pgid.pool()), + osdmap->get_pg_num(info.pgid.pgid.pool()), + nullptr)) { + info.history.last_epoch_split = osdmap->get_epoch(); + } } }