From a6db1b71102835ada48a9d4785d1588f365ea990 Mon Sep 17 00:00:00 2001 From: Krishnan Parthasarathi Date: Mon, 3 Aug 2015 13:28:09 +0530 Subject: [PATCH 256/279] client, rpc: make ping-timeout configurable for glusterfs clients Change-Id: Idd94adb0457aaffce7330f56f98cebafa2c4dae8 BUG: 1252359 Signed-off-by: Krishnan Parthasarathi Reviewed-on: http://review.gluster.org/11818 Tested-by: Gluster Build System Reviewed-by: Raghavendra G Tested-by: NetBSD Build System (cherry picked from commit 3403370ebeaf16567b79022c6ac48b2e0cd50db5) Reviewed-on: http://review.gluster.org/11848 Reviewed-on: https://code.engineering.redhat.com/gerrit/55045 Reviewed-by: Raghavendra Gowdappa Tested-by: Raghavendra Gowdappa --- rpc/rpc-lib/src/rpc-clnt.c | 15 +++++++++++++++ rpc/rpc-lib/src/rpc-clnt.h | 1 + xlators/protocol/client/src/client.c | 23 ++++++++++++++--------- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/rpc/rpc-lib/src/rpc-clnt.c b/rpc/rpc-lib/src/rpc-clnt.c index 2878372..5fbe072 100644 --- a/rpc/rpc-lib/src/rpc-clnt.c +++ b/rpc/rpc-lib/src/rpc-clnt.c @@ -1802,6 +1802,21 @@ out: void rpc_clnt_reconfig (struct rpc_clnt *rpc, struct rpc_clnt_config *config) { + if (config->ping_timeout) { + if (config->ping_timeout != rpc->conn.ping_timeout) + gf_log (rpc->conn.name, GF_LOG_INFO, + "changing ping timeout to %d (from %d)", + config->ping_timeout, + rpc->conn.ping_timeout); + + pthread_mutex_lock (&rpc->conn.lock); + { + rpc->conn.ping_timeout = config->ping_timeout; + } + pthread_mutex_unlock (&rpc->conn.lock); + + } + if (config->rpc_timeout) { if (config->rpc_timeout != rpc->conn.config.rpc_timeout) gf_log (rpc->conn.name, GF_LOG_INFO, diff --git a/rpc/rpc-lib/src/rpc-clnt.h b/rpc/rpc-lib/src/rpc-clnt.h index faae485..ee46a9a 100644 --- a/rpc/rpc-lib/src/rpc-clnt.h +++ b/rpc/rpc-lib/src/rpc-clnt.h @@ -125,6 +125,7 @@ struct rpc_clnt_config { int rpc_timeout; int remote_port; char * remote_host; + int ping_timeout; }; diff --git a/xlators/protocol/client/src/client.c b/xlators/protocol/client/src/client.c index fb45128..db7a07a 100644 --- a/xlators/protocol/client/src/client.c +++ b/xlators/protocol/client/src/client.c @@ -2374,21 +2374,22 @@ client_check_event_threads (xlator_t *this, clnt_conf_t *conf, int32_t old, int reconfigure (xlator_t *this, dict_t *options) { - clnt_conf_t *conf = NULL; - int ret = -1; - int subvol_ret = 0; - char *old_remote_subvol = NULL; - char *new_remote_subvol = NULL; - char *old_remote_host = NULL; - char *new_remote_host = NULL; - int32_t new_nthread = 0; + clnt_conf_t *conf = NULL; + int ret = -1; + int subvol_ret = 0; + char *old_remote_subvol = NULL; + char *new_remote_subvol = NULL; + char *old_remote_host = NULL; + char *new_remote_host = NULL; + int32_t new_nthread = 0; + struct rpc_clnt_config rpc_config = {0,}; conf = this->private; GF_OPTION_RECONF ("frame-timeout", conf->rpc_conf.rpc_timeout, options, int32, out); - GF_OPTION_RECONF ("ping-timeout", conf->opt.ping_timeout, + GF_OPTION_RECONF ("ping-timeout", rpc_config.ping_timeout, options, int32, out); GF_OPTION_RECONF ("event-threads", new_nthread, options, @@ -2430,6 +2431,10 @@ reconfigure (xlator_t *this, dict_t *options) } } + /* Reconfiguring client xlator's @rpc with new frame-timeout + * and ping-timeout */ + rpc_clnt_reconfig (conf->rpc, &rpc_config); + GF_OPTION_RECONF ("filter-O_DIRECT", conf->filter_o_direct, options, bool, out); -- 1.7.1