From 64c309d7e18a975931b526e6f5d6f610c3a0d632 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Piotr=20Da=C5=82ek?= Date: Tue, 31 Jan 2017 16:07:18 +0100 Subject: [PATCH] OSD: allow client throttler to be adjusted on-fly, without restart MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This patch allows the osd_client_message_cap and osd_client_message_size_cap to be adjusted on-fly, using admin socket functionality. Fixes: http://tracker.ceph.com/issues/18791 Signed-off-by: Piotr Dałek --- src/osd/OSD.cc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 7afa5dc2005..c072edfd57d 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -9165,6 +9165,8 @@ const char** OSD::get_tracked_conf_keys() const "host", "fsid", "osd_recovery_delay_start", + "osd_client_message_size_cap", + "osd_client_message_cap", NULL }; return KEYS; @@ -9228,6 +9230,21 @@ void OSD::handle_conf_change(const struct md_config_t *conf, service.kick_recovery_queue(); } + if (changed.count("osd_client_message_cap")) { + uint64_t newval = cct->_conf->osd_client_message_cap; + Messenger::Policy pol = client_messenger->get_policy(entity_name_t::TYPE_CLIENT); + if (pol.throttler_messages && newval > 0) { + pol.throttler_messages->reset_max(newval); + } + } + if (changed.count("osd_client_message_size_cap")) { + uint64_t newval = cct->_conf->osd_client_message_size_cap; + Messenger::Policy pol = client_messenger->get_policy(entity_name_t::TYPE_CLIENT); + if (pol.throttler_bytes && newval > 0) { + pol.throttler_bytes->reset_max(newval); + } + } + check_config(); } -- 2.47.3