From 3b0a44d9bdc7aec051cce1eef7632981a84e481e Mon Sep 17 00:00:00 2001 From: David Zafman Date: Wed, 29 May 2013 13:17:01 -0700 Subject: [PATCH] osd: Add dump_blacklist to admin socket Signed-off-by: David Zafman --- src/osd/OSD.cc | 23 +++++++++++++++++++++++ src/osd/OSDMap.cc | 8 ++++++++ src/osd/OSDMap.h | 1 + 3 files changed, 32 insertions(+) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 7035eca6c9b51..da41bf6bc1122 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1007,6 +1007,24 @@ bool OSD::asok_command(string command, string args, ostream& ss) op_wq.dump(&f); f.close_section(); f.flush(ss); + } else if (command == "dump_blacklist") { + list > bl; + OSDMapRef curmap = service.get_osdmap(); + + JSONFormatter f(true); + f.open_array_section("blacklist"); + curmap->get_blacklist(&bl); + for (list >::iterator it = bl.begin(); + it != bl.end(); ++it) { + f.open_array_section("entry"); + f.open_object_section("entity_addr_t"); + it->first.dump(&f); + f.close_section(); //entity_addr_t + it->second.localtime(f.dump_stream("expire_time")); + f.close_section(); //entry + } + f.close_section(); //blacklist + f.flush(ss); } else { assert(0 == "broken asok registration"); } @@ -1157,6 +1175,10 @@ int OSD::init() r = admin_socket->register_command("dump_op_pq_state", asok_hook, "dump op priority queue state"); assert(r == 0); + r = admin_socket->register_command("dump_blacklist", asok_hook, + "dump_blacklist"); + assert(r == 0); + test_ops_hook = new TestOpsSocketHook(&(this->service), this->store); r = admin_socket->register_command("setomapval", test_ops_hook, "setomapval "); @@ -1354,6 +1376,7 @@ int OSD::shutdown() cct->get_admin_socket()->unregister_command("dump_ops_in_flight"); cct->get_admin_socket()->unregister_command("dump_historic_ops"); cct->get_admin_socket()->unregister_command("dump_op_pq_state"); + cct->get_admin_socket()->unregister_command("dump_blacklist"); delete asok_hook; asok_hook = NULL; diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 5cf62a05e3f1f..cc7646b495bf4 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -615,6 +615,14 @@ bool OSDMap::is_blacklisted(const entity_addr_t& a) const return blacklist.count(b); } +void OSDMap::get_blacklist(list > *bl) const +{ + for (hash_map::const_iterator it = blacklist.begin() ; + it != blacklist.end(); ++it) { + bl->push_back(*it); + } +} + void OSDMap::set_max_osd(int m) { int o = max_osd; diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index 42877f10f1b62..aadbe3c58be12 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -240,6 +240,7 @@ private: const utime_t& get_modified() const { return modified; } bool is_blacklisted(const entity_addr_t& a) const; + void get_blacklist(list > *bl) const; string get_cluster_snapshot() const { if (cluster_snapshot_epoch == epoch) -- 2.39.5