From: Samuel Just Date: Fri, 14 Mar 2014 21:48:31 +0000 (-0700) Subject: PG::issue_repop: only adjust peer_info last_updates if not temp X-Git-Tag: v0.78~14^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F1469%2Fhead;p=ceph.git 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 --- 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();