]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD: heartbeat peers need to be updated when a new OSD added into an already existed... 20108/head
authorPan Liu <pan.liu@istuary.com>
Fri, 18 Nov 2016 12:01:42 +0000 (20:01 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 25 Jan 2018 04:22:29 +0000 (12:22 +0800)
Fixes: http://tracker.ceph.com/issues/18004
Signed-off-by: Pan Liu <pan.liu@istuary.com>
(cherry picked from commit e95026f6be44f5aae93f005d249ffcf66bef15fd)

src/osd/OSD.cc

index ce9584a02ed198ff78a3e03ee64aa73cab9a8af3..a67931adc47b5f807f68ff1fbd43cb67add06bce 100644 (file)
@@ -6617,6 +6617,7 @@ void OSD::note_down_osd(int peer)
 void OSD::note_up_osd(int peer)
 {
   service.forget_peer_epoch(peer, osdmap->get_epoch() - 1);
+  heartbeat_set_peers_need_update();
 }
 
 struct C_OnMapCommit : public Context {
@@ -6936,6 +6937,10 @@ void OSD::_committed_osd_maps(epoch_t first, epoch_t last, MOSDMap *m)
           waited_for_reservations = true;
         }
        note_down_osd(*p);
+      } else if (*p != whoami &&
+                !osdmap->have_inst(*p) &&
+                newmap->is_up(*p)) {
+        note_up_osd(*p);
       }
     }