From 419c9926d9ed57cb60228bc95956a9a1471b92cb 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 (cherry picked from commit 64c309d7e18a975931b526e6f5d6f610c3a0d632) Conflicts: src/osd/OSD.cc (suppressed post-jewel option) --- src/osd/OSD.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index a5c92fb4811..a9e37534260 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -8940,6 +8940,8 @@ const char** OSD::get_tracked_conf_keys() const "clog_to_graylog_port", "host", "fsid", + "osd_client_message_size_cap", + "osd_client_message_cap", NULL }; return KEYS; @@ -8996,6 +8998,22 @@ void OSD::handle_conf_change(const struct md_config_t *conf, } } #endif + + 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