]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: dissect PG::WaitForActiveBlocker into PGActivationBlocker
authorRadosław Zarzyński <rzarzyns@redhat.com>
Wed, 13 Apr 2022 07:22:22 +0000 (09:22 +0200)
committerRadosław Zarzyński <rzarzyns@redhat.com>
Thu, 5 May 2022 02:06:31 +0000 (04:06 +0200)
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
src/crimson/osd/CMakeLists.txt
src/crimson/osd/pg.cc
src/crimson/osd/pg.h
src/crimson/osd/pg_activation_blocker.cc [new file with mode: 0644]
src/crimson/osd/pg_activation_blocker.h [new file with mode: 0644]

index 324d091931d60a1d37bf5afb26ecda8f0029f4da..b215c12e3a95b200db254b08729f2142c9ae6323 100644 (file)
@@ -28,6 +28,7 @@ add_executable(crimson-osd
   scheduler/scheduler.cc
   scheduler/mclock_scheduler.cc
   osdmap_gate.cc
+  pg_activation_blocker.cc
   pg_map.cc
   pg_interval_interrupt_condition.cc
   objclass.cc
index a9caa5a3dd45f5cae113dd67f42622e5cf99e7a7..4b0bdc0c8a9316ce9e75f4158d4348dfb414b83f 100644 (file)
@@ -542,32 +542,6 @@ std::ostream& operator<<(std::ostream& os, const PG& pg)
   return os;
 }
 
-void PG::WaitForActiveBlocker::dump_detail(Formatter *f) const
-{
-  f->dump_stream("pgid") << pg->pgid;
-}
-
-void PG::WaitForActiveBlocker::on_active()
-{
-  p.set_value();
-  p = {};
-}
-
-blocking_future<> PG::WaitForActiveBlocker::wait()
-{
-  if (pg->peering_state.is_active()) {
-    return make_blocking_future(seastar::now());
-  } else {
-    return make_blocking_future(p.get_shared_future());
-  }
-}
-
-seastar::future<> PG::WaitForActiveBlocker::stop()
-{
-  p.set_exception(crimson::common::system_shutdown_exception());
-  return seastar::now();
-}
-
 std::tuple<PG::interruptible_future<>,
            PG::interruptible_future<>>
 PG::submit_transaction(
index af3598fc1ba08ad6533d0a6709eeb24f289abe69..699627da426389ce2d7a69d3f779d0455b67b313 100644 (file)
@@ -31,6 +31,7 @@
 #include "crimson/osd/osd_operations/background_recovery.h"
 #include "crimson/osd/shard_services.h"
 #include "crimson/osd/osdmap_gate.h"
+#include "crimson/osd/pg_activation_blocker.h"
 #include "crimson/osd/pg_recovery.h"
 #include "crimson/osd/pg_recovery_listener.h"
 #include "crimson/osd/recovery_backend.h"
@@ -721,23 +722,7 @@ private:
   // continuations here.
   bool stopping = false;
 
-  class WaitForActiveBlocker : public BlockerT<WaitForActiveBlocker> {
-    PG *pg;
-
-    const spg_t pgid;
-    seastar::shared_promise<> p;
-
-  protected:
-    void dump_detail(Formatter *f) const;
-
-  public:
-    static constexpr const char *type_name = "WaitForActiveBlocker";
-
-    WaitForActiveBlocker(PG *pg) : pg(pg) {}
-    void on_active();
-    blocking_future<> wait();
-    seastar::future<> stop();
-  } wait_for_active_blocker;
+  PGActivationBlocker wait_for_active_blocker;
 
   friend std::ostream& operator<<(std::ostream&, const PG& pg);
   friend class ClientRequest;
diff --git a/src/crimson/osd/pg_activation_blocker.cc b/src/crimson/osd/pg_activation_blocker.cc
new file mode 100644 (file)
index 0000000..504754a
--- /dev/null
@@ -0,0 +1,35 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*-
+// vim: ts=8 sw=2 smarttab expandtab
+
+#include "crimson/osd/pg.h"
+#include "crimson/osd/pg_activation_blocker.h"
+
+namespace crimson::osd {
+
+void PGActivationBlocker::dump_detail(Formatter *f) const
+{
+  f->dump_stream("pgid") << pg->get_pgid();
+}
+
+void PGActivationBlocker::on_active()
+{
+  p.set_value();
+  p = {};
+}
+
+blocking_future<> PGActivationBlocker::wait()
+{
+  if (pg->get_peering_state().is_active()) {
+    return make_blocking_future(seastar::now());
+  } else {
+    return make_blocking_future(p.get_shared_future());
+  }
+}
+
+seastar::future<> PGActivationBlocker::stop()
+{
+  p.set_exception(crimson::common::system_shutdown_exception());
+  return seastar::now();
+}
+
+} // namespace crimson::osd
diff --git a/src/crimson/osd/pg_activation_blocker.h b/src/crimson/osd/pg_activation_blocker.h
new file mode 100644 (file)
index 0000000..4b5254f
--- /dev/null
@@ -0,0 +1,34 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*-
+// vim: ts=8 sw=2 smarttab expandtab
+
+#pragma once
+
+#include <seastar/core/future.hh>
+#include <seastar/core/shared_future.hh>
+
+#include "crimson/common/operation.h"
+#include "crimson/osd/osd_operation.h"
+
+namespace crimson::osd {
+
+class PG;
+
+class PGActivationBlocker : public crimson::BlockerT<PGActivationBlocker> {
+  PG *pg;
+
+  const spg_t pgid;
+  seastar::shared_promise<> p;
+
+protected:
+  void dump_detail(Formatter *f) const;
+
+public:
+  static constexpr const char *type_name = "PGActivationBlocker";
+
+  PGActivationBlocker(PG *pg) : pg(pg) {}
+  void on_active();
+  blocking_future<> wait();
+  seastar::future<> stop();
+};
+
+} // namespace crimson::osd