summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAvra Sengupta <asengupt@redhat.com>2013-09-10 15:14:52 +0530
committerAnand Avati <avati@redhat.com>2013-09-21 23:13:57 -0700
commit4152ef34ec08e09e885334955afe3ec88e798eb5 (patch)
tree4b96fcaccb9194a5012564269a6ec33ac0fef619
parent7f608415063f04a1035bfe7d0f8ddfb9f0215e5c (diff)
glusterd/cli: Status detail cli parse check and vol geo status crash fix
Change-Id: I1841864273fc4242de15fbfcf76fd5de40269f28 BUG: 1006249 Signed-off-by: Avra Sengupta <asengupt@redhat.com> Reviewed-on: http://review.gluster.org/5889 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Amar Tumballi <amarts@redhat.com> Reviewed-by: Anand Avati <avati@redhat.com>
-rw-r--r--cli/src/cli-cmd-parser.c7
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-geo-rep.c19
2 files changed, 19 insertions, 7 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c
index 547f1d9..33a6c01 100644
--- a/cli/src/cli-cmd-parser.c
+++ b/cli/src/cli-cmd-parser.c
@@ -1810,6 +1810,13 @@ cli_cmd_gsync_set_parse (const char **words, int wordcount, dict_t **options)
if (slavei == 3)
masteri = 2;
} else if (i <= 3) {
+ if (!strcmp ((char *)words[wordcount-1], "detail")) {
+ /* For status detail it is mandatory to provide
+ * both master and slave */
+ ret = -1;
+ goto out;
+ }
+
/* no $s, can only be status cmd
* (with either a single $m before it or nothing)
* -- these conditions imply that i <= 3 after
diff --git a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c
index 4d206eb..8bdb945 100644
--- a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c
+++ b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c
@@ -928,7 +928,7 @@ _get_status_mst_slv (dict_t *this, char *key, data_t *value, void *data)
char *slave_buf = NULL;
char *slave_ip = NULL;
char *slave_vol = NULL;
- char **errmsg = NULL;
+ char *errmsg = NULL;
char conf_path[PATH_MAX] = "";
int ret = -1;
glusterd_conf_t *priv = NULL;
@@ -950,10 +950,14 @@ _get_status_mst_slv (dict_t *this, char *key, data_t *value, void *data)
return 0;
slave++;
- ret = glusterd_get_slave_info (slave, &slave_ip, &slave_vol, errmsg);
+ ret = glusterd_get_slave_info (slave, &slave_ip, &slave_vol, &errmsg);
if (ret) {
- gf_log ("", GF_LOG_ERROR,
- "Unable to fetch slave details.");
+ if (errmsg)
+ gf_log ("", GF_LOG_ERROR, "Unable to fetch "
+ "slave details. Error: %s", errmsg);
+ else
+ gf_log ("", GF_LOG_ERROR,
+ "Unable to fetch slave details.");
ret = -1;
goto out;
}
@@ -1767,7 +1771,6 @@ glusterd_mountbroker_check (char **slave_ip, char **op_errstr)
GF_ASSERT (slave_ip);
GF_ASSERT (*slave_ip);
- GF_ASSERT (op_errstr);
/* Checking if hostname has user specified */
host = strstr (*slave_ip, "@");
@@ -1786,7 +1789,8 @@ glusterd_mountbroker_check (char **slave_ip, char **op_errstr)
errmsg[ret] = '\0';
gf_log ("", GF_LOG_ERROR, "%s", errmsg);
ret = -1;
- *op_errstr = gf_strdup (errmsg);
+ if (op_errstr)
+ *op_errstr = gf_strdup (errmsg);
goto out;
}
@@ -1799,7 +1803,8 @@ glusterd_mountbroker_check (char **slave_ip, char **op_errstr)
"Non-root username (%s@%s) not allowed.",
username, tmp);
errmsg[ret] = '\0';
- *op_errstr = gf_strdup (errmsg);
+ if (op_errstr)
+ *op_errstr = gf_strdup (errmsg);
gf_log ("", GF_LOG_ERROR,
"Non-Root username not allowed.");
ret = -1;