}
};
+std::set<int64_t> OSD::get_mapped_pools()
+{
+ std::set<int64_t> pools;
+ std::vector<spg_t> pgids;
+ _get_pgids(&pgids);
+ for (const auto &pgid : pgids) {
+ pools.insert(pgid.pool());
+ }
+ return pools;
+}
+
bool OSD::asok_command(std::string_view admin_command, const cmdmap_t& cmdmap,
std::string_view format, ostream& ss)
{
f->open_object_section("compact_result");
f->dump_float("elapsed_time", duration);
f->close_section();
+ } else if (admin_command == "get_mapped_pools") {
+ f->open_array_section("mapped_pools");
+ set<int64_t> poollist = get_mapped_pools();
+ for (auto pool : poollist) {
+ f->dump_int("pool_id", pool);
+ }
+ f->close_section();
} else if (admin_command == "smart") {
probe_smart(ss);
} else if (admin_command == "list_devices") {
" WARNING: Compaction probably slows your requests");
assert(r == 0);
+ r = admin_socket->register_command("get_mapped_pools", "get_mapped_pools",
+ asok_hook,
+ "dump pools whose PG(s) are mapped to this OSD.");
+
+ assert(r == 0);
+
r = admin_socket->register_command("smart", "smart",
asok_hook,
"probe OSD devices for SMART data.");
cct->get_admin_socket()->unregister_command("flush_store_cache");
cct->get_admin_socket()->unregister_command("dump_pgstate_history");
cct->get_admin_socket()->unregister_command("compact");
+ cct->get_admin_socket()->unregister_command("get_mapped_pools");
cct->get_admin_socket()->unregister_command("smart");
cct->get_admin_socket()->unregister_command("list_devices");
delete asok_hook;