scheduler/scheduler.cc
scheduler/mclock_scheduler.cc
osdmap_gate.cc
+ pg_activation_blocker.cc
pg_map.cc
pg_interval_interrupt_condition.cc
objclass.cc
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(
#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"
// 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;
--- /dev/null
+// -*- 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
--- /dev/null
+// -*- 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