]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: improve full map requests
authorSage Weil <sage@redhat.com>
Tue, 5 Apr 2016 13:45:33 +0000 (09:45 -0400)
committerSage Weil <sage@redhat.com>
Tue, 5 Apr 2016 13:45:33 +0000 (09:45 -0400)
If we don't get all the full maps we want, request more
immediately.

Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc
src/osd/OSD.h

index ce4276e880012d8d187cc8af9723d0ffcca61b2b..7c260ff39aeae99b023af98aad36bb1674af586d 100644 (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;
index 1ff5e468a7d0657f6ceea9cf1d536a639c693c6f..8a62ebbc1b25080990ab177b48e383055da40b65 100644 (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 --