From: Kefu Chai Date: Thu, 28 Jan 2021 07:23:14 +0000 (+0800) Subject: osd: pass function using rvalue reference X-Git-Tag: v17.1.0~3115^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=158a4e0caa4b365cb9d56556287674d48b3460b0;p=ceph.git osd: pass function using rvalue reference instead of passing a copy, pass a reference. so we can save the overhead of copying the function object. Signed-off-by: Kefu Chai --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 200a2918c87..7cbb09ba5d1 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -7699,7 +7699,7 @@ MPGStats* OSD::collect_pg_stats() if (!pg->is_primary()) { continue; } - pg->get_pg_stats([&](const pg_stat_t& s, epoch_t lec) { + pg->with_pg_stats([&](const pg_stat_t& s, epoch_t lec) { m->pg_stat[pg->pg_id.pgid] = s; min_last_epoch_clean = std::min(min_last_epoch_clean, lec); min_last_epoch_clean_pgs.push_back(pg->pg_id.pgid); diff --git a/src/osd/PG.cc b/src/osd/PG.cc index fef4b65dfcd..69f5f111fc4 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2791,7 +2791,7 @@ void PG::dump_missing(Formatter *f) } } -void PG::get_pg_stats(std::function f) +void PG::with_pg_stats(std::function&& f) { std::lock_guard l{pg_stats_publish_lock}; if (pg_stats_publish) { @@ -2799,7 +2799,7 @@ void PG::get_pg_stats(std::function f) } } -void PG::with_heartbeat_peers(std::function f) +void PG::with_heartbeat_peers(std::function&& f) { std::lock_guard l{heartbeat_peer_lock}; for (auto p : heartbeat_peers) { diff --git a/src/osd/PG.h b/src/osd/PG.h index 67a1c80459d..37e96b2bf90 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -533,8 +533,8 @@ public: void dump_pgstate_history(ceph::Formatter *f); void dump_missing(ceph::Formatter *f); - void get_pg_stats(std::function f); - void with_heartbeat_peers(std::function f); + void with_pg_stats(std::function&& f); + void with_heartbeat_peers(std::function&& f); void shutdown(); virtual void on_shutdown() = 0;