diff options
author | Kaushik BV <kaushikbv@gluster.com> | 2011-04-17 10:46:07 +0000 |
---|---|---|
committer | Anand Avati <avati@gluster.com> | 2011-04-17 21:41:03 -0700 |
commit | 3a621ae053a31db49f7adc506bd5ffbd24a0c64d (patch) | |
tree | 3b4393e35c96e694f45fdf3e1a0d37ce2c64e189 | |
parent | 4b813b3d14476a5cf6a3a54c32c2939a31fe9ba9 (diff) |
mgmt/glusterd : change of syntax of geo-replication command
master is referred as a volume name rather than a URL scheme.
old syntax:
> volume geo-replication start :vol-foo /bar/boo
new syntax:
> volume geo-replication start vol-foo /bar/boo
Signed-off-by: Kaushik BV <kaushikbv@gluster.com>
Signed-off-by: Anand Avati <avati@gluster.com>
BUG: 2786 (Having to prepend geo-replication master vol with colon spoils the UI)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2786
-rw-r--r-- | cli/src/cli-rpc-ops.c | 4 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 277 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.h | 2 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 44 |
4 files changed, 96 insertions, 231 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index b2e919132e3..c92f043c817 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -2601,7 +2601,7 @@ gf_cli3_1_gsync_get_command (gf1_cli_gsync_set_rsp rsp) if (!rsp.op_name) return -1; - snprintf (cmd, PATH_MAX, GSYNCD_PREFIX "/gsyncd -c %s/%s %s %s " + snprintf (cmd, PATH_MAX, GSYNCD_PREFIX "/gsyncd -c %s/%s :%s %s" " --config-get %s ", rsp.glusterd_workdir, GSYNC_CONF, rsp.master, rsp.slave, rsp.op_name); @@ -2611,7 +2611,7 @@ gf_cli3_1_gsync_get_command (gf1_cli_gsync_set_rsp rsp) */ } else if (rsp.config_type == GF_GSYNC_OPTION_TYPE_CONFIG_GET_ALL) { snprintf (cmd, PATH_MAX, GSYNCD_PREFIX"/gsyncd -c %s/%s " - "%s %s --config-get-all ", + ":%s %s --config-get-all ", rsp.glusterd_workdir, GSYNC_CONF, rsp.master, rsp.slave); diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index 2f5dbdc1505..75629f47c05 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -1704,24 +1704,14 @@ out: return ret; } -char * -volname_from_master (char *master) -{ - if (master == NULL) - return NULL; - - return gf_strdup (master+1); -} - -int -glusterd_gsync_get_cannonical_slave_name (char *cann, char *master, char *slave) +static int +glusterd_get_canon_url (char *cann, char *name, gf_boolean_t cann_esc) { FILE *in = NULL; char buff[PATH_MAX] = {0, }; char cmd[PATH_MAX] = {0, }; char *ptr = NULL; - char buffer[PATH_MAX] = {0, }; glusterd_conf_t *priv = NULL; int ret = 0; @@ -1730,30 +1720,19 @@ glusterd_gsync_get_cannonical_slave_name (char *cann, char *master, char *slave) priv = THIS->private; - snprintf (cmd, PATH_MAX, GSYNCD_PREFIX"/gsyncd" - " --canonicalize-url" - " %s %s", master, slave); + snprintf (cmd, PATH_MAX, GSYNCD_PREFIX"/gsyncd --canonicalize-%surl %s", + cann_esc? "escape-": "",name); if (!(in = popen(cmd, "r"))) { gf_log ("", GF_LOG_ERROR, "popen failed"); return -1; } ptr = fgets(buff, sizeof(buff), in); - if (ptr == NULL) { - ret = -1; - goto out; - } - - memset (buff, 0, PATH_MAX); - memset (buffer, 0, PATH_MAX); - - ptr = fgets(buff, sizeof(buff), in); if (ptr) { buff[strlen(buff)-1]='\0'; //strip off \n strncpy (cann, buff, PATH_MAX); } - out: ret |= pclose (in); if (ret) @@ -1767,11 +1746,7 @@ int glusterd_gsync_get_param_file (char *prmfile, const char *ext, char *master, char *slave, char *gl_workdir) { - FILE *in = NULL; char buff[PATH_MAX] = {0, }; - char cmd[PATH_MAX] = {0, }; - char *ptr = NULL; - char prmfolder[PATH_MAX] = {0, }; char *dotp = NULL; int ret = 0; @@ -1789,90 +1764,18 @@ glusterd_gsync_get_param_file (char *prmfile, const char *ext, char *master, return 0; } - snprintf (cmd, PATH_MAX, GSYNCD_PREFIX"/gsyncd" - " --canonicalize-escape-url" - " %s %s", master, slave); - if (!(in = popen(cmd, "r"))) { - gf_log ("", GF_LOG_ERROR, "popen failed"); - return -1; - } - - ptr = fgets(buff, sizeof(buff), in); - if (ptr) { - buff[strlen(buff)-1]='\0'; //strip off \n - snprintf (prmfolder, PATH_MAX, "%s/"GEOREP"/%s", gl_workdir, buff); - } else { - ret = -1; - goto out; - } - - memset (buff, 0, PATH_MAX); + ret = glusterd_get_canon_url (buff, slave, _gf_true); - ptr = fgets(buff, sizeof(buff), in); - if (ptr) { - buff[strlen(buff)-1]='\0'; //strip off \n - snprintf (prmfile, PATH_MAX, "%s/%s.%s", prmfolder, buff, ext); - } - - out: - ret |= pclose (in); - - if (ret) - gf_log ("", GF_LOG_ERROR, "popen failed"); - - return ret ? -1 : 0; -} - -int -glusterd_gsync_get_pid_file (char *pidfile, char *master, char *slave) -{ - FILE *in = NULL; - char buff[PATH_MAX] = {0, }; - char cmd[PATH_MAX] = {0, }; - char *ptr = NULL; - char buffer[PATH_MAX] = {0, }; - char pidfolder[PATH_MAX] = {0, }; - glusterd_conf_t *priv = NULL; - int ret = 0; - - GF_ASSERT (THIS); - - priv = THIS->private; - - snprintf (cmd, PATH_MAX, GSYNCD_PREFIX"/gsyncd --canonicalize-escape-url" - " %s %s", master, slave); - if (!(in = popen(cmd, "r"))) { - gf_log ("", GF_LOG_ERROR, "popen failed"); + if (ret) { + gf_log ("", GF_LOG_WARNING, "Unable to cannonicalize slave URL" + "of %s", slave); return -1; } - ptr = fgets(buff, sizeof(buff), in); - if (ptr) { - buff[strlen(buff)-1]='\0'; //strip off \n - snprintf (buffer, PATH_MAX, "%s/"GEOREP"/%s", priv->workdir, buff); - strncpy (pidfolder, buffer, PATH_MAX); - } else { - ret = -1; - goto out; - } - - memset (buff, 0, PATH_MAX); - memset (buffer, 0, PATH_MAX); - - ptr = fgets(buff, sizeof(buff), in); - if (ptr) { - buff[strlen(buff)-1]='\0'; //strip off \n - snprintf (buffer, PATH_MAX, "%s/%s.pid", pidfolder, buff); - strncpy (pidfile, buffer, PATH_MAX); - } - - out: - ret |= pclose (in); + snprintf (prmfile, PATH_MAX, "%s/"GEOREP"/%s/%s.%s", gl_workdir, master, + buff, ext); - if (ret) - gf_log ("", GF_LOG_ERROR, "popen failed"); - - return ret ? -1 : 0; + return 0; } static int @@ -2036,20 +1939,19 @@ _get_status_mst_slv (dict_t *this, char *key, data_t *value, void *data) glusterd_gsync_status_temp_t *param = NULL; char *slave = NULL; int ret = 0; - char master[PATH_MAX] = {0, }; param = (glusterd_gsync_status_temp_t *)data; + GF_ASSERT (param); + GF_ASSERT (param->volinfo); + slave = strchr(value->data, ':'); if (slave) slave ++; else return; - master[0] = ':'; - strcat (master, param->volinfo->volname); - - ret = glusterd_get_gsync_status_mst_slv(param->volinfo, master, + ret = glusterd_get_gsync_status_mst_slv(param->volinfo, slave, param->rsp_dict); } @@ -2151,20 +2053,18 @@ out: } static int -glusterd_remove_slave_in_info (glusterd_volinfo_t *volinfo, char *master, - char *slave,char *host_uuid, char **op_errstr) +glusterd_remove_slave_in_info (glusterd_volinfo_t *volinfo, char *slave, + char *host_uuid, char **op_errstr) { int ret = 0; glusterd_gsync_slaves_t status = {0, }; char cann_slave[PATH_MAX] = {0, }; GF_ASSERT (volinfo); - GF_ASSERT (master); GF_ASSERT (slave); GF_ASSERT (host_uuid); - ret = glusterd_gsync_get_cannonical_slave_name (cann_slave, master, - slave); + ret = glusterd_get_canon_url (cann_slave, slave, _gf_false); if (ret) goto out; @@ -2188,7 +2088,7 @@ glusterd_remove_slave_in_info (glusterd_volinfo_t *volinfo, char *master, } static int -glusterd_gsync_get_uuid (char *master, char *slave, glusterd_volinfo_t *vol, +glusterd_gsync_get_uuid (char *slave, glusterd_volinfo_t *vol, uuid_t uuid) { @@ -2205,12 +2105,10 @@ glusterd_gsync_get_uuid (char *master, char *slave, glusterd_volinfo_t *vol, priv = this->private; GF_ASSERT (priv); GF_ASSERT (vol); - GF_ASSERT (master); GF_ASSERT (slave); uuid_utoa_r (priv->uuid, host_uuid_str); - ret = glusterd_gsync_get_cannonical_slave_name (cann_slave, master, - slave); + ret = glusterd_get_canon_url (cann_slave, slave, _gf_false); if (ret) goto out; @@ -2261,8 +2159,8 @@ glusterd_check_gsync_running_local (char *master, char *slave, } static int -glusterd_store_slave_in_info (glusterd_volinfo_t *volinfo, char *master, - char *slave, char *host_uuid, char **op_errstr) +glusterd_store_slave_in_info (glusterd_volinfo_t *volinfo, char *slave, + char *host_uuid, char **op_errstr) { int ret = 0; glusterd_gsync_slaves_t status = {0, }; @@ -2270,9 +2168,11 @@ glusterd_store_slave_in_info (glusterd_volinfo_t *volinfo, char *master, char *value = NULL; char key[512] = {0, }; + GF_ASSERT (volinfo); + GF_ASSERT (slave); + GF_ASSERT (host_uuid); - ret = glusterd_gsync_get_cannonical_slave_name (cann_slave, master, - slave); + ret = glusterd_get_canon_url (cann_slave, slave, _gf_false); if (ret) goto out; @@ -2285,7 +2185,7 @@ glusterd_store_slave_in_info (glusterd_volinfo_t *volinfo, char *master, gf_log ("", GF_LOG_ERROR, GEOREP" has already been invoked for " "the %s (master) and %s (slave)" "from a different machine", - master, slave); + volinfo->volname, slave); *op_errstr = gf_strdup (GEOREP" already running in an an" "orhter machine"); ret = -1; @@ -2317,8 +2217,7 @@ glusterd_store_slave_in_info (glusterd_volinfo_t *volinfo, char *master, static int glusterd_op_verify_gsync_start_options (glusterd_volinfo_t *volinfo, - char *master, char *slave, - char **op_errstr) + char *slave, char **op_errstr) { int ret = -1; gf_boolean_t is_running = _gf_false; @@ -2330,7 +2229,6 @@ glusterd_op_verify_gsync_start_options (glusterd_volinfo_t *volinfo, this = THIS; GF_ASSERT (volinfo); - GF_ASSERT (master); GF_ASSERT (slave); GF_ASSERT (op_errstr); GF_ASSERT (this && this->private); @@ -2344,10 +2242,10 @@ glusterd_op_verify_gsync_start_options (glusterd_volinfo_t *volinfo, } /*Check if the gsync is already started in cmd. inited host * If so initiate add it into the glusterd's priv*/ - ret = glusterd_gsync_get_uuid (master, slave, volinfo, uuid); + ret = glusterd_gsync_get_uuid (slave, volinfo, uuid); if ((ret == 0) && (uuid_compare (priv->uuid, uuid) == 0)) { - ret = glusterd_check_gsync_running_local (master, slave, - &is_running); + ret = glusterd_check_gsync_running_local (volinfo->volname, + slave, &is_running); if (ret) { snprintf (msg, sizeof (msg), GEOREP" start option " "validation failed "); @@ -2355,7 +2253,7 @@ glusterd_op_verify_gsync_start_options (glusterd_volinfo_t *volinfo, } if (_gf_true == is_running) { snprintf (msg, sizeof (msg), GEOREP" %s %s already " - "started", master, slave); + "started", volinfo->volname, slave); ret = -1; goto out; } @@ -2386,8 +2284,7 @@ glusterd_check_gsync_running (glusterd_volinfo_t *volinfo, gf_boolean_t *flag) static int glusterd_op_verify_gsync_running (glusterd_volinfo_t *volinfo, - char *master, char *slave, - char **op_errstr) + char *slave, char **op_errstr) { int ret = -1; char msg[2048] = {0}; @@ -2396,7 +2293,6 @@ glusterd_op_verify_gsync_running (glusterd_volinfo_t *volinfo, GF_ASSERT (THIS && THIS->private); GF_ASSERT (volinfo); - GF_ASSERT (master); GF_ASSERT (slave); GF_ASSERT (op_errstr); @@ -2408,7 +2304,7 @@ glusterd_op_verify_gsync_running (glusterd_volinfo_t *volinfo, goto out; } - ret = glusterd_gsync_get_uuid (master, slave, volinfo, uuid); + ret = glusterd_gsync_get_uuid (slave, volinfo, uuid); if (ret == -1) { snprintf (msg, sizeof (msg), GEOREP" session is not active"); goto out; @@ -2501,7 +2397,6 @@ glusterd_op_stage_gsync_set (dict_t *dict, char **op_errstr) int ret = 0; int type = 0; char *volname = NULL; - char *master = NULL; char *slave = NULL; gf_boolean_t exists = _gf_false; glusterd_volinfo_t *volinfo = NULL; @@ -2521,16 +2416,9 @@ glusterd_op_stage_gsync_set (dict_t *dict, char **op_errstr) goto out; } - ret = glusterd_op_gsync_args_get (dict, op_errstr, &master, &slave); + ret = glusterd_op_gsync_args_get (dict, op_errstr, &volname, &slave); if (ret) goto out; - volname = volname_from_master (master); - if (volname == NULL) { - gf_log ("", GF_LOG_WARNING, "volname couldn't be found"); - *op_errstr = gf_strdup ("volname not found"); - ret = -1; - goto out; - } exists = glusterd_check_volume_exists (volname); ret = glusterd_volinfo_find (volname, &volinfo); @@ -2545,14 +2433,14 @@ glusterd_op_stage_gsync_set (dict_t *dict, char **op_errstr) switch (type) { case GF_GSYNC_OPTION_TYPE_START: - ret = glusterd_op_verify_gsync_start_options (volinfo, master, - slave, op_errstr); + ret = glusterd_op_verify_gsync_start_options (volinfo, slave, + op_errstr); if (ret) goto out; break; case GF_GSYNC_OPTION_TYPE_STOP: - ret = glusterd_op_verify_gsync_running (volinfo, master, - slave, op_errstr); + ret = glusterd_op_verify_gsync_running (volinfo, slave, + op_errstr); if (ret) goto out; break; @@ -2564,9 +2452,6 @@ glusterd_op_stage_gsync_set (dict_t *dict, char **op_errstr) } ret = 0; out: - if (volname) - GF_FREE (volname); - return ret; } @@ -4260,7 +4145,7 @@ gsync_config_set (char *master, char *slave, goto out; } - ret = snprintf (cmd, 1024, GSYNCD_PREFIX"/gsyncd -c %s/%s %s %s" + ret = snprintf (cmd, 1024, GSYNCD_PREFIX"/gsyncd -c %s/%s :%s %s" " --config-set %s \" %s \"", priv->workdir, GSYNC_CONF, master, slave, op_name, op_value); if (ret <= 0) { @@ -4324,7 +4209,7 @@ gsync_config_del (char *master, char *slave, goto out; } - ret = snprintf (cmd, PATH_MAX, GSYNCD_PREFIX"/gsyncd -c %s/%s %s %s" + ret = snprintf (cmd, PATH_MAX, GSYNCD_PREFIX"/gsyncd -c %s/%s :%s %s" " --config-del %s ", priv->workdir, GSYNC_CONF, master, slave, op_name); if (ret <= 0) { @@ -4513,10 +4398,8 @@ out: } int -glusterd_set_marker_gsync (char *master) +glusterd_set_marker_gsync (glusterd_volinfo_t *volinfo) { - char *volname = NULL; - glusterd_volinfo_t *volinfo = NULL; int ret = -1; int marker_set = _gf_false; char *gsync_status = NULL; @@ -4527,14 +4410,6 @@ glusterd_set_marker_gsync (char *master) priv = THIS->private; - volname = volname_from_master (master); - - ret = glusterd_volinfo_find (volname, &volinfo); - if (ret) { - gf_log ("", GF_LOG_ERROR, "Volume not Found"); - ret = -1; - goto out; - } marker_set = glusterd_volinfo_get_boolean (volinfo, VKEY_MARKER_XTIME); if (marker_set == -1) { gf_log ("", GF_LOG_ERROR, "failed to get the marker status"); @@ -4560,19 +4435,18 @@ glusterd_set_marker_gsync (char *master) goto out; } } + ret = 0; out: - if (volname) - GF_FREE (volname); + gf_log ("", GF_LOG_DEBUG, "Returning %d", ret); return ret; - } int -glusterd_get_gsync_status_mst_slv( glusterd_volinfo_t *volinfo, char *master, +glusterd_get_gsync_status_mst_slv( glusterd_volinfo_t *volinfo, char *slave, dict_t *rsp_dict) { uuid_t uuid = {0, }; @@ -4580,18 +4454,24 @@ glusterd_get_gsync_status_mst_slv( glusterd_volinfo_t *volinfo, char *master, int ret = 0; GF_ASSERT (volinfo); - GF_ASSERT (master); GF_ASSERT (slave); GF_ASSERT (THIS); GF_ASSERT (THIS->private); priv = THIS->private; - ret = glusterd_gsync_get_uuid (master, slave, volinfo, uuid); + ret = glusterd_gsync_get_uuid (slave, volinfo, uuid); if ((ret == 0) && (uuid_compare (priv->uuid, uuid) != 0)) goto out; - ret = glusterd_read_status_file (master, slave, rsp_dict); + if (ret) { + ret = 0; + gf_log ("", GF_LOG_INFO, "geo-replication status %s %s :" + "session is not active", volinfo->volname, slave); + goto out; + } + + ret = glusterd_read_status_file (volinfo->volname, slave, rsp_dict); out: gf_log ("", GF_LOG_DEBUG, "Returning with %d", ret); return ret; @@ -4639,7 +4519,6 @@ out: static int glusterd_get_gsync_status (dict_t *dict, char **op_errstr, dict_t *rsp_dict) { - char *master = NULL; char *slave = NULL; char *volname = NULL; char errmsg[PATH_MAX] = {0, }; @@ -4654,18 +4533,6 @@ glusterd_get_gsync_status (dict_t *dict, char **op_errstr, dict_t *rsp_dict) goto out; } - ret = dict_get_str (dict, "master", &master); - if (ret < 0) - goto out; - - volname = volname_from_master (master); - if (volname == NULL) { - gf_log ("", GF_LOG_WARNING, "volname couldn't be found"); - *op_errstr = gf_strdup ("volname not found"); - ret = -1; - goto out; - } - exists = glusterd_check_volume_exists (volname); ret = glusterd_volinfo_find (volname, &volinfo); if ((ret) || (!exists)) { @@ -4684,16 +4551,9 @@ glusterd_get_gsync_status (dict_t *dict, char **op_errstr, dict_t *rsp_dict) goto out; } - ret = dict_get_str (dict, "slave", &slave); - if (ret < 0) - goto out; - - ret = glusterd_get_gsync_status_mst_slv (volinfo, master, - slave, rsp_dict); + ret = glusterd_get_gsync_status_mst_slv (volinfo, slave, rsp_dict); out: - if (volname) - GF_FREE (volname); gf_log ("", GF_LOG_DEBUG, "Returning %d", ret); return ret; @@ -4704,7 +4564,6 @@ glusterd_get_gsync_status (dict_t *dict, char **op_errstr, dict_t *rsp_dict) int glusterd_op_gsync_set (dict_t *dict, char **op_errstr, dict_t *rsp_dict) { - char *master = NULL; int32_t ret = -1; int32_t type = -1; dict_t *ctx = NULL; @@ -4740,7 +4599,7 @@ glusterd_op_gsync_set (dict_t *dict, char **op_errstr, dict_t *rsp_dict) } - ret = dict_get_str (dict, "master", &master); + ret = dict_get_str (dict, "master", &volname); if (ret < 0) goto out; @@ -4748,43 +4607,42 @@ glusterd_op_gsync_set (dict_t *dict, char **op_errstr, dict_t *rsp_dict) if (ret < 0) goto out; - volname = volname_from_master (master); - ret = glusterd_volinfo_find (volname, &volinfo); if (ret) { - gf_log ("", GF_LOG_ERROR, "Volinfo for %s (master) not found", + gf_log ("", GF_LOG_WARNING, "Volinfo for %s (master) not found", volname); goto out; } if (type == GF_GSYNC_OPTION_TYPE_START) { - ret = glusterd_set_marker_gsync (master); + ret = glusterd_set_marker_gsync (volinfo); if (ret != 0) { gf_log ("", GF_LOG_WARNING, "marker start failed"); *op_errstr = gf_strdup ("failed to initialize indexing"); ret = -1; goto out; } - ret = glusterd_store_slave_in_info(volinfo, master, slave, + ret = glusterd_store_slave_in_info(volinfo, slave, host_uuid, op_errstr); if (ret) goto out; - ret = glusterd_start_gsync (volinfo->volname, slave, host_uuid, op_errstr); + ret = glusterd_start_gsync (volname, slave, host_uuid, + op_errstr); } if (type == GF_GSYNC_OPTION_TYPE_STOP) { - ret = glusterd_gsync_get_uuid (master, slave, volinfo, uuid); + ret = glusterd_gsync_get_uuid (slave, volinfo, uuid); if (ret) { gf_log ("", GF_LOG_WARNING, GEOREP" is not set up for" - "%s(master) and %s(slave)", master, slave); + "%s(master) and %s(slave)", volname, slave); *op_errstr = strdup (GEOREP" is not set up"); goto out; } - ret = glusterd_remove_slave_in_info(volinfo, master, slave, + ret = glusterd_remove_slave_in_info(volinfo, slave, host_uuid, op_errstr); if (ret) goto out; @@ -4793,20 +4651,19 @@ glusterd_op_gsync_set (dict_t *dict, char **op_errstr, dict_t *rsp_dict) goto out; } - ret = stop_gsync (master, slave, op_errstr); + ret = stop_gsync (volname, slave, op_errstr); if (ret) goto out; } if (type == GF_GSYNC_OPTION_TYPE_CONFIGURE) { - ret = glusterd_gsync_configure (master, slave, dict, op_errstr); + ret = glusterd_gsync_configure (volname, slave, dict, + op_errstr); goto out; } out: - if (volname) - GF_FREE (volname); gf_log ("", GF_LOG_DEBUG,"Returning %d", ret); return ret; } diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.h b/xlators/mgmt/glusterd/src/glusterd-op-sm.h index d550b108cca..78036acb782 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.h +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.h @@ -298,7 +298,7 @@ glusterd_are_all_volumes_stopped (); int glusterd_stop_bricks (glusterd_volinfo_t *volinfo); int -glusterd_get_gsync_status_mst_slv( glusterd_volinfo_t *volinfo, char *master, +glusterd_get_gsync_status_mst_slv( glusterd_volinfo_t *volinfo, char *slave, dict_t *rsp_dict); int gsync_status (char *master, char *slave, int *status); diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 815b263384b..8001cb3db47 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -3201,7 +3201,6 @@ glusterd_start_gsync (char *master, char *slave, char *uuid_str, char *tslash = NULL; xlator_t *this = NULL; glusterd_conf_t *priv = NULL; - char master_url[GLUSTERD_MAX_VOLUME_NAME + 8] = {0}; char msg[3*PATH_MAX] = {0}; this = THIS; @@ -3213,11 +3212,10 @@ glusterd_start_gsync (char *master, char *slave, char *uuid_str, if (strcmp (local_uuid_str, uuid_str)) goto out; - snprintf (master_url, sizeof (master_url), ":%s", master); - ret = gsync_status (master_url, slave, &status); + ret = gsync_status (master, slave, &status); if (status == 0) goto out; - ret = glusterd_gsync_get_param_file (prmfile, "pid", master_url, + ret = glusterd_gsync_get_param_file (prmfile, "pid", master, slave, priv->workdir); if (ret == -1) { snprintf (msg, sizeof (msg), "failed to create the pidfile string"); @@ -3237,39 +3235,46 @@ glusterd_start_gsync (char *master, char *slave, char *uuid_str, } memset (cmd, 0, sizeof (cmd)); - ret = snprintf (cmd, PATH_MAX, GSYNCD_PREFIX "/gsyncd -c %s/%s %s %s" + ret = snprintf (cmd, PATH_MAX, GSYNCD_PREFIX "/gsyncd -c %s/%s :%s %s" " --config-set pid-file %s", priv->workdir, - GSYNC_CONF, master_url, slave, prmfile); + GSYNC_CONF, master, slave, prmfile); if (ret <= 0) { ret = -1; snprintf (msg, sizeof (msg), "failed to construct the " - "config set command for %s %s", master_url, slave); + "config set command for %s %s", master, slave); + gf_log ("", GF_LOG_WARNING, "failed to construct the " + "config set command for %s %s", master, slave); goto out; } ret = gf_system (cmd); if (ret) { snprintf (msg, sizeof (msg), "failed to set the pid " - "option for %s %s", master_url, slave); + "option for %s %s", master, slave); + gf_log ("", GF_LOG_WARNING, "failed to set the pid " + "option for %s %s", master, slave); goto out; } ret = glusterd_gsync_get_param_file (prmfile, "status", NULL, NULL, NULL); if (ret != -1) - ret = snprintf (cmd, PATH_MAX, GSYNCD_PREFIX "/gsyncd -c %s/%s %s %s" - " --config-set state-file %s", priv->workdir, - GSYNC_CONF, master_url, slave, prmfile); + ret = snprintf (cmd, PATH_MAX, GSYNCD_PREFIX "/gsyncd -c %s/%s " + ":%s %s --config-set state-file %s", + priv->workdir,GSYNC_CONF, master, slave, + prmfile); if (ret >= PATH_MAX) ret = -1; if (ret != -1) ret = gf_system (cmd) ? -1 : 0; if (ret == -1) { snprintf (msg, sizeof (msg), "failed to set status file " - "for %s %s", master_url, slave); + "for %s %s", master, slave); + gf_log ("", GF_LOG_WARNING, "failed to set status file " + "for %s %s", master, slave); goto out; } - ret = glusterd_gsync_get_param_file (prmfile, "log", master_url, + ret = glusterd_gsync_get_param_file (prmfile, "log", master, slave, DEFAULT_LOG_FILE_DIRECTORY); if (ret == -1) { snprintf (msg, sizeof (msg), "failed to construct the " @@ -3310,22 +3315,25 @@ glusterd_start_gsync (char *master, char *slave, char *uuid_str, *tslash = '/'; } - ret = snprintf (cmd, PATH_MAX, GSYNCD_PREFIX "/gsyncd -c %s/%s %s %s" + ret = snprintf (cmd, PATH_MAX, GSYNCD_PREFIX "/gsyncd -c %s/%s :%s %s" " --config-set log-file %s", priv->workdir, - GSYNC_CONF, master_url, slave, prmfile); + GSYNC_CONF, master, slave, prmfile); if (ret >= PATH_MAX) ret = -1; if (ret != -1) ret = gf_system (cmd) ? -1 : 0; if (ret == -1) { snprintf (msg, sizeof (msg), "failed to set status file " - "for %s %s", master_url, slave); + "for %s %s", master, slave); + gf_log ("", GF_LOG_WARNING, "failed to set status file " + "for %s %s", master, slave); goto out; } memset (cmd, 0, sizeof (cmd)); - ret = snprintf (cmd, PATH_MAX, GSYNCD_PREFIX "/gsyncd --monitor -c %s/%s %s %s" - , priv->workdir, GSYNC_CONF, master_url, slave); + ret = snprintf (cmd, PATH_MAX, GSYNCD_PREFIX "/gsyncd --monitor -c" + "%s/%s :%s %s", priv->workdir, GSYNC_CONF, master, + slave); if (ret <= 0) { ret = -1; goto out; |