diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index d3b496f69a6..ce4cd6e1042 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -5944,12 +5944,17 @@ void OSD::handle_osd_map(MOSDMap *m) service.pre_publish_map(newmap); // kill connections to newly down osds + bool waited_for_reservations = false; set old; osdmap->get_all_osds(old); for (set::iterator p = old.begin(); p != old.end(); ++p) { if (*p != whoami && osdmap->have_inst(*p) && // in old map (!newmap->exists(*p) || !newmap->is_up(*p))) { // but not the new one + if (!waited_for_reservations) { + service.await_reserved_maps(); + waited_for_reservations = true; + } note_down_osd(*p); } }