diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 1700f6b6e6f2f1..a9154d48a297a8 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -1283,13 +1283,6 @@ int OSDMap::apply_incremental(const Incremental &inc) if (inc.new_pool_max != -1) pool_max = inc.new_pool_max; - for (set::const_iterator p = inc.old_pools.begin(); - p != inc.old_pools.end(); - ++p) { - pools.erase(*p); - name_pool.erase(pool_name[*p]); - pool_name.erase(*p); - } for (map::const_iterator p = inc.new_pools.begin(); p != inc.new_pools.end(); ++p) { @@ -1304,6 +1297,13 @@ int OSDMap::apply_incremental(const Incremental &inc) pool_name[p->first] = p->second; name_pool[p->second] = p->first; } + for (set::const_iterator p = inc.old_pools.begin(); + p != inc.old_pools.end(); + ++p) { + pools.erase(*p); + name_pool.erase(pool_name[*p]); + pool_name.erase(*p); + } for (map::const_iterator i = inc.new_weight.begin(); i != inc.new_weight.end();