]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: do not trust small values in osd epoch cache 4049/head
authorSage Weil <sage@redhat.com>
Thu, 12 Feb 2015 21:49:50 +0000 (13:49 -0800)
committerLoic Dachary <ldachary@redhat.com>
Tue, 17 Mar 2015 17:08:14 +0000 (18:08 +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 9e341d396346d2caaf4a2a9e652c9ac72520762c..d456a2932d51dc8a48a90e6afa8b9c197333a244 100644 (file)
@@ -1779,10 +1779,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;
+      }
     }
   }