From: Kefu Chai Date: Sat, 8 Apr 2017 18:43:44 +0000 (+0800) Subject: mgr/DaemonServer: always template the return value X-Git-Tag: v12.0.2~83^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c14b913bad3898e90630fcc7a4340783a985469f;p=ceph.git mgr/DaemonServer: always template the return value Signed-off-by: Kefu Chai --- diff --git a/src/mgr/ClusterState.h b/src/mgr/ClusterState.h index 4b14d1a7d252..eced72ad90e4 100644 --- a/src/mgr/ClusterState.h +++ b/src/mgr/ClusterState.h @@ -71,11 +71,13 @@ public: } template - void with_pgmap(Callback&& cb, Args&&...args) + auto with_pgmap(Callback&& cb, Args&&...args) -> + decltype(cb(const_cast(pg_map), + std::forward(args)...)) { Mutex::Locker l(lock); - std::forward(cb)(const_cast(pg_map), - std::forward(args)...); + return std::forward(cb)(const_cast(pg_map), + std::forward(args)...); } template @@ -87,10 +89,11 @@ public: } template - void with_osdmap(Args &&... args) + auto with_osdmap(Args &&... args) -> + decltype(objecter->with_osdmap(std::forward(args)...)) { assert(objecter != nullptr); - objecter->with_osdmap(std::forward(args)...); + return objecter->with_osdmap(std::forward(args)...); } }; diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index 7e73e4357bbc..24b1d2585dca 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -573,18 +573,17 @@ bool DaemonServer::handle_command(MCommand *m) cmd_getval(g_ceph_context, cmdmap, "no_increasing", no_increasing); string out_str; map new_weights; - cluster_state.with_pgmap( - [&](const PGMap& pgmap) { - cluster_state.with_osdmap([&](const OSDMap& osdmap) { - r = reweight::by_utilization(osdmap, pgmap, - oload, - max_change, - max_osds, - by_pg, - pools.empty() ? NULL : &pools, - no_increasing == "--no-increasing", - &new_weights, - &ss, &out_str, f.get()); + r = cluster_state.with_pgmap([&](const PGMap& pgmap) { + return cluster_state.with_osdmap([&](const OSDMap& osdmap) { + return reweight::by_utilization(osdmap, pgmap, + oload, + max_change, + max_osds, + by_pg, + pools.empty() ? NULL : &pools, + no_increasing == "--no-increasing", + &new_weights, + &ss, &out_str, f.get()); }); }); if (r >= 0) { @@ -620,11 +619,10 @@ bool DaemonServer::handle_command(MCommand *m) return true; } } else { - cluster_state.with_pgmap( - [&](const PGMap& pg_map) { - cluster_state.with_osdmap([&](const OSDMap& osdmap) { - r = process_pg_map_command(prefix, cmdmap, pg_map, osdmap, - f.get(), &ss, &odata); + r = cluster_state.with_pgmap([&](const PGMap& pg_map) { + return cluster_state.with_osdmap([&](const OSDMap& osdmap) { + return process_pg_map_command(prefix, cmdmap, pg_map, osdmap, + f.get(), &ss, &odata); }); }); } diff --git a/src/mon/MonClient.h b/src/mon/MonClient.h index 4361852f4149..22add022c2a9 100644 --- a/src/mon/MonClient.h +++ b/src/mon/MonClient.h @@ -467,14 +467,11 @@ public: */ template auto with_monmap(Callback&& cb, Args&&...args) -> - typename std::enable_if< - std::is_void< decltype(cb(const_cast(monmap), - std::forward(args)...))>::value, - void>::type { + std::forward(args)...)) { Mutex::Locker l(monc_lock); - std::forward(cb)(const_cast(monmap), - std::forward(args)...); + return std::forward(cb)(const_cast(monmap), + std::forward(args)...); } private: