]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: fix buildability after the RecoveryBackend shuffling
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Fri, 18 Apr 2025 08:42:18 +0000 (08:42 +0000)
committerAlex Ainscow <aainscow@uk.ibm.com>
Wed, 17 Sep 2025 08:43:25 +0000 (09:43 +0100)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
(cherry picked from commit c9d18cf3024e5ba681bed5dc315f70527e99b3f1)

src/osd/ECBackend.cc
src/osd/ECCommon.cc
src/osd/ECCommon.h

index 514793ef063b5d765f223cabbfcdace2e6400200..5e4f426925aa99e03dd5dca628f85ea4bdfef4cf 100644 (file)
@@ -63,7 +63,7 @@ static ostream &_prefix(std::ostream *_dout, ECBackend::RecoveryBackend *pgb) {
   return pgb->get_parent()->gen_dbg_prefix(*_dout);
 }
 
-struct ECRecoveryHandle : public PGBackend::RecoveryHandle {
+struct ECCommon::RecoveryBackend::ECRecoveryHandle : public PGBackend::RecoveryHandle {
   list<ECBackend::RecoveryBackend::RecoveryOp> ops;
 };
 
@@ -103,7 +103,8 @@ ECBackend::ECBackend(
 }
 
 PGBackend::RecoveryHandle *ECBackend::open_recovery_op() {
-  return recovery_backend.open_recovery_op();
+  return static_cast<PGBackend::RecoveryHandle*>(
+    recovery_backend.open_recovery_op());
 }
 
 ECBackend::RecoveryBackend::RecoveryBackend(
@@ -122,7 +123,7 @@ ECBackend::RecoveryBackend::RecoveryBackend(
     parent(parent),
     ecbackend(ecbackend) {}
 
-PGBackend::RecoveryHandle *ECBackend::RecoveryBackend::open_recovery_op() {
+ECCommon::RecoveryBackend::ECRecoveryHandle *ECBackend::RecoveryBackend::open_recovery_op() {
   return new ECRecoveryHandle;
 }
 
@@ -755,14 +756,14 @@ void ECBackend::run_recovery_op(
   PGBackend::RecoveryHandle *_h,
   int priority) {
   ceph_assert(_h);
-  ECRecoveryHandle &h = static_cast<ECRecoveryHandle&>(*_h);
+  auto &h = static_cast<ECCommon::RecoveryBackend::ECRecoveryHandle&>(*_h);
   recovery_backend.run_recovery_op(h, priority);
   switcher->send_recovery_deletes(priority, h.deletes);
   delete _h;
 }
 
 void ECBackend::RecoveryBackend::run_recovery_op(
-  ECRecoveryHandle &h,
+  ECCommon::RecoveryBackend::ECRecoveryHandle &h,
   int priority) {
   RecoveryMessages m;
   for (list<RecoveryOp>::iterator i = h.ops.begin();
@@ -782,7 +783,8 @@ int ECBackend::recover_object(
   ObjectContextRef head,
   ObjectContextRef obc,
   PGBackend::RecoveryHandle *_h) {
-  return recovery_backend.recover_object(hoid, v, head, obc, _h);
+  auto *h = static_cast<ECCommon::RecoveryBackend::ECRecoveryHandle*>(_h);
+  return recovery_backend.recover_object(hoid, v, head, obc, h);
 }
 
 int ECBackend::RecoveryBackend::recover_object(
@@ -790,8 +792,7 @@ int ECBackend::RecoveryBackend::recover_object(
   eversion_t v,
   ObjectContextRef head,
   ObjectContextRef obc,
-  PGBackend::RecoveryHandle *_h) {
-  ECRecoveryHandle *h = static_cast<ECRecoveryHandle*>(_h);
+  ECCommon::RecoveryBackend::ECRecoveryHandle *h) {
   h->ops.push_back(RecoveryOp());
   h->ops.back().v = v;
   h->ops.back().hoid = hoid;
index 34304f932f969fc2840e056f22de4ad9af464071..b06c68c1659df93f2f9317e8a4c7d7098f5ed7aa 100644 (file)
@@ -62,6 +62,11 @@ static ostream &_prefix(std::ostream *_dout,
   return read_pipeline->get_parent()->gen_dbg_prefix(*_dout);
 }
 
+static ostream &_prefix(std::ostream *_dout,
+                        ECCommon::RecoveryBackend *pgb) {
+  return pgb->get_parent()->gen_dbg_prefix(*_dout);
+}
+
 static ostream &_prefix(std::ostream *_dout,
                         struct ClientReadCompleter const *read_completer
   );
@@ -971,4 +976,4 @@ void ECCommon::RMWPipeline::on_change2() {
 void ECCommon::RMWPipeline::call_write_ordered(std::function<void(void)> &&cb) {
   next_write_all_shards = true;
   extent_cache.add_on_write(std::move(cb));
-}
\ No newline at end of file
+}
index adc077e465a3fe1dad840e3de0f2435f3238b9af..6a75c20d7a637e843589f11a6e9a4caf388fc26d 100644 (file)
@@ -47,6 +47,7 @@ typedef crimson::osd::ObjectContextRef ObjectContextRef;
 #include "common/dout.h"
 
 //forward declaration
+struct ECBackend;
 struct ECSubWrite;
 struct PGLog;
 struct RecoveryMessages;
@@ -762,16 +763,17 @@ struct ECCommon {
         std::map<int, MOSDPGPushReply*> replies) = 0;
     void dispatch_recovery_messages(RecoveryMessages &m, int priority);
 
-    PGBackend::RecoveryHandle *open_recovery_op();
+    struct ECRecoveryHandle;
+    ECRecoveryHandle *open_recovery_op();
     void run_recovery_op(
-        struct ECRecoveryHandle &h,
+        ECRecoveryHandle &h,
         int priority);
     int recover_object(
         const hobject_t &hoid,
         eversion_t v,
         ObjectContextRef head,
         ObjectContextRef obc,
-        PGBackend::RecoveryHandle *h);
+        ECRecoveryHandle *h);
     void continue_recovery_op(
         RecoveryBackend::RecoveryOp &op,
         RecoveryMessages *m);