diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index a73b46fbffd8b..1e620d5009b2a 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -2545,6 +2545,8 @@ bool pg_interval_t::is_new_interval( int new_up_primary, const vector &old_up, const vector &new_up, + int old_size, + int new_size, int old_min_size, int new_min_size, unsigned old_pg_num, @@ -2555,6 +2557,7 @@ bool pg_interval_t::is_new_interval( old_up_primary != new_up_primary || new_up != old_up || old_min_size != new_min_size || + old_size != new_size || pgid.is_split(old_pg_num, new_pg_num, 0); } @@ -2579,6 +2582,8 @@ bool pg_interval_t::is_new_interval( new_up_primary, old_up, new_up, + lastmap->get_pools().find(pgid.pool())->second.size, + osdmap->get_pools().find(pgid.pool())->second.size, lastmap->get_pools().find(pgid.pool())->second.min_size, osdmap->get_pools().find(pgid.pool())->second.min_size, lastmap->get_pg_num(pgid.pool()), diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 18f5402501966..f1624335b8887 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -1846,6 +1846,8 @@ struct pg_interval_t { int new_up_primary, const vector &old_up, const vector &new_up, + int old_size, + int new_size, int old_min_size, int new_min_size, unsigned old_pg_num, diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index 4987a92d75c5b..d1d76cba5229d 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -2458,6 +2458,7 @@ int Objecter::_calc_target(op_target_t *t, epoch_t *last_force_resend, bool any } } + int size = pi->size; int min_size = pi->min_size; unsigned pg_num = pi->get_pg_num(); int up_primary, acting_primary; @@ -2473,6 +2474,8 @@ int Objecter::_calc_target(op_target_t *t, epoch_t *last_force_resend, bool any up_primary, t->up, up, + t->size, + size, t->min_size, min_size, t->pg_num, @@ -2499,6 +2502,7 @@ int Objecter::_calc_target(op_target_t *t, epoch_t *last_force_resend, bool any t->acting_primary = acting_primary; t->up_primary = up_primary; t->up = up; + t->size = size; t->min_size = min_size; t->pg_num = pg_num; ldout(cct, 10) << __func__ << " " diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 478c16661b45a..4124a533b2f76 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -1126,6 +1126,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { vector 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; @@ -1141,6 +1142,7 @@ class Objecter : public md_config_obs_t, public Dispatcher { pg_num(0), up_primary(-1), acting_primary(-1), + size(-1), min_size(-1), used_replica(false), paused(false),