public:
C_OSD_AppliedRecoveredObject(PrimaryLogPG *p, ObjectContextRef o) :
pg(p), obc(o) {}
+ bool sync_finish(int r) override {
+ pg->_applied_recovered_object(obc);
+ return true;
+ }
void finish(int r) override {
+ pg->lock();
pg->_applied_recovered_object(obc);
+ pg->unlock();
}
};
public:
explicit C_OSD_AppliedRecoveredObjectReplica(PrimaryLogPG *p) :
pg(p) {}
+ bool sync_finish(int r) override {
+ pg->_applied_recovered_object_replica();
+ return true;
+ }
void finish(int r) override {
+ pg->lock();
pg->_applied_recovered_object_replica();
+ pg->unlock();
}
};
void PrimaryLogPG::_applied_recovered_object(ObjectContextRef obc)
{
- lock();
dout(20) << __func__ << dendl;
if (obc) {
dout(20) << "obc = " << *obc << dendl;
requeue_scrub(false);
}
}
- unlock();
}
void PrimaryLogPG::_applied_recovered_object_replica()
{
- lock();
dout(20) << __func__ << dendl;
assert(active_pushes >= 1);
--active_pushes;
get_osdmap()->get_epoch()));
scrubber.active_rep_scrub.reset();
}
- unlock();
}
void PrimaryLogPG::recover_got(hobject_t oid, eversion_t v)