]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon,mgr: std::move(osd_stat) when possible
authorKefu Chai <kchai@redhat.com>
Sat, 20 May 2017 05:11:23 +0000 (13:11 +0800)
committerKefu Chai <kchai@redhat.com>
Wed, 24 May 2017 17:16:10 +0000 (01:16 +0800)
osd_stat_t could be a relatively large struct, so use std::move() when
possible

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/mgr/ClusterState.cc
src/mon/PGMap.h
src/mon/PGMonitor.cc

index 81bcdb728deb0eeb0704cb4649a37356161d9866..153dc34cdf3607061fc4b0a6884f2144b2cfe425 100644 (file)
@@ -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());
   }
index 6231407b08e2595a14220dba71e854ae880b3a21..e2d01cd2a777dae751e721f36ec2ddabe5b733e4 100644 (file)
@@ -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<typename OsdStat>
+    void update_stat(int32_t osd, epoch_t epoch, OsdStat&& stat) {
+      osd_stat_updates[osd] = std::forward<OsdStat>(stat);
       osd_epochs[osd] = epoch;
       assert(osd_epochs.size() == osd_stat_updates.size());
     }
index 151468a58970ce7f03198469e211f1505b0811cc..f2db6bbbf204bfcbe3956db86202f5f179b1d0d6 100644 (file)
@@ -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());
   }