From: Kefu Chai Date: Sun, 15 May 2016 02:32:28 +0000 (+0800) Subject: mon: 'std::move` Metadata when updating it X-Git-Tag: v10.2.3~15^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=de99bd53f5efe84647e1a1d79a8db330887b7704;p=ceph.git mon: 'std::move` Metadata when updating it to avoid copying of the std::map Signed-off-by: Kefu Chai (cherry picked from commit dd67eaab00698d747bf8669a3065c72ea68f7784) --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 9ba323108825..404735149809 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -1919,7 +1919,7 @@ void Monitor::win_election(epoch_t epoch, set& 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 &q, int l, uint64_t features) @@ -4428,13 +4428,13 @@ void Monitor::handle_mon_metadata(MonOpRequestRef op) MMonMetadata *m = static_cast(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); diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index fadd316658bb..bf94dea83a95 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -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& m); // features