]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: introduce PhasedOperationT to deduplicate PipelineHandles
authorRadosław Zarzyński <rzarzyns@redhat.com>
Tue, 5 Apr 2022 21:59:47 +0000 (23:59 +0200)
committerRadosław Zarzyński <rzarzyns@redhat.com>
Thu, 5 May 2022 02:06:31 +0000 (04:06 +0200)
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 <rzarzyns@redhat.com>
src/crimson/osd/osd_operation.h
src/crimson/osd/osd_operations/client_request.h
src/crimson/osd/osd_operations/internal_client_request.h
src/crimson/osd/osd_operations/pg_advance_map.h
src/crimson/osd/osd_operations/replicated_request.h

index 1eee01554b29ef6134c5f12814fad0622ee69159..07baf3b961dffc5560ac187f0ff2abc75c1d8d6c 100644 (file)
@@ -156,6 +156,14 @@ protected:
   }
 };
 
+template <class T>
+class PhasedOperationT : public TrackableOperationT<T> {
+  using base_t = TrackableOperationT<T>;
+protected:
+  using TrackableOperationT<T>::TrackableOperationT;
+
+  PipelineHandle handle;
+};
 
 /**
  * Maintains a set of lists of all active ops.
index aee364a3a66eb24bff6c3003c8a159a79b2b360e..462b12a29faed811e741e78d0b3ac64024e8b515 100644 (file)
@@ -16,13 +16,12 @@ namespace crimson::osd {
 class PG;
 class OSD;
 
-class ClientRequest final : public TrackableOperationT<ClientRequest>,
+class ClientRequest final : public PhasedOperationT<ClientRequest>,
                             private CommonClientRequest {
   OSD &osd;
   crimson::net::ConnectionRef conn;
   Ref<MOSDOp> m;
   OpInfo op_info;
-  PipelineHandle handle;
 
 public:
   class ConnectionPipeline {
index b9ff5969ef54a3b9888163f56c23802e097354f3..a1b538c729e749b55363d4e3bb9c2ef746ede491 100644 (file)
@@ -10,7 +10,7 @@
 
 namespace crimson::osd {
 
-class InternalClientRequest : public TrackableOperationT<InternalClientRequest>,
+class InternalClientRequest : public PhasedOperationT<InternalClientRequest>,
                               private CommonClientRequest {
 public:
   explicit InternalClientRequest(Ref<PG> pg);
@@ -42,7 +42,6 @@ private:
   seastar::future<> do_process();
 
   Ref<PG> pg;
-  PipelineHandle handle;
   OpInfo op_info;
 };
 
index 793074a1a9779c24b5e500861d78d80c08f4975c..10ef641b99949980a82a0ed2162cafc8f9580d20 100644 (file)
@@ -20,13 +20,11 @@ namespace crimson::osd {
 class OSD;
 class PG;
 
-class PGAdvanceMap : public TrackableOperationT<PGAdvanceMap> {
+class PGAdvanceMap : public PhasedOperationT<PGAdvanceMap> {
 public:
   static constexpr OperationTypeCode type = OperationTypeCode::pg_advance_map;
 
 protected:
-  PipelineHandle handle;
-
   OSD &osd;
   Ref<PG> pg;
 
index 2077439b89d1d8f57f23d44e19e90b58ddf468fd..94cd54fb1e870e432f1e02dbd2a3c765cec81fdd 100644 (file)
@@ -18,7 +18,7 @@ namespace crimson::osd {
 class OSD;
 class PG;
 
-class RepRequest final : public TrackableOperationT<RepRequest> {
+class RepRequest final : public PhasedOperationT<RepRequest> {
 public:
   class ConnectionPipeline {
     OrderedExclusivePhase await_map = {
@@ -52,7 +52,6 @@ private:
   OSD &osd;
   crimson::net::ConnectionRef conn;
   Ref<MOSDRepOp> req;
-  PipelineHandle handle;
 };
 
 }