bool flushed;
// Ops waiting on backfill_pos to change
- list<OpRequestRef> waiting_for_backfill_pos;
list<OpRequestRef> waiting_for_active;
list<OpRequestRef> waiting_for_all_missing;
map<hobject_t, list<OpRequestRef> > waiting_for_missing_object,
op->mark_delayed("waiting for degraded object");
}
-void ReplicatedPG::wait_for_backfill_pos(OpRequestRef op)
-{
- waiting_for_backfill_pos.push_back(op);
-}
-
-void ReplicatedPG::release_waiting_for_backfill_pos()
-{
- requeue_ops(waiting_for_backfill_pos);
-}
-
bool PGLSParentFilter::filter(bufferlist& xattr_data, bufferlist& outdata)
{
bufferlist::iterator iter = xattr_data.begin();
return;
}
- if (head == backfill_pos) {
- wait_for_backfill_pos(op);
- return;
- }
-
// missing snapdir?
hobject_t snapdir(m->get_oid(), m->get_object_locator().key,
CEPH_SNAPDIR, m->get_pg().ps(), info.pgid.pool(),
backfill_pos = backfill_info.begin > peer_backfill_info.begin ?
peer_backfill_info.begin : backfill_info.begin;
- release_waiting_for_backfill_pos();
dout(10) << " backfill_pos now " << backfill_pos << dendl;
assert(waiting_on_backfill);
context_registry_on_change();
// requeue object waiters
- requeue_ops(waiting_for_backfill_pos);
requeue_object_waiters(waiting_for_missing_object);
for (map<hobject_t,list<OpRequestRef> >::iterator p = waiting_for_degraded_object.begin();
p != waiting_for_degraded_object.end();
}
send_pushes(g_conf->osd_recovery_op_priority, pushes);
- release_waiting_for_backfill_pos();
dout(5) << "backfill_pos is " << backfill_pos << " and pinfo.last_backfill is "
<< pinfo.last_backfill << dendl;
for (set<hobject_t>::iterator i = backfills_in_flight.begin();
bool is_missing_object(const hobject_t& oid);
void wait_for_missing_object(const hobject_t& oid, OpRequestRef op);
void wait_for_all_missing(OpRequestRef op);
- void wait_for_backfill_pos(OpRequestRef op);
- void release_waiting_for_backfill_pos();
bool is_degraded_object(const hobject_t& oid);
void wait_for_degraded_object(const hobject_t& oid, OpRequestRef op);