From: Sage Weil Date: Fri, 8 May 2009 19:55:37 +0000 (-0700) Subject: osd: adjust heartbeat peer lock X-Git-Tag: v0.8~47 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=18851ce0f5364dd5ab5e1ef062dfcd907b190b2a;p=ceph.git osd: adjust heartbeat peer lock Need it to protect heartbeat_from_stamp. --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index e1d19579250b4..0c0d460f48a1d 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1664,6 +1664,7 @@ void OSD::wait_for_new_map(Message *m) void OSD::note_down_osd(int osd) { messenger->mark_down(osdmap->get_addr(osd)); + heartbeat_lock.Lock(); if (heartbeat_inst.count(osd)) { if (heartbeat_inst[osd] == osdmap->get_hb_inst(osd)) { @@ -1675,12 +1676,13 @@ void OSD::note_down_osd(int osd) } } else dout(10) << "note_down_osd no heartbeat_inst for osd" << osd << dendl; - heartbeat_lock.Unlock(); peer_map_epoch.erase(entity_name_t::OSD(osd)); failure_queue.erase(osd); failure_pending.erase(osd); heartbeat_from_stamp.erase(osd); + + heartbeat_lock.Unlock(); } void OSD::note_up_osd(int osd) {