]>
git.proxmox.com Git - ceph.git/blob - ceph/src/crimson/osd/osd_operations/internal_client_request.h
8eed12e050e19fa6b212f1859c55bdbb43b4fe0a
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
6 #include "crimson/common/type_helpers.h"
7 #include "crimson/osd/osd_operation.h"
8 #include "crimson/osd/osd_operations/client_request_common.h"
9 #include "crimson/osd/osd_operations/common/pg_pipeline.h"
10 #include "crimson/osd/pg.h"
11 #include "crimson/osd/pg_activation_blocker.h"
13 namespace crimson::osd
{
15 class InternalClientRequest
: public PhasedOperationT
<InternalClientRequest
>,
16 private CommonClientRequest
{
18 explicit InternalClientRequest(Ref
<PG
> pg
);
19 ~InternalClientRequest();
21 // imposed by `ShardService::start_operation<T>(...)`.
22 seastar::future
<> start();
25 virtual const hobject_t
& get_target_oid() const = 0;
26 virtual PG::do_osd_ops_params_t
get_do_osd_ops_params() const = 0;
27 virtual std::vector
<OSDOp
> create_osd_ops() = 0;
29 const PG
& get_pg() const {
34 friend OperationT
<InternalClientRequest
>;
36 static constexpr OperationTypeCode type
=
37 OperationTypeCode::internal_client_request
;
39 void print(std::ostream
&) const final
;
40 void dump_detail(Formatter
*f
) const final
;
42 CommonPGPipeline
& client_pp();
44 seastar::future
<> do_process();
48 PipelineHandle handle
;
51 PipelineHandle
& get_handle() { return handle
; }
55 CommonPGPipeline::WaitForActive::BlockingEvent
,
56 PGActivationBlocker::BlockingEvent
,
57 CommonPGPipeline::RecoverMissing::BlockingEvent
,
58 CommonPGPipeline::GetOBC::BlockingEvent
,
59 CommonPGPipeline::Process::BlockingEvent
,
64 } // namespace crimson::osd
66 #if FMT_VERSION >= 90000
67 template <> struct fmt::formatter
<crimson::osd::InternalClientRequest
> : fmt::ostream_formatter
{};