From ce4e554ed66b45cb4a302ff7668d9e0beb6bd7d9 Mon Sep 17 00:00:00 2001 From: xie xingguo Date: Mon, 2 Sep 2019 13:34:35 +0800 Subject: [PATCH] Revert "mgr/DaemonServer: safe-to-destroy - do not consider irrelevant pgs" This reverts commit ba8dd78236eec2c70b9bdc335d847c5762d4b6d4. We use OSD device class to separate pools. Hence removing the device class of an osd may cause mgr mistakenly approve an invalid safe-to-destroy request, e.g., because that osd now belongs to no pool while data migration could be still in-progress.. Signed-off-by: xie xingguo --- src/mgr/DaemonServer.cc | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index 2fd572ed6a507..8af4a1a76b640 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -1425,33 +1425,6 @@ bool DaemonServer::_handle_command( safe_to_destroy.insert(osd); continue; // clearly safe to destroy } - set pools; - osdmap.get_pool_ids_by_osd(g_ceph_context, osd, &pools); - if (pools.empty()) { - // osd does not belong to any pools yet - safe_to_destroy.insert(osd); - continue; - } - if (osdmap.is_down(osd) && osdmap.is_out(osd)) { - // if osd is down&out and all relevant pools are active+clean, - // then should be safe to destroy - bool all_osd_pools_active_clean = true; - for (auto &ps: pg_map.pg_stat) { - auto& pg = ps.first; - auto state = ps.second.state; - if (!pools.count(pg.pool())) - continue; - if ((state & (PG_STATE_ACTIVE | PG_STATE_CLEAN)) != - (PG_STATE_ACTIVE | PG_STATE_CLEAN)) { - all_osd_pools_active_clean = false; - break; - } - } - if (all_osd_pools_active_clean) { - safe_to_destroy.insert(osd); - continue; - } - } auto q = pg_map.num_pg_by_osd.find(osd); if (q != pg_map.num_pg_by_osd.end()) { if (q->second.acting > 0 || q->second.up_not_acting > 0) { -- 2.39.5