osd_stat_t could be a relatively large struct, so use std::move() when
possible
Signed-off-by: Kefu Chai <kchai@redhat.com>
});
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());
}
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());
}
// 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());
}