return p->raw_hash_to_pg(p->hash_key(key, ns));
}
-int Objecter::_calc_target(op_target_t *t)
+int Objecter::_calc_target(op_target_t *t, bool any_change)
{
assert(rwlock.is_locked());
}
if (t->pgid != pgid ||
- is_pg_changed(t->primary, t->acting, primary, acting, t->used_replica) ||
+ is_pg_changed(
+ t->primary, t->acting, primary, acting, t->used_replica || any_change) ||
force_resend) {
t->pgid = pgid;
t->acting = acting;
{
assert(rwlock.is_wlocked());
- int r = _calc_target(&linger_op->target);
+ int r = _calc_target(&linger_op->target, true);
if (r == RECALC_OP_TARGET_NEED_RESEND) {
ldout(cct, 10) << "recalc_linger_op_target tid " << linger_op->linger_id
<< " pgid " << linger_op->target.pgid
bool osdmap_full_flag() const;
bool target_should_be_paused(op_target_t *op);
- int _calc_target(op_target_t *t);
+ int _calc_target(op_target_t *t, bool any_change=false);
int _map_session(op_target_t *op, OSDSession **s,
RWLock::Context& lc);