From 81cc2889310cc85ca4911d4aa53932907b6b7dfe Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 5 Apr 2016 09:45:33 -0400 Subject: [PATCH] osd: improve full map requests If we don't get all the full maps we want, request more immediately. Signed-off-by: Sage Weil --- src/osd/OSD.cc | 18 +++++------------- src/osd/OSD.h | 1 - 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index ce4276e880012..7c260ff39aeae 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -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; diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 1ff5e468a7d06..8a62ebbc1b250 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -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 -- -- 2.39.5