summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-mgmt.c
diff options
context:
space:
mode:
authorAvra Sengupta <asengupt@redhat.com>2015-05-05 10:58:10 +0530
committerKrishnan Parthasarathi <kparthas@redhat.com>2015-05-28 19:38:05 -0700
commit4397d7e72fdff6f01c59b72eebea421f23c1a392 (patch)
tree8c09329c2fbccaf5cb8a4c80ed8323a670ef0aa1 /xlators/mgmt/glusterd/src/glusterd-mgmt.c
parente6934debda3a67b5666f1aa30b33c5267de49d84 (diff)
glusterd/snapshot: Return correct errno in events of failure - PATCH 1
RETCODE ERROR ------------------------------------------- 30800 Internal Error 30801 Another Transaction In Progress Change-Id: Ica7fd2e513b2c28717b6df73cfb2667725dbf057 BUG: 1212413 Signed-off-by: Avra Sengupta <asengupt@redhat.com> Reviewed-on: http://review.gluster.org/10313 Reviewed-by: Rajesh Joseph <rjoseph@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Tested-by: NetBSD Build System Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-mgmt.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-mgmt.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-mgmt.c b/xlators/mgmt/glusterd/src/glusterd-mgmt.c
index 2a362fa0007..954ff039085 100644
--- a/xlators/mgmt/glusterd/src/glusterd-mgmt.c
+++ b/xlators/mgmt/glusterd/src/glusterd-mgmt.c
@@ -23,6 +23,7 @@
#include "glusterd-store.h"
#include "glusterd-snapshot-utils.h"
#include "glusterd-messages.h"
+#include "glusterd-errno.h"
extern struct rpc_clnt_program gd_mgmt_v3_prog;
@@ -401,7 +402,7 @@ out:
int
glusterd_mgmt_v3_initiate_lockdown (glusterd_op_t op, dict_t *dict,
- char **op_errstr,
+ char **op_errstr, uint32_t *op_errno,
gf_boolean_t *is_acquired,
uint32_t txn_generation)
{
@@ -424,7 +425,7 @@ glusterd_mgmt_v3_initiate_lockdown (glusterd_op_t op, dict_t *dict,
GF_ASSERT (is_acquired);
/* Trying to acquire multiple mgmt_v3 locks on local node */
- ret = glusterd_multiple_mgmt_v3_lock (dict, MY_UUID);
+ ret = glusterd_multiple_mgmt_v3_lock (dict, MY_UUID, op_errno);
if (ret) {
gf_msg (this->name, GF_LOG_ERROR, 0,
GD_MSG_MGMTV3_LOCK_GET_FAIL,
@@ -470,6 +471,7 @@ glusterd_mgmt_v3_initiate_lockdown (glusterd_op_t op, dict_t *dict,
*op_errstr = gf_strdup (args.errstr);
ret = args.op_ret;
+ *op_errno = args.op_errno;
gf_msg_debug (this->name, 0, "Sent lock op req for %s "
"to %d peers. Returning %d", gd_op_list[op], peer_cnt, ret);
@@ -1719,6 +1721,7 @@ glusterd_mgmt_v3_initiate_all_phases (rpcsvc_request_t *req, glusterd_op_t op,
gf_boolean_t is_acquired = _gf_false;
uuid_t *originator_uuid = NULL;
uint32_t txn_generation = 0;
+ uint32_t op_errno = 0;
this = THIS;
GF_ASSERT (this);
@@ -1776,7 +1779,8 @@ glusterd_mgmt_v3_initiate_all_phases (rpcsvc_request_t *req, glusterd_op_t op,
/* LOCKDOWN PHASE - Acquire mgmt_v3 locks */
ret = glusterd_mgmt_v3_initiate_lockdown (op, dict, &op_errstr,
- &is_acquired, txn_generation);
+ &op_errno, &is_acquired,
+ txn_generation);
if (ret) {
gf_msg (this->name, GF_LOG_ERROR, 0,
GD_MSG_MGMTV3_LOCKDOWN_FAIL,
@@ -1846,8 +1850,12 @@ out:
}
}
+ if (ret && (op_errno == 0))
+ op_errno = EINTRNL;
+
/* SEND CLI RESPONSE */
- glusterd_op_send_cli_response (op, op_ret, 0, req, dict, op_errstr);
+ glusterd_op_send_cli_response (op, op_ret, op_errno, req,
+ dict, op_errstr);
if (req_dict)
dict_unref (req_dict);
@@ -1947,6 +1955,7 @@ glusterd_mgmt_v3_initiate_snap_phases (rpcsvc_request_t *req, glusterd_op_t op,
gf_boolean_t success = _gf_false;
char *cli_errstr = NULL;
uint32_t txn_generation = 0;
+ uint32_t op_errno = 0;
this = THIS;
GF_ASSERT (this);
@@ -2004,7 +2013,8 @@ glusterd_mgmt_v3_initiate_snap_phases (rpcsvc_request_t *req, glusterd_op_t op,
/* LOCKDOWN PHASE - Acquire mgmt_v3 locks */
ret = glusterd_mgmt_v3_initiate_lockdown (op, dict, &op_errstr,
- &is_acquired, txn_generation);
+ &op_errno, &is_acquired,
+ txn_generation);
if (ret) {
gf_msg (this->name, GF_LOG_ERROR, 0,
GD_MSG_MGMTV3_LOCKDOWN_FAIL,
@@ -2179,8 +2189,12 @@ out:
}
}
+ if (ret && (op_errno == 0))
+ op_errno = EINTRNL;
+
/* SEND CLI RESPONSE */
- glusterd_op_send_cli_response (op, op_ret, 0, req, dict, op_errstr);
+ glusterd_op_send_cli_response (op, op_ret, op_errno, req,
+ dict, op_errstr);
if (req_dict)
dict_unref (req_dict);