]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: do not trust small values in osd epoch cache 3823/head
authorSage Weil <sage@redhat.com>
Thu, 12 Feb 2015 21:49:50 +0000 (13:49 -0800)
committerLoic Dachary <ldachary@redhat.com>
Fri, 27 Feb 2015 15:36:37 +0000 (16:36 +0100)
If the epoch cache says the osd has epoch 100 and the osd is asking for
epoch 200+, do not send it 100+.

Fixes: #10787
Backport: giant, firefly
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit a5759e9b97107488a8508f36adf9ca1aba3fae07)

src/mon/OSDMonitor.cc

index da06b86beb1d49193111ca8ae193d3b33b7c7df3..5bcb376e0c7950fe58802bea4b1708899c863575 100644 (file)
@@ -1688,10 +1688,13 @@ void OSDMonitor::send_incremental(PaxosServiceMessage *req, epoch_t first)
     osd = req->get_source().num();
     map<int,epoch_t>::iterator p = osd_epoch.find(osd);
     if (p != osd_epoch.end()) {
-      dout(10) << " osd." << osd << " should have epoch " << p->second << dendl;
-      first = p->second + 1;
-      if (first > osdmap.get_epoch())
-       return;
+      if (first <= p->second) {
+       dout(10) << __func__ << " osd." << osd << " should already have epoch "
+                << p->second << dendl;
+       first = p->second + 1;
+       if (first > osdmap.get_epoch())
+         return;
+      }
     }
   }