osd: improve full map requests

If we don't get all the full maps we want, request more
immediately.

Signed-off-by: Sage Weil <sage@redhat.com>
This commit is contained in:
Sage Weil 2016-04-05 09:45:33 -04:00
parent 2e22f54c5f
commit 81cc288931
2 changed files with 5 additions and 14 deletions

View File

@ -4914,17 +4914,6 @@ void OSD::request_full_map(epoch_t first, epoch_t last)
monc->send_mon_message(req);
}
void OSD::finish_full_map_request()
{
if (requested_full_first == 0 && requested_full_last == 0)
return;
//Had requested some map but didn't receive in this message,
//This might because monitor capping the message to osd_map_message_max
dout(10) << __func__ << "still missing " << requested_full_first
<< ".." << requested_full_last << ", but now give up." << dendl;
requested_full_first = requested_full_last = 0;
}
void OSD::got_full_map(epoch_t e)
{
assert(requested_full_first <= requested_full_last);
@ -6689,8 +6678,11 @@ void OSD::handle_osd_map(MOSDMap *m)
// even if this map isn't from a mon, we may have satisfied our subscription
monc->sub_got("osdmap", last);
if (!m->maps.empty())
finish_full_map_request();
if (!m->maps.empty() && requested_full_first) {
dout(10) << __func__ << " still missing full maps " << requested_full_first
<< ".." << requested_full_last << dendl;
rerequest_full_maps();
}
if (last <= superblock.newest_map) {
dout(10) << " no new maps here, dropping" << dendl;

View File

@ -2057,7 +2057,6 @@ protected:
requested_full_last = 0;
request_full_map(first, last);
}
void finish_full_map_request();
void got_full_map(epoch_t e);
// -- failures --