diff options
author | Krishnan Parthasarathi <kparthas@redhat.com> | 2013-12-04 15:55:01 +0530 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2013-12-04 10:07:41 -0800 |
commit | e967e5c5ab42359b765d602abb439b579d7a7423 (patch) | |
tree | e50e71c7b9efa6debd9c9f598ed1a392f4e80931 | |
parent | ae540f8e2732ab1bd0fbeabd4d4f5c6f2f417914 (diff) |
glusterd: create rpc obj for rebalance only if absent
Change-Id: Iff305023577ff92a8f43f24dafcf201f86805769
BUG: 1038051
Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-on: http://review.gluster.org/6423
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-rebalance.c | 48 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 2 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd.h | 3 |
3 files changed, 15 insertions, 38 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c index 1b6ee293ae3..7911c3d210d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c +++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c @@ -195,7 +195,6 @@ glusterd_handle_defrag_start (glusterd_volinfo_t *volinfo, char *op_errstr, char sockfile[PATH_MAX] = {0,}; char pidfile[PATH_MAX] = {0,}; char logfile[PATH_MAX] = {0,}; - dict_t *options = NULL; char valgrind_logfile[PATH_MAX] = {0,}; priv = THIS->private; @@ -286,26 +285,10 @@ glusterd_handle_defrag_start (glusterd_volinfo_t *volinfo, char *op_errstr, sleep (5); - /* Setting frame-timeout to 10mins (600seconds). - * Unix domain sockets ensures that the connection is reliable. The - * default timeout of 30mins used for unreliable network connections is - * too long for unix domain socket connections. - */ - ret = rpc_transport_unix_options_build (&options, sockfile, 600); - if (ret) { - gf_log (THIS->name, GF_LOG_ERROR, "Unix options build failed"); - goto out; - } - - synclock_unlock (&priv->big_lock); - ret = glusterd_rpc_create (&defrag->rpc, options, - glusterd_defrag_notify, volinfo); - synclock_lock (&priv->big_lock); - if (ret) { - gf_log (THIS->name, GF_LOG_ERROR, "RPC create failed"); - goto out; - } + ret = glusterd_rebalance_rpc_create (volinfo); + //FIXME: this cbk is passed as NULL in all occurrences. May be + //we never needed it. if (cbk) defrag->cbk_fn = cbk; @@ -316,28 +299,23 @@ out: int -glusterd_rebalance_rpc_create (glusterd_volinfo_t *volinfo, - glusterd_conf_t *priv, int cmd) +glusterd_rebalance_rpc_create (glusterd_volinfo_t *volinfo) { dict_t *options = NULL; char sockfile[PATH_MAX] = {0,}; int ret = -1; - glusterd_defrag_info_t *defrag = NULL; + glusterd_defrag_info_t *defrag = volinfo->rebal.defrag; + glusterd_conf_t *priv = THIS->private; - if (!volinfo->rebal.defrag) - volinfo->rebal.defrag = - GF_CALLOC (1, sizeof (*volinfo->rebal.defrag), - gf_gld_mt_defrag_info); - - if (!volinfo->rebal.defrag) + //rebalance process is not started + if (!defrag) goto out; - defrag = volinfo->rebal.defrag; - - defrag->cmd = cmd; - - LOCK_INIT (&defrag->lock); - + //rpc obj for rebalance process already in place. + if (defrag->rpc) { + ret = 0; + goto out; + } GLUSTERD_GET_DEFRAG_SOCK_FILE (sockfile, volinfo, priv); /* Setting frame-timeout to 10mins (600seconds). diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index aba37c7fd9b..8cbff80f7de 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -6708,7 +6708,7 @@ glusterd_volume_defrag_restart (glusterd_volinfo_t *volinfo, char *op_errstr, glusterd_handle_defrag_start (volinfo, op_errstr, len, cmd, cbk, volinfo->rebal.op); } else { - glusterd_rebalance_rpc_create (volinfo, priv, cmd); + glusterd_rebalance_rpc_create (volinfo); } return ret; diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h index d1c03d37b3b..e1e9e591f39 100644 --- a/xlators/mgmt/glusterd/src/glusterd.h +++ b/xlators/mgmt/glusterd/src/glusterd.h @@ -725,8 +725,7 @@ int glusterd_handle_defrag_start (glusterd_volinfo_t *volinfo, char *op_errstr, size_t len, int cmd, defrag_cbk_fn_t cbk, glusterd_op_t op); int -glusterd_rebalance_rpc_create (glusterd_volinfo_t *volinfo, - glusterd_conf_t *priv, int cmd); +glusterd_rebalance_rpc_create (glusterd_volinfo_t *volinfo); int glusterd_handle_cli_heal_volume (rpcsvc_request_t *req); |