diff options
| -rw-r--r-- | rpc/rpc-lib/src/rpc-clnt.c | 15 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/rpc-clnt.h | 1 | ||||
| -rw-r--r-- | 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 48bd35ce084..7bc9010f0b9 100644 --- a/rpc/rpc-lib/src/rpc-clnt.c +++ b/rpc/rpc-lib/src/rpc-clnt.c @@ -1793,6 +1793,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 faae4855a6c..ee46a9a9263 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 ea0a9d873ab..fcf6e375af8 100644 --- a/xlators/protocol/client/src/client.c +++ b/xlators/protocol/client/src/client.c @@ -2369,21 +2369,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, @@ -2425,6 +2426,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);  | 
