if (!new_map->have_pg_pool(i->pool())) {
in_progress_splits.erase(i++);
} else {
- i->is_split(old_map->get_pg_num(i->pool()),
- new_map->get_pg_num(i->pool()), &children);
+ if (i->ps() < static_cast<unsigned>(old_map->get_pg_num(i->pool()))) {
+ i->is_split(old_map->get_pg_num(i->pool()),
+ new_map->get_pg_num(i->pool()), &children);
+ } else {
+ assert(i->ps() < static_cast<unsigned>(new_map->get_pg_num(i->pool())));
+ }
++i;
}
}
list<PG*> to_remove;
- service.expand_pg_num(service.get_osdmap(),
- osdmap);
-
// scan pg's
for (hash_map<pg_t,PG*>::iterator it = pg_map.begin();
it != pg_map.end();
}
to_remove.clear();
+ service.expand_pg_num(service.get_osdmap(), osdmap);
+
service.pre_publish_map(osdmap);
service.publish_map(osdmap);