From c86c231dcc26242cceccfbdf6cdbcecdaaab80b8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rados=C5=82aw=20Zarzy=C5=84ski?= Date: Tue, 5 Apr 2022 23:59:47 +0200 Subject: [PATCH] crimson/osd: introduce PhasedOperationT to deduplicate PipelineHandles MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/crimson/osd/osd_operation.h | 8 ++++++++ src/crimson/osd/osd_operations/client_request.h | 3 +-- src/crimson/osd/osd_operations/internal_client_request.h | 3 +-- src/crimson/osd/osd_operations/pg_advance_map.h | 4 +--- src/crimson/osd/osd_operations/replicated_request.h | 3 +-- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/crimson/osd/osd_operation.h b/src/crimson/osd/osd_operation.h index 1eee01554b29e..07baf3b961dff 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 aee364a3a66eb..462b12a29faed 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 b9ff5969ef54a..a1b538c729e74 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 793074a1a9779..10ef641b99949 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 2077439b89d1d..94cd54fb1e870 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; }; } -- 2.39.5