From: Radosław Zarzyński Date: Tue, 5 Apr 2022 21:59:47 +0000 (+0200) Subject: crimson/osd: introduce PhasedOperationT to deduplicate PipelineHandles X-Git-Tag: v18.0.0~947^2~40 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c86c231dcc26242cceccfbdf6cdbcecdaaab80b8;p=ceph.git crimson/osd: introduce PhasedOperationT to deduplicate PipelineHandles This new class in the hierarchy will be handy when it will come to introduce helpers for deailing with entering a pipeline stage. Signed-off-by: Radosław Zarzyński --- diff --git a/src/crimson/osd/osd_operation.h b/src/crimson/osd/osd_operation.h index 1eee01554b29..07baf3b961df 100644 --- a/src/crimson/osd/osd_operation.h +++ b/src/crimson/osd/osd_operation.h @@ -156,6 +156,14 @@ protected: } }; +template +class PhasedOperationT : public TrackableOperationT { + using base_t = TrackableOperationT; +protected: + using TrackableOperationT::TrackableOperationT; + + PipelineHandle handle; +}; /** * Maintains a set of lists of all active ops. diff --git a/src/crimson/osd/osd_operations/client_request.h b/src/crimson/osd/osd_operations/client_request.h index aee364a3a66e..462b12a29fae 100644 --- a/src/crimson/osd/osd_operations/client_request.h +++ b/src/crimson/osd/osd_operations/client_request.h @@ -16,13 +16,12 @@ namespace crimson::osd { class PG; class OSD; -class ClientRequest final : public TrackableOperationT, +class ClientRequest final : public PhasedOperationT, private CommonClientRequest { OSD &osd; crimson::net::ConnectionRef conn; Ref m; OpInfo op_info; - PipelineHandle handle; public: class ConnectionPipeline { diff --git a/src/crimson/osd/osd_operations/internal_client_request.h b/src/crimson/osd/osd_operations/internal_client_request.h index b9ff5969ef54..a1b538c729e7 100644 --- a/src/crimson/osd/osd_operations/internal_client_request.h +++ b/src/crimson/osd/osd_operations/internal_client_request.h @@ -10,7 +10,7 @@ namespace crimson::osd { -class InternalClientRequest : public TrackableOperationT, +class InternalClientRequest : public PhasedOperationT, private CommonClientRequest { public: explicit InternalClientRequest(Ref pg); @@ -42,7 +42,6 @@ private: seastar::future<> do_process(); Ref pg; - PipelineHandle handle; OpInfo op_info; }; diff --git a/src/crimson/osd/osd_operations/pg_advance_map.h b/src/crimson/osd/osd_operations/pg_advance_map.h index 793074a1a977..10ef641b9994 100644 --- a/src/crimson/osd/osd_operations/pg_advance_map.h +++ b/src/crimson/osd/osd_operations/pg_advance_map.h @@ -20,13 +20,11 @@ namespace crimson::osd { class OSD; class PG; -class PGAdvanceMap : public TrackableOperationT { +class PGAdvanceMap : public PhasedOperationT { public: static constexpr OperationTypeCode type = OperationTypeCode::pg_advance_map; protected: - PipelineHandle handle; - OSD &osd; Ref pg; diff --git a/src/crimson/osd/osd_operations/replicated_request.h b/src/crimson/osd/osd_operations/replicated_request.h index 2077439b89d1..94cd54fb1e87 100644 --- a/src/crimson/osd/osd_operations/replicated_request.h +++ b/src/crimson/osd/osd_operations/replicated_request.h @@ -18,7 +18,7 @@ namespace crimson::osd { class OSD; class PG; -class RepRequest final : public TrackableOperationT { +class RepRequest final : public PhasedOperationT { public: class ConnectionPipeline { OrderedExclusivePhase await_map = { @@ -52,7 +52,6 @@ private: OSD &osd; crimson::net::ConnectionRef conn; Ref req; - PipelineHandle handle; }; }