]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: decouple RMWPipeline from ECBackend
authorRadosław Zarzyński <rzarzyns@redhat.com>
Tue, 19 Sep 2023 13:11:12 +0000 (15:11 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 10 Jan 2024 17:27:12 +0000 (17:27 +0000)
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
src/osd/ECBackend.h

index ae169fd8ff34f578cb7e9f6c340799564c42435d..a2769e6cb6dc9191b5d241c87aa3acd455261ad4 100644 (file)
@@ -97,6 +97,21 @@ struct RecoveryMessages;
   };
 
 struct ECCommon {
+  virtual ~ECCommon() = default;
+
+  virtual void handle_sub_write(
+    pg_shard_t from,
+    OpRequestRef msg,
+    ECSubWrite &op,
+    const ZTracer::Trace &trace
+    ) = 0;
+
+  virtual void objects_read_and_reconstruct(
+    const std::map<hobject_t, std::list<boost::tuple<uint64_t, uint64_t, uint32_t> >
+    > &reads,
+    bool fast_read,
+    GenContextURef<std::map<hobject_t,std::pair<int, extent_map> > &&> &&func) = 0;
+
   struct read_request_t {
     const std::list<boost::tuple<uint64_t, uint64_t, uint32_t> > to_read;
     std::map<pg_shard_t, std::vector<std::pair<int, int>>> need;
@@ -363,7 +378,7 @@ public:
     OpRequestRef msg,
     ECSubWrite &op,
     const ZTracer::Trace &trace
-    );
+    ) override;
   void handle_sub_read(
     pg_shard_t from,
     const ECSubRead &op,
@@ -437,7 +452,7 @@ public:
     const std::map<hobject_t, std::list<boost::tuple<uint64_t, uint64_t, uint32_t> >
     > &reads,
     bool fast_read,
-    GenContextURef<std::map<hobject_t,std::pair<int, extent_map> > &&> &&func);
+    GenContextURef<std::map<hobject_t,std::pair<int, extent_map> > &&> &&func) override;
 
   void objects_read_async(
     const hobject_t &hoid,
@@ -738,15 +753,13 @@ public:
     ceph::ErasureCodeInterfaceRef ec_impl;
     const ECUtil::stripe_info_t& sinfo;
     ECListener* parent;
-
-    // TODO: lay an interface down here
-    ECBackend& ec_backend;
+    ECCommon& ec_backend;
 
     RMWPipeline(CephContext* cct,
                 ceph::ErasureCodeInterfaceRef ec_impl,
                 const ECUtil::stripe_info_t& sinfo,
                 ECListener* parent,
-                ECBackend& ec_backend)
+                ECCommon& ec_backend)
       : cct(cct),
         ec_impl(std::move(ec_impl)),
         sinfo(sinfo),