mirror of
https://github.com/ceph/ceph
synced 2025-01-02 09:02:34 +00:00
Merge pull request #8247 from liewegas/wip-split-creates
mon: do not send useless pg_create messages for split pgs Reviewed-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
commit
fca1c707d0
@ -468,7 +468,8 @@ void PGMap::stat_pg_add(const pg_t &pgid, const pg_stat_t &s,
|
||||
num_pg++;
|
||||
num_pg_by_state[s.state]++;
|
||||
|
||||
if (s.state & PG_STATE_CREATING) {
|
||||
if ((s.state & PG_STATE_CREATING) &&
|
||||
s.parent_split_bits == 0) {
|
||||
creating_pgs.insert(pgid);
|
||||
if (s.acting_primary >= 0) {
|
||||
creating_pgs_by_osd_epoch[s.acting_primary][s.mapping_epoch].insert(pgid);
|
||||
@ -505,7 +506,8 @@ void PGMap::stat_pg_sub(const pg_t &pgid, const pg_stat_t &s,
|
||||
if (end == 0)
|
||||
num_pg_by_state.erase(s.state);
|
||||
|
||||
if (s.state & PG_STATE_CREATING) {
|
||||
if ((s.state & PG_STATE_CREATING) &&
|
||||
s.parent_split_bits == 0) {
|
||||
creating_pgs.erase(pgid);
|
||||
if (s.acting_primary >= 0) {
|
||||
map<epoch_t,set<pg_t> >& r = creating_pgs_by_osd_epoch[s.acting_primary];
|
||||
|
@ -1252,11 +1252,12 @@ epoch_t PGMonitor::send_pg_creates(int osd, Connection *con, epoch_t next)
|
||||
<< dendl;
|
||||
last = q->first;
|
||||
for (set<pg_t>::iterator r = q->second.begin(); r != q->second.end(); ++r) {
|
||||
pg_stat_t &st = pg_map.pg_stat[*r];
|
||||
if (!m)
|
||||
m = new MOSDPGCreate(pg_map.last_osdmap_epoch);
|
||||
m->mkpg[*r] = pg_create_t(pg_map.pg_stat[*r].created,
|
||||
pg_map.pg_stat[*r].parent,
|
||||
pg_map.pg_stat[*r].parent_split_bits);
|
||||
m->mkpg[*r] = pg_create_t(st.created,
|
||||
st.parent,
|
||||
st.parent_split_bits);
|
||||
// Need the create time from the monitor using its clock to set
|
||||
// last_scrub_stamp upon pg creation.
|
||||
m->ctimes[*r] = pg_map.pg_stat[*r].last_scrub_stamp;
|
||||
|
Loading…
Reference in New Issue
Block a user