{
if (msg)
msg->mark_started();
+ assert(!get_parent()->get_log().get_missing().is_missing(op.soid));
if (!get_parent()->pgb_is_primary())
get_parent()->update_stats(op.stats);
ObjectStore::Transaction *localt = new ObjectStore::Transaction;
return;
}
+ // degraded object?
+ if (write_ordered && is_degraded_object(head)) {
+ wait_for_degraded_object(head, op);
+ return;
+ }
+
// missing snapdir?
hobject_t snapdir(m->get_oid(), m->get_object_locator().key,
CEPH_SNAPDIR, m->get_pg().ps(), info.pgid.pool(),
// sanity checks
assert(m->map_epoch >= get_info().history.same_interval_since);
+ // we better not be missing this.
+ assert(!parent->get_log().get_missing().is_missing(soid));
+
int ackerosd = m->get_source().num();
op->mark_started();
if (peer == get_primary())
return true;
assert(peer_info.count(peer));
- bool should_send_backfill = hoid.pool != (int64_t)info.pgid.pool() ||
+ bool should_send = hoid.pool != (int64_t)info.pgid.pool() ||
hoid <= MAX(last_backfill_started, peer_info[peer].last_backfill);
- if (!should_send_backfill)
+ if (!should_send)
assert(is_backfill_targets(peer));
-
- assert(peer_missing.count(peer));
- return should_send_backfill && !peer_missing[peer].is_missing(hoid);
+ return should_send;
}
void update_peer_last_complete_ondisk(