vector<int> up, acting;
osdmap->pg_to_up_acting_osds(pgid, &up, &up_primary,
&acting, &acting_primary);
+ unsigned prev_seed = ceph_stable_mod(pgid.ps(), t->pg_num, t->pg_num_mask);
if (any_change && pg_interval_t::is_new_interval(
t->acting_primary,
acting_primary,
min_size,
t->pg_num,
pg_num,
- pi->raw_pg_to_pg(pgid))) {
+ pg_t(prev_seed, pgid.pool(), pgid.preferred()))) {
force_resend = true;
}
t->size = size;
t->min_size = min_size;
t->pg_num = pg_num;
+ t->pg_num_mask = pi->get_pg_num_mask();
ldout(cct, 10) << __func__ << " "
<< " pgid " << pgid << " acting " << acting << dendl;
t->used_replica = false;
object_t target_oid;
object_locator_t target_oloc;
- bool precalc_pgid; ///< true if we are directed at base_pgid, not base_oid
- pg_t base_pgid; ///< explciti pg target, if any
-
- pg_t pgid; ///< last pg we mapped to
- unsigned pg_num; ///< last pg_num we mapped to
- vector<int> up; ///< set of up osds for last pg we mapped to
- vector<int> acting; ///< set of acting osds for last pg we mapped to
- int up_primary; ///< primary for last pg we mapped to based on the up set
- int acting_primary; ///< primary for last pg we mapped to based on the acting set
- int size; ///< the size of the pool when were were last mapped
- int min_size; ///< the min size of the pool when were were last mapped
+ bool precalc_pgid; ///< true if we are directed at base_pgid, not base_oid
+ pg_t base_pgid; ///< explciti pg target, if any
+
+ pg_t pgid; ///< last pg we mapped to
+ unsigned pg_num; ///< last pg_num we mapped to
+ unsigned pg_num_mask; ///< last pg_num_mask we mapped to
+ vector<int> up; ///< set of up osds for last pg we mapped to
+ vector<int> acting; ///< set of acting osds for last pg we mapped to
+ int up_primary; ///< primary for last pg we mapped to based on the up set
+ int acting_primary; ///< primary for last pg we mapped to based on the acting set
+ int size; ///< the size of the pool when were were last mapped
+ int min_size; ///< the min size of the pool when were were last mapped
bool used_replica;
bool paused;
base_oloc(oloc),
precalc_pgid(false),
pg_num(0),
+ pg_num_mask(0),
up_primary(-1),
acting_primary(-1),
size(-1),