queue_transaction(
osr.get(), t,
onreadable,
- new C_OSD_CommittedPushedObject(this, op,
- info.history.same_interval_since,
- info.last_complete),
+ new C_OSD_CommittedPushedObject(
+ this, op,
+ get_osdmap()->get_epoch(),
+ info.last_complete),
onreadable_sync,
oncomplete,
TrackedOpRef()
onreadable,
new C_OSD_CommittedPushedObject(
this, op,
- info.history.same_interval_since,
+ get_osdmap()->get_epoch(),
info.last_complete),
onreadable_sync,
oncomplete,
}
-void ReplicatedPG::_committed_pushed_object(OpRequestRef op, epoch_t same_since, eversion_t last_complete)
+void ReplicatedPG::_committed_pushed_object(
+ OpRequestRef op, epoch_t epoch, eversion_t last_complete)
{
lock();
- if (same_since == info.history.same_interval_since) {
+ if (epoch >= last_peering_reset) {
dout(10) << "_committed_pushed_object last_complete " << last_complete << " now ondisk" << dendl;
last_complete_ondisk = last_complete;
osd->store->queue_transaction(osr.get(), t,
new C_OSD_AppliedRecoveredObject(this, t, obc),
- new C_OSD_CommittedPushedObject(this, OpRequestRef(),
- info.history.same_interval_since,
- info.last_complete),
+ new C_OSD_CommittedPushedObject(
+ this, OpRequestRef(),
+ get_osdmap()->get_epoch(),
+ info.last_complete),
new C_OSD_OndiskWriteUnlock(obc));
continue;
}
struct C_OSD_CommittedPushedObject : public Context {
ReplicatedPG *pg;
OpRequestRef op;
- epoch_t same_since;
+ epoch_t epoch;
eversion_t last_complete;
- C_OSD_CommittedPushedObject(ReplicatedPG *p, OpRequestRef o, epoch_t ss, eversion_t lc) : pg(p), op(o), same_since(ss), last_complete(lc) {
+ C_OSD_CommittedPushedObject(
+ ReplicatedPG *p, OpRequestRef o, epoch_t epoch, eversion_t lc) :
+ pg(p), op(o), epoch(epoch), last_complete(lc) {
pg->get();
}
void finish(int r) {
- pg->_committed_pushed_object(op, same_since, last_complete);
+ pg->_committed_pushed_object(op, epoch, last_complete);
pg->put();
}
};
void sub_op_modify_reply(OpRequestRef op);
void _applied_recovered_object(ObjectStore::Transaction *t, ObjectContext *obc);
void _applied_recovered_object_replica(ObjectStore::Transaction *t);
- void _committed_pushed_object(OpRequestRef op, epoch_t same_since, eversion_t lc);
+ void _committed_pushed_object(OpRequestRef op, epoch_t epoch, eversion_t lc);
void recover_got(hobject_t oid, eversion_t v);
void sub_op_push(OpRequestRef op);
void _failed_push(OpRequestRef op);