From bfe4c084292ccdb1bbe66b005bf2f467cc4feda8 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 27 Jun 2017 15:01:16 -0400 Subject: [PATCH] osd/OSDMap: add per-osd flag OSD_FLAGS check rename OSD_FLAGS to OSDMAP_FLAGS Signed-off-by: Sage Weil --- qa/workunits/cephtool/test.sh | 20 ++++++++++---------- src/osd/OSDMap.cc | 29 +++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/qa/workunits/cephtool/test.sh b/qa/workunits/cephtool/test.sh index 34c48697c4ba8..009b7c5130d38 100755 --- a/qa/workunits/cephtool/test.sh +++ b/qa/workunits/cephtool/test.sh @@ -1439,21 +1439,21 @@ function test_mon_osd() ceph osd find 0 ceph osd add-nodown 0 1 - ceph health detail | grep 'nodown osd(s).*0.*1' + ceph health detail | grep 'NODOWN' ceph osd rm-nodown 0 1 - ! ceph health detail | grep 'nodown osd(s).*0.*1' + ! ceph health detail | grep 'NODOWN' ceph osd out 0 # so we can mark it as noin later ceph osd add-noin 0 - ceph health detail | grep 'noin osd(s).*0' + ceph health detail | grep 'NOIN' ceph osd rm-noin 0 - ! ceph health detail | grep 'noin osd(s).*0' + ! ceph health detail | grep 'NOIN' ceph osd in 0 ceph osd add-noout 0 - ceph health detail | grep 'noout osd(s).*0' + ceph health detail | grep 'NOOUT' ceph osd rm-noout 0 - ! ceph health detail | grep 'noout osds(s).*0' + ! ceph health detail | grep 'NOOUT' # test osd id parse expect_false ceph osd add-noup 797er @@ -1472,12 +1472,12 @@ function test_mon_osd() ceph osd add-nodown $osd ceph osd add-noout $osd done - ceph -s | grep 'nodown osd(s)' - ceph -s | grep 'noout osd(s)' + ceph -s | grep 'NODOWN' + ceph -s | grep 'NOOUT' ceph osd rm-nodown any ceph osd rm-noout all - ! ceph -s | grep 'nodown osd(s)' - ! ceph -s | grep 'noout osd(s)' + ! ceph -s | grep 'NODOWN' + ! ceph -s | grep 'NOOUT' # make sure mark out preserves weight ceph osd reweight osd.0 .5 diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 1bc20e7a48e61..2f441eb9a66ad 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -4493,7 +4493,7 @@ void OSDMap::check_health(health_check_map_t *checks) const } } - // OSD_FLAGS + // OSDMAP_FLAGS { // warn about flags uint64_t warn_flags = @@ -4515,7 +4515,32 @@ void OSDMap::check_health(health_check_map_t *checks) const ostringstream ss; ss << get_flag_string(get_flags() & warn_flags) << " flag(s) set"; - checks->add("OSD_FLAGS", HEALTH_WARN, ss.str()); + checks->add("OSDMAP_FLAGS", HEALTH_WARN, ss.str()); + } + } + + // OSD_FLAGS + { + list detail; + const unsigned flags = + CEPH_OSD_NOUP | + CEPH_OSD_NOIN | + CEPH_OSD_NODOWN | + CEPH_OSD_NOOUT; + for (int i = 0; i < max_osd; ++i) { + if (osd_state[i] & flags) { + ostringstream ss; + set states; + OSDMap::calc_state_set(osd_state[i] & flags, states); + ss << "osd." << i << " has flags " << states; + detail.push_back(ss.str()); + } + } + if (!detail.empty()) { + ostringstream ss; + ss << detail.size() << " osd(s) have {NOUP,NODOWN,NOIN,NOOUT} flags set"; + auto& d = checks->add("OSD_FLAGS", HEALTH_WARN, ss.str()); + d.detail.swap(detail); } } -- 2.39.5