From bbc0d6dd2cbd24c75a782df806fa20c9ab054a28 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Fri, 14 Mar 2014 14:48:31 -0700 Subject: [PATCH] PG::issue_repop: only adjust peer_info last_updates if not temp Temp object repops have version eversion_t() since they don't actually send log entries. Updating the last_updates here caused the peer info last_updates to be incorrect until the next non-temp repop. Fixes: #7718 Signed-off-by: Samuel Just --- src/osd/ReplicatedPG.cc | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 33bea32a72e5..37f56510eaf3 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -6393,16 +6393,17 @@ void ReplicatedPG::issue_repop(RepGather *repop, utime_t now) << dendl; repop->v = ctx->at_version; - - for (set::iterator i = actingbackfill.begin(); - i != actingbackfill.end(); - ++i) { - if (*i == get_primary()) continue; - pg_info_t &pinfo = peer_info[*i]; - // keep peer_info up to date - if (pinfo.last_complete == pinfo.last_update) - pinfo.last_complete = ctx->at_version; - pinfo.last_update = ctx->at_version; + if (ctx->at_version > eversion_t()) { + for (set::iterator i = actingbackfill.begin(); + i != actingbackfill.end(); + ++i) { + if (*i == get_primary()) continue; + pg_info_t &pinfo = peer_info[*i]; + // keep peer_info up to date + if (pinfo.last_complete == pinfo.last_update) + pinfo.last_complete = ctx->at_version; + pinfo.last_update = ctx->at_version; + } } repop->obc->ondisk_write_lock(); -- 2.47.3