]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: 'std::move` Metadata when updating it
authorKefu Chai <kchai@redhat.com>
Sun, 15 May 2016 02:32:28 +0000 (10:32 +0800)
committerLoic Dachary <ldachary@redhat.com>
Wed, 10 Aug 2016 10:33:00 +0000 (12:33 +0200)
to avoid copying of the std::map

Signed-off-by: Kefu Chai <kchai@redhat.com>
(cherry picked from commit dd67eaab00698d747bf8669a3065c72ea68f7784)

src/mon/Monitor.cc
src/mon/Monitor.h

index 9ba3231088252b9040d7e08cf87d5c6fce4a617d..404735149809e6f123f3c7e87fd426940168a4b4 100644 (file)
@@ -1919,7 +1919,7 @@ void Monitor::win_election(epoch_t epoch, set<int>& active, uint64_t features,
 
   Metadata my_meta;
   collect_sys_info(&my_meta, g_ceph_context);
-  update_mon_metadata(rank, my_meta);
+  update_mon_metadata(rank, std::move(my_meta));
 }
 
 void Monitor::lose_election(epoch_t epoch, set<int> &q, int l, uint64_t features) 
@@ -4428,13 +4428,13 @@ void Monitor::handle_mon_metadata(MonOpRequestRef op)
   MMonMetadata *m = static_cast<MMonMetadata*>(op->get_req());
   if (is_leader()) {
     dout(10) << __func__ << dendl;
-    update_mon_metadata(m->get_source().num(), m->data);
+    update_mon_metadata(m->get_source().num(), std::move(m->data));
   }
 }
 
-void Monitor::update_mon_metadata(int from, const Metadata& m)
+void Monitor::update_mon_metadata(int from, Metadata&& m)
 {
-  pending_metadata[from] = m;
+  pending_metadata.insert(make_pair(from, std::move(m)));
 
   bufferlist bl;
   int err = store->get(MONITOR_STORE_PREFIX, "last_metadata", bl);
index fadd316658bb786db575de79ea1b53acc5cd3a44..bf94dea83a9593e648d8739c6461563ef6e1463f 100644 (file)
@@ -919,7 +919,7 @@ public:
   int write_default_keyring(bufferlist& bl);
   void extract_save_mon_key(KeyRing& keyring);
 
-  void update_mon_metadata(int from, const Metadata& m);
+  void update_mon_metadata(int from, Metadata&& m);
   int load_metadata(map<int, Metadata>& m);
 
   // features