{
}
-struct PrimaryLogPG::C_OSD_OnApplied : Context {
- PrimaryLogPGRef pg;
- epoch_t epoch;
- eversion_t v;
- C_OSD_OnApplied(
- PrimaryLogPGRef pg,
- epoch_t epoch,
- eversion_t v)
- : pg(pg), epoch(epoch), v(v) {}
- bool sync_finish(int r) override {
- pg->op_applied(v);
- return true;
- }
- void finish(int) override {
- pg->lock();
- if (!pg->pg_has_reset_since(epoch))
- pg->op_applied(v);
- pg->unlock();
- }
-};
-
/**
* The CopyCallback class defines an interface for completions to the
* copy_start code. Users of the copy infrastructure must implement
void PrimaryLogPG::op_applied(const eversion_t &applied_version)
{
dout(10) << "op_applied version " << applied_version << dendl;
- if (applied_version == eversion_t())
- return;
- assert(applied_version > last_update_applied);
- assert(applied_version <= info.last_update);
+ assert(applied_version == info.last_update);
last_update_applied = applied_version;
if (is_primary()) {
if (scrubber.active) {
};
t.register_on_commit(
new OnComplete{this, rep_tid, get_osdmap()->get_epoch()});
- t.register_on_applied(
- new C_OSD_OnApplied{this, get_osdmap()->get_epoch(), info.last_update});
int r = osd->store->queue_transaction(ch, std::move(t), NULL);
assert(r == 0);
+ op_applied(info.last_update);
});
}
t.register_on_commit(complete);
}
}
- t.register_on_applied(
- new C_OSD_OnApplied{this, get_osdmap()->get_epoch(), info.last_update});
int tr = osd->store->queue_transaction(
ch,
std::move(t),
nullptr);
assert(tr == 0);
+ op_applied(info.last_update);
}
void PrimaryLogPG::do_update_log_missing_reply(OpRequestRef &op)