]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD: fix a few map sharing bugs
authorGreg Farnum <greg@inktank.com>
Fri, 11 Apr 2014 21:45:45 +0000 (14:45 -0700)
committerGreg Farnum <greg@inktank.com>
Mon, 5 May 2014 22:29:19 +0000 (15:29 -0700)
1) do not share OSD maps with peers that already have them
2) do not share maps with oneself

Signed-off-by: Greg Farnum <greg@inktank.com>
src/osd/OSD.cc

index 5218b7b2933228036d8f288c0334b10edd274d8c..0c5a40a06f243d20a71fc6742dc7b97dcf7ec36d 100644 (file)
@@ -4675,11 +4675,12 @@ bool OSDService::should_share_map(entity_name_t name, Connection *con,
   }
 
   if (con->get_messenger() == osd->cluster_messenger &&
+      con != osd->cluster_messenger->get_loopback_connection() &&
       osdmap->is_up(name.num()) &&
       (osdmap->get_cluster_addr(name.num()) == con->get_peer_addr() ||
        osdmap->get_hb_back_addr(name.num()) == con->get_peer_addr())) {
     // remember
-    epoch_t has = osd->get_peer_epoch(name.num());
+    epoch_t has = MAX(osd->get_peer_epoch(name.num()), epoch);
 
     // share?
     if (has < osdmap->get_epoch()) {