From: Kefu Chai Date: Sat, 20 May 2017 05:11:23 +0000 (+0800) Subject: mon,mgr: std::move(osd_stat) when possible X-Git-Tag: v12.1.0~57^2~45^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=983fe8ec888b998cee33680390173fe6636574f3;p=ceph.git mon,mgr: std::move(osd_stat) when possible osd_stat_t could be a relatively large struct, so use std::move() when possible Signed-off-by: Kefu Chai --- diff --git a/src/mgr/ClusterState.cc b/src/mgr/ClusterState.cc index 81bcdb728deb..153dc34cdf36 100644 --- a/src/mgr/ClusterState.cc +++ b/src/mgr/ClusterState.cc @@ -58,7 +58,7 @@ void ClusterState::ingest_pgstats(MPGStats *stats) }); if (is_in) { - pending_inc.update_stat(from, stats->epoch, stats->osd_stat); + pending_inc.update_stat(from, stats->epoch, std::move(stats->osd_stat)); } else { pending_inc.update_stat(from, stats->epoch, osd_stat_t()); } diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h index 6231407b08e2..e2d01cd2a777 100644 --- a/src/mon/PGMap.h +++ b/src/mon/PGMap.h @@ -77,8 +77,9 @@ public: return osd_epochs; } - void update_stat(int32_t osd, epoch_t epoch, const osd_stat_t &stat) { - osd_stat_updates[osd] = stat; + template + void update_stat(int32_t osd, epoch_t epoch, OsdStat&& stat) { + osd_stat_updates[osd] = std::forward(stat); osd_epochs[osd] = epoch; assert(osd_epochs.size() == osd_stat_updates.size()); } diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 151468a58970..f2db6bbbf204 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -758,7 +758,7 @@ bool PGMonitor::prepare_pg_stats(MonOpRequestRef op) // osd stat if (mon->osdmon()->osdmap.is_in(from)) { - pending_inc.update_stat(from, stats->epoch, stats->osd_stat); + pending_inc.update_stat(from, stats->epoch, std::move(stats->osd_stat)); } else { pending_inc.update_stat(from, stats->epoch, osd_stat_t()); }