From 68083c15302786e999fed0eff21adc6253c59271 Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Fri, 18 Apr 2025 08:42:18 +0000 Subject: [PATCH] osd: fix buildability after the RecoveryBackend shuffling Signed-off-by: Radoslaw Zarzynski (cherry picked from commit c9d18cf3024e5ba681bed5dc315f70527e99b3f1) --- src/osd/ECBackend.cc | 17 +++++++++-------- src/osd/ECCommon.cc | 7 ++++++- src/osd/ECCommon.h | 8 +++++--- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/osd/ECBackend.cc b/src/osd/ECBackend.cc index 514793ef063..5e4f426925a 100644 --- a/src/osd/ECBackend.cc +++ b/src/osd/ECBackend.cc @@ -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 ops; }; @@ -103,7 +103,8 @@ ECBackend::ECBackend( } PGBackend::RecoveryHandle *ECBackend::open_recovery_op() { - return recovery_backend.open_recovery_op(); + return static_cast( + 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(*_h); + auto &h = static_cast(*_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::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(_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(_h); + ECCommon::RecoveryBackend::ECRecoveryHandle *h) { h->ops.push_back(RecoveryOp()); h->ops.back().v = v; h->ops.back().hoid = hoid; diff --git a/src/osd/ECCommon.cc b/src/osd/ECCommon.cc index 34304f932f9..b06c68c1659 100644 --- a/src/osd/ECCommon.cc +++ b/src/osd/ECCommon.cc @@ -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 &&cb) { next_write_all_shards = true; extent_cache.add_on_write(std::move(cb)); -} \ No newline at end of file +} diff --git a/src/osd/ECCommon.h b/src/osd/ECCommon.h index adc077e465a..6a75c20d7a6 100644 --- a/src/osd/ECCommon.h +++ b/src/osd/ECCommon.h @@ -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 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); -- 2.39.5