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;
};
}
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(
parent(parent),
ecbackend(ecbackend) {}
-PGBackend::RecoveryHandle *ECBackend::RecoveryBackend::open_recovery_op() {
+ECCommon::RecoveryBackend::ECRecoveryHandle *ECBackend::RecoveryBackend::open_recovery_op() {
return new ECRecoveryHandle;
}
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();
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(
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;
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
);
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
+}
#include "common/dout.h"
//forward declaration
+struct ECBackend;
struct ECSubWrite;
struct PGLog;
struct RecoveryMessages;
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);