]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: do not load fullmap.0 27004/head
authorKefu Chai <kchai@redhat.com>
Sat, 9 Mar 2019 04:41:32 +0000 (12:41 +0800)
committerKefu Chai <kchai@redhat.com>
Sat, 16 Mar 2019 07:30:36 +0000 (15:30 +0800)
fullmap.0 is an empty map, it used when we try to rebase inc_map.1.

Signed-off-by: chunmei Liu <chunmei.liu@intel.com>
Signed-off-by: Kefu Chai <kchai@redhat.com>
src/crimson/osd/osd.cc

index 56abcd7e20f20935107ae73f9fe2121549288179..d8c6bbcfb87189d1fc03637f1e7b235926d47b1c 100644 (file)
@@ -416,11 +416,15 @@ seastar::future<bufferlist> OSD::load_map_bl(epoch_t e)
 
 seastar::future<std::unique_ptr<OSDMap>> OSD::load_map(epoch_t e)
 {
-  return load_map_bl(e).then([e, this](bufferlist bl) {
-    auto o = std::make_unique<OSDMap>();
-    o->decode(bl);
-    return seastar::make_ready_future<decltype(o)>(std::move(o));
-  });
+  auto o = std::make_unique<OSDMap>();
+  if (e > 0) {
+    return load_map_bl(e).then([e, o=std::move(o), this](bufferlist bl) mutable {
+      o->decode(bl);
+      return seastar::make_ready_future<unique_ptr<OSDMap>>(std::move(o));
+    });
+  } else {
+    return seastar::make_ready_future<unique_ptr<OSDMap>>(std::move(o));
+  }
 }
 
 seastar::future<> OSD::store_maps(ceph::os::Transaction& t,