From 3072fa071cfc97aab1139376d6e570f794e30358 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 29 Oct 2019 21:15:24 -0500 Subject: [PATCH] mds: convert 'session ls' and 'client ls' This adds/moves the filtering to the asok version. Signed-off-by: Sage Weil --- src/mds/MDSDaemon.cc | 10 ++++++++-- src/mds/MDSRank.cc | 31 +++++++++++-------------------- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/mds/MDSDaemon.cc b/src/mds/MDSDaemon.cc index a91bbbc730da2..316eee9ad4eb0 100644 --- a/src/mds/MDSDaemon.cc +++ b/src/mds/MDSDaemon.cc @@ -302,6 +302,14 @@ void MDSDaemon::set_up_admin_socket() asok_hook, "dump snapshots"); ceph_assert(r == 0); + r = admin_socket->register_command("session ls name=filters,type=CephString,n=N,req=false", + asok_hook, + "List client sessions based on a filter"); + ceph_assert(r == 0); + r = admin_socket->register_command("client ls name=filters,type=CephString,n=N,req=false", + asok_hook, + "List client sessions based on a filter"); + ceph_assert(r == 0); r = admin_socket->register_command("session evict name=filters,type=CephString,n=N,req=false", asok_hook, "Evict client session(s) based on a filter"); @@ -592,8 +600,6 @@ void MDSDaemon::handle_command(const cref_t &m) const std::vector& MDSDaemon::get_commands() { static const std::vector commands = { - MDSCommand("session ls name=filters,type=CephString,n=N,req=false", "List client sessions"), - MDSCommand("client ls name=filters,type=CephString,n=N,req=false", "List client sessions"), MDSCommand("session config name=client_id,type=CephInt name=option,type=CephString name=value,type=CephString,req=false", "Config a client session"), MDSCommand("client config name=client_id,type=CephInt name=option,type=CephString name=value,type=CephString,req=false", diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 54ed67e1219e0..46624cca3453f 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -2476,12 +2476,17 @@ void MDSRankDispatcher::handle_asok_command( dout(4) << __func__ << ": waiting for OSD epoch " << target_epoch << dendl; cond.wait(); } - } else if (command == "session ls") { + } else if (command == "session ls" || + command == "client ls") { std::lock_guard l(mds_lock); - - heartbeat_reset(); - - dump_sessions(SessionFilter(), f); + std::vector filter_args; + cmd_getval(g_ceph_context, cmdmap, "filters", filter_args); + SessionFilter filter; + r = filter.parse(filter_args, &ss); + if (r != 0) { + goto out; + } + dump_sessions(filter, f); } else if (command == "session evict" || command == "client evict") { std::lock_guard l(mds_lock); @@ -3531,21 +3536,7 @@ bool MDSRankDispatcher::handle_command( std::string prefix; cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); - if (prefix == "session ls" || prefix == "client ls") { - std::vector filter_args; - cmd_getval(g_ceph_context, cmdmap, "filters", filter_args); - - SessionFilter filter; - *r = filter.parse(filter_args, ss); - if (*r != 0) { - return true; - } - - JSONFormatter f(true); - dump_sessions(filter, &f); - f.flush(*ds); - return true; - } else if (prefix == "session config" || prefix == "client config") { + if (prefix == "session config" || prefix == "client config") { int64_t client_id; std::string option; std::string value; -- 2.39.5