summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-mgmt.c
diff options
context:
space:
mode:
authorJoseph Fernandes <josferna@redhat.com>2014-05-28 13:56:04 +0530
committerKaushal M <kaushal@redhat.com>2014-07-02 02:19:37 -0700
commit831efecf927788f26b630cb82d5d6ff4af411a3d (patch)
treecee0cd0b3925185f72b5b6e7996717df9fb69e0e /xlators/mgmt/glusterd/src/glusterd-mgmt.c
parent858b570a0c62d31416f0aee8c385b3118a1fad43 (diff)
glusterd/snapshot : Fix for snap create preval for remote peer err msg
Fix for the snap create prevalidation error collation when remote peer failed. Change-Id: If9563580eae4d9bc4d4d795f0b434f2c85b94007 BUG: 1101993 Signed-off-by: Joseph Fernandes <josferna@redhat.com> Reviewed-on: http://review.gluster.org/7899 Reviewed-by: Rajesh Joseph <rjoseph@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijaikumar Mallikarjuna <vmallika@redhat.com> Reviewed-by: Kaushal M <kaushal@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-mgmt.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-mgmt.c71
1 files changed, 41 insertions, 30 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-mgmt.c b/xlators/mgmt/glusterd/src/glusterd-mgmt.c
index e93afb27dab..52b4184ee7a 100644
--- a/xlators/mgmt/glusterd/src/glusterd-mgmt.c
+++ b/xlators/mgmt/glusterd/src/glusterd-mgmt.c
@@ -25,7 +25,7 @@
extern struct rpc_clnt_program gd_mgmt_v3_prog;
-static void
+void
gd_mgmt_v3_collate_errors (struct syncargs *args, int op_ret, int op_errno,
char *op_errstr, int op_code,
glusterd_peerinfo_t *peerinfo, u_char *uuid)
@@ -35,6 +35,9 @@ gd_mgmt_v3_collate_errors (struct syncargs *args, int op_ret, int op_errno,
char op_err[PATH_MAX] = "";
int32_t len = -1;
xlator_t *this = NULL;
+ int is_operrstr_blk = 0;
+ char *err_string = NULL;
+ char *cli_err_str = NULL;
this = THIS;
GF_ASSERT (this);
@@ -50,68 +53,76 @@ gd_mgmt_v3_collate_errors (struct syncargs *args, int op_ret, int op_errno,
else
peer_str = uuid_utoa (uuid);
- if (op_errstr && strcmp (op_errstr, "")) {
- len = snprintf (err_str, sizeof(err_str) - 1,
- "Error: %s", op_errstr);
- err_str[len] = '\0';
- }
+ is_operrstr_blk = (op_errstr && strcmp (op_errstr, ""));
+ err_string = (is_operrstr_blk) ? op_errstr : err_str;
switch (op_code) {
case GLUSTERD_MGMT_V3_LOCK:
{
- len = snprintf (op_err, sizeof(op_err) - 1,
+ len = snprintf (op_err, sizeof(op_err),
"Locking failed "
- "on %s. %s", peer_str, err_str);
+ "on %s. %s", peer_str,
+ err_string);
break;
}
case GLUSTERD_MGMT_V3_PRE_VALIDATE:
{
- len = snprintf (op_err, sizeof(op_err) - 1,
+ len = snprintf (op_err, sizeof(op_err),
"Pre Validation failed "
- "on %s. %s", peer_str, err_str);
+ "on %s. %s", peer_str,
+ err_string);
break;
}
case GLUSTERD_MGMT_V3_BRICK_OP:
{
- len = snprintf (op_err, sizeof(op_err) - 1,
+ len = snprintf (op_err, sizeof(op_err),
"Brick ops failed "
- "on %s. %s", peer_str, err_str);
+ "on %s. %s", peer_str,
+ err_string);
break;
}
case GLUSTERD_MGMT_V3_COMMIT:
{
- len = snprintf (op_err, sizeof(op_err) - 1,
- "Commit failed on %s. %s",
- peer_str, err_str);
+ len = snprintf (op_err, sizeof(op_err),
+ "Commit failed"
+ " on %s. %s", peer_str,
+ err_string);
break;
}
case GLUSTERD_MGMT_V3_POST_VALIDATE:
{
- len = snprintf (op_err, sizeof(op_err) - 1,
+ len = snprintf (op_err, sizeof(op_err),
"Post Validation failed "
- "on %s. %s", peer_str, err_str);
+ "on %s. %s", peer_str,
+ err_string);
break;
}
case GLUSTERD_MGMT_V3_UNLOCK:
{
- len = snprintf (op_err, sizeof(op_err) - 1,
+ len = snprintf (op_err, sizeof(op_err),
"Unlocking failed "
- "on %s. %s", peer_str, err_str);
+ "on %s. %s", peer_str,
+ err_string);
break;
}
+ default :
+ len = snprintf (op_err, sizeof(op_err),
+ "Unknown error! "
+ "on %s. %s", peer_str,
+ err_string);
}
- op_err[len] = '\0';
+
+ cli_err_str = ((is_operrstr_blk) ? op_errstr : op_err);
if (args->errstr) {
- len = snprintf (err_str, sizeof(err_str) - 1,
- "%s\n%s", args->errstr,
- op_err);
+ len = snprintf (err_str, sizeof(err_str),
+ "%s\n%s", args->errstr,
+ cli_err_str);
GF_FREE (args->errstr);
args->errstr = NULL;
} else
- len = snprintf (err_str, sizeof(err_str) - 1,
- "%s", op_err);
- err_str[len] = '\0';
+ len = snprintf (err_str, sizeof(err_str),
+ "%s", cli_err_str);
gf_log (this->name, GF_LOG_ERROR, "%s", op_err);
args->errstr = gf_strdup (err_str);
@@ -567,7 +578,7 @@ out:
if (rsp_dict)
dict_unref (rsp_dict);
- gd_mgmt_v3_collate_errors (args, op_ret, op_errno, NULL,
+ gd_mgmt_v3_collate_errors (args, op_ret, op_errno, rsp.op_errstr,
GLUSTERD_MGMT_V3_PRE_VALIDATE,
peerinfo, rsp.uuid);
@@ -802,7 +813,7 @@ gd_mgmt_v3_brick_op_cbk_fn (struct rpc_req *req, struct iovec *iov,
op_errno = rsp.op_errno;
out:
- gd_mgmt_v3_collate_errors (args, op_ret, op_errno, NULL,
+ gd_mgmt_v3_collate_errors (args, op_ret, op_errno, rsp.op_errstr,
GLUSTERD_MGMT_V3_BRICK_OP,
peerinfo, rsp.uuid);
@@ -1032,7 +1043,7 @@ out:
if (rsp_dict)
dict_unref (rsp_dict);
- gd_mgmt_v3_collate_errors (args, op_ret, op_errno, NULL,
+ gd_mgmt_v3_collate_errors (args, op_ret, op_errno, rsp.op_errstr,
GLUSTERD_MGMT_V3_COMMIT,
peerinfo, rsp.uuid);
@@ -1230,7 +1241,7 @@ gd_mgmt_v3_post_validate_cbk_fn (struct rpc_req *req, struct iovec *iov,
op_errno = rsp.op_errno;
out:
- gd_mgmt_v3_collate_errors (args, op_ret, op_errno, NULL,
+ gd_mgmt_v3_collate_errors (args, op_ret, op_errno, rsp.op_errstr,
GLUSTERD_MGMT_V3_POST_VALIDATE,
peerinfo, rsp.uuid);
if (rsp.op_errstr)