X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fmds%2FMDSDaemon.cc;fp=ceph%2Fsrc%2Fmds%2FMDSDaemon.cc;h=452d5bbf6602be0125b1b629a084790380251b82;hb=28e407b858acd3bddc89f68583571f771bb42e46;hp=d1a22df71ab9ef7d49ab4fe013560d491d9ac043;hpb=dfcb7b53b2e4fcd2a5af0240d4975adc711ab96e;p=ceph.git diff --git a/ceph/src/mds/MDSDaemon.cc b/ceph/src/mds/MDSDaemon.cc index d1a22df71..452d5bbf6 100644 --- a/ceph/src/mds/MDSDaemon.cc +++ b/ceph/src/mds/MDSDaemon.cc @@ -258,6 +258,11 @@ void MDSDaemon::set_up_admin_socket() asok_hook, "dump metadata cache for subtree"); assert(r == 0); + r = admin_socket->register_command("dump loads", + "dump loads", + asok_hook, + "dump metadata loads"); + assert(r == 0); r = admin_socket->register_command("session evict", "session evict name=client_id,type=CephString", asok_hook, @@ -327,6 +332,7 @@ void MDSDaemon::clean_up_admin_socket() admin_socket->unregister_command("dump cache"); admin_socket->unregister_command("cache status"); admin_socket->unregister_command("dump tree"); + admin_socket->unregister_command("dump loads"); admin_socket->unregister_command("session evict"); admin_socket->unregister_command("osdmap barrier"); admin_socket->unregister_command("session ls"); @@ -356,6 +362,7 @@ const char** MDSDaemon::get_tracked_conf_keys() const "mds_max_purge_ops", "mds_max_purge_ops_per_pg", "mds_max_purge_files", + "mds_inject_migrator_session_race", "clog_to_graylog", "clog_to_graylog_host", "clog_to_graylog_port", @@ -1262,7 +1269,8 @@ bool MDSDaemon::ms_handle_refused(Connection *con) bool MDSDaemon::ms_verify_authorizer(Connection *con, int peer_type, int protocol, bufferlist& authorizer_data, bufferlist& authorizer_reply, - bool& is_valid, CryptoKey& session_key) + bool& is_valid, CryptoKey& session_key, + std::unique_ptr *challenge) { Mutex::Locker l(mds_lock); if (stopping) { @@ -1294,7 +1302,7 @@ bool MDSDaemon::ms_verify_authorizer(Connection *con, int peer_type, is_valid = authorize_handler->verify_authorizer( cct, keys, authorizer_data, authorizer_reply, name, global_id, caps_info, - session_key); + session_key, nullptr, challenge); } else { dout(10) << __func__ << " no rotating_keys (yet), denied" << dendl; is_valid = false; @@ -1325,6 +1333,9 @@ bool MDSDaemon::ms_verify_authorizer(Connection *con, int peer_type, dout(10) << " new session " << s << " for " << s->info.inst << " con " << con << dendl; con->set_priv(s); s->connection = con; + if (mds_rank) { + mds_rank->kick_waiters_for_any_client_connection(); + } } else { dout(10) << " existing session " << s << " for " << s->info.inst << " existing con " << s->connection << ", new/authorizing con " << con << dendl;