#include "crimson/osd/osdmap_gate.h"
#include "crimson/osd/osd_operations/background_recovery.h"
#include "crimson/osd/osd_operations/client_request.h"
+#include "crimson/osd/osd_operations/compound_peering_request.h"
#include "crimson/osd/osd_operations/peering_event.h"
#include "crimson/osd/osd_operations/recovery_subrequest.h"
#include "crimson/osd/osd_operations/replicated_request.h"
const Operation&) override {}
};
+struct LttngBackendCompoundPeering
+ : CompoundPeeringRequest::StartEvent::Backend,
+ CompoundPeeringRequest::SubOpBlocker::BlockingEvent::Backend,
+ CompoundPeeringRequest::CompletionEvent::Backend
+{
+ void handle(CompoundPeeringRequest::StartEvent&,
+ const Operation&) override {}
+
+ void handle(CompoundPeeringRequest::SubOpBlocker::BlockingEvent& ev,
+ const Operation& op,
+ const CompoundPeeringRequest::SubOpBlocker& blocker) override {
+ }
+
+ void handle(CompoundPeeringRequest::CompletionEvent&,
+ const Operation&) override {}
+};
+
+
} // namespace crimson::osd
namespace crimson {
}
};
+template <>
+struct EventBackendRegistry<osd::CompoundPeeringRequest> {
+ static std::tuple<osd::LttngBackendCompoundPeering> get_backends() {
+ return { {} };
+ }
+};
+
} // namespace crimson
#include "crimson/common/exception.h"
#include "crimson/osd/pg.h"
#include "crimson/osd/osd.h"
+#include "crimson/osd/osd_operation_external_tracking.h"
#include "crimson/osd/osd_operations/compound_peering_request.h"
namespace {
logger().info("{}: about to fork future", *this);
return crimson::common::handle_system_shutdown(
[this, ref, blocker=std::move(blocker), state]() mutable {
- return with_blocking_future(
- blocker->make_blocking_future(state->promise.get_future())
- ).then([this, blocker=std::move(blocker)](auto &&ctx) {
+ return with_blocking_event<SubOpBlocker::BlockingEvent>([&] (auto&& trigger) {
+ return trigger.maybe_record_blocking(state->promise.get_future(), *blocker);
+ }).then([this, blocker=std::move(blocker)](auto &&ctx) {
logger().info("{}: sub events complete", *this);
return osd.get_shard_services().dispatch_context_messages(std::move(ctx));
}).then([this, ref=std::move(ref)] {
using osd_id_t = int;
class CompoundPeeringRequest : public TrackableOperationT<CompoundPeeringRequest> {
+ friend class LttngBackendCompoundPeering;
public:
static constexpr OperationTypeCode type =
OperationTypeCode::compound_peering_request;
void print(std::ostream &) const final;
void dump_detail(Formatter *f) const final;
seastar::future<> start();
+
+ std::tuple<
+ StartEvent,
+ SubOpBlocker::BlockingEvent,
+ CompletionEvent
+ > tracking_events;
};
}