Merge pull request #5420 from ceph/wip-12429

osd/OSDMap: handle incrementals that modify+del pool

Reviewed-by: Greg Farnum <gfarnum@redhat.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
Kefu Chai 2015-08-04 13:52:15 +08:00
commit 8f0028a9bd

View File

@ -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<int64_t>::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<int64_t,pg_pool_t>::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<int64_t>::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<int32_t,uint32_t>::const_iterator i = inc.new_weight.begin();
i != inc.new_weight.end();