]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/pg_shard_manager: introduce invoke_on_each_shard_seq
authorSamuel Just <sjust@redhat.com>
Fri, 30 Sep 2022 18:12:31 +0000 (11:12 -0700)
committerSamuel Just <sjust@redhat.com>
Sat, 1 Oct 2022 22:12:08 +0000 (15:12 -0700)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/osd/pg_shard_manager.h

index 37b98795a8ec5be1a702e712cdf514567df86d5a..c552356cdc6539401f50315c7e187271da5904c1 100644 (file)
@@ -227,6 +227,23 @@ public:
 
   seastar::future<std::map<pg_t, pg_stat_t>> get_pg_stats() const;
 
+  /**
+   * invoke_method_on_each_shard_seq
+   *
+   * Invokes shard_services method on each shard sequentially.
+   */
+  template <typename F, typename... Args>
+  seastar::future<> invoke_on_each_shard_seq(
+    F &&f) const {
+    return sharded_map_seq(
+      shard_services,
+      [f=std::forward<F>(f)](const ShardServices &shard_services) mutable {
+       return std::invoke(
+         f,
+         shard_services);
+      });
+  }
+
   /**
    * for_each_pg
    *
@@ -235,8 +252,7 @@ public:
    */
   template <typename F>
   seastar::future<> for_each_pg(F &&f) const {
-    return sharded_map_seq(
-      shard_services,
+    return invoke_on_each_shard_seq(
       [f=std::move(f)](const auto &local_service) mutable {
        for (auto &pg: local_service.local_state.pg_map.get_pgs()) {
          std::apply(f, pg);