From 212cecac5a40d6aa26d65d806528aa627be02d6a Mon Sep 17 00:00:00 2001 From: xie xingguo Date: Mon, 3 Jul 2017 20:17:53 +0800 Subject: [PATCH] mon/OSDMonitor: tidy up upmap on pool removal Signed-off-by: xie xingguo --- src/mon/OSDMonitor.cc | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 200daa26b9f4..e8b93db6de25 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -10737,7 +10737,7 @@ bool OSDMonitor::_check_remove_tier( int OSDMonitor::_prepare_remove_pool( int64_t pool, ostream *ss, bool no_fake) { - dout(10) << "_prepare_remove_pool " << pool << dendl; + dout(10) << __func__ << " " << pool << dendl; const pg_pool_t *p = osdmap.get_pg_pool(pool); int r = _check_remove_pool(pool, *p, ss); if (r < 0) @@ -10754,7 +10754,7 @@ int OSDMonitor::_prepare_remove_pool( } if (pending_inc.old_pools.count(pool)) { - dout(10) << "_prepare_remove_pool " << pool << " already pending removal" + dout(10) << __func__ << " " << pool << " already pending removal" << dendl; return 0; } @@ -10771,25 +10771,44 @@ int OSDMonitor::_prepare_remove_pool( // remove pending_inc.old_pools.insert(pool); - // remove any pg_temp mappings for this pool too + // remove any pg_temp mappings for this pool for (auto p = osdmap.pg_temp->begin(); p != osdmap.pg_temp->end(); ++p) { if (p->first.pool() == (uint64_t)pool) { - dout(10) << "_prepare_remove_pool " << pool << " removing obsolete pg_temp " + dout(10) << __func__ << " " << pool << " removing obsolete pg_temp " << p->first << dendl; pending_inc.new_pg_temp[p->first].clear(); } } + // remove any primary_temp mappings for this pool for (auto p = osdmap.primary_temp->begin(); p != osdmap.primary_temp->end(); ++p) { if (p->first.pool() == (uint64_t)pool) { - dout(10) << "_prepare_remove_pool " << pool + dout(10) << __func__ << " " << pool << " removing obsolete primary_temp" << p->first << dendl; pending_inc.new_primary_temp[p->first] = -1; } } + // remove any pg_upmap mappings for this pool + for (auto& p : osdmap.pg_upmap) { + if (p.first.pool() == (uint64_t)pool) { + dout(10) << __func__ << " " << pool + << " removing obsolete pg_upmap " + << p.first << dendl; + pending_inc.old_pg_upmap.insert(p.first); + } + } + // remove any pg_upmap_items mappings for this pool + for (auto& p : osdmap.pg_upmap_items) { + if (p.first.pool() == (uint64_t)pool) { + dout(10) << __func__ << " " << pool + << " removing obsolete pg_upmap_items " << p.first + << dendl; + pending_inc.old_pg_upmap_items.insert(p.first); + } + } return 0; } -- 2.47.3