From 57121dbe2cbbbd188c9aff38a3a534df038982c9 Mon Sep 17 00:00:00 2001
From: Sage Weil <sage@redhat.com>
Date: Fri, 13 Nov 2015 13:03:16 -0500
Subject: [PATCH] mon/MonClient: make _sub_got behave if we "got" old stuff

Signed-off-by: Sage Weil <sage@redhat.com>
---
 src/mon/MonClient.h | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/mon/MonClient.h b/src/mon/MonClient.h
index 70b84b3537d..c3efd78f866 100644
--- a/src/mon/MonClient.h
+++ b/src/mon/MonClient.h
@@ -231,15 +231,19 @@ private:
   }
   void _sub_got(string what, version_t got) {
     if (sub_new.count(what)) {
-      if (sub_new[what].flags & CEPH_SUBSCRIBE_ONETIME)
-	sub_new.erase(what);
-      else
-	sub_new[what].start = got + 1;
+      if (sub_new[what].start <= got) {
+	if (sub_new[what].flags & CEPH_SUBSCRIBE_ONETIME)
+	  sub_new.erase(what);
+	else
+	  sub_new[what].start = got + 1;
+      }
     } else if (sub_sent.count(what)) {
-      if (sub_sent[what].flags & CEPH_SUBSCRIBE_ONETIME)
-	sub_sent.erase(what);
-      else
-	sub_sent[what].start = got + 1;
+      if (sub_sent[what].start <= got) {
+	if (sub_sent[what].flags & CEPH_SUBSCRIBE_ONETIME)
+	  sub_sent.erase(what);
+	else
+	  sub_sent[what].start = got + 1;
+      }
     }
   }
   void _sub_unwant(string what) {