diff options
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-mgmt.c | 56 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-syncop.c | 70 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-syncop.h | 10 |
3 files changed, 94 insertions, 42 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-mgmt.c b/xlators/mgmt/glusterd/src/glusterd-mgmt.c index 85d8c777884..2a362fa0007 100644 --- a/xlators/mgmt/glusterd/src/glusterd-mgmt.c +++ b/xlators/mgmt/glusterd/src/glusterd-mgmt.c @@ -340,6 +340,8 @@ gd_mgmt_v3_lock_cbk_fn (struct rpc_req *req, struct iovec *iov, out: gd_mgmt_v3_collate_errors (args, op_ret, op_errno, NULL, GLUSTERD_MGMT_V3_LOCK, *peerid, rsp.uuid); + GF_FREE (peerid); + if (rsp.dict.dict_val) free (rsp.dict.dict_val); STACK_DESTROY (frame->root); @@ -365,7 +367,7 @@ gd_mgmt_v3_lock (glusterd_op_t op, dict_t *op_ctx, glusterd_conf_t *conf = THIS->private; int32_t ret = -1; xlator_t *this = NULL; - uuid_t peerid = {0,}; + uuid_t *peerid = NULL; this = THIS; GF_ASSERT (this); @@ -382,9 +384,11 @@ gd_mgmt_v3_lock (glusterd_op_t op, dict_t *op_ctx, gf_uuid_copy (req.uuid, my_uuid); req.op = op; - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, peerid, &gd_mgmt_v3_prog, GLUSTERD_MGMT_V3_LOCK, gd_mgmt_v3_lock_cbk, @@ -618,6 +622,7 @@ out: if (rsp.op_errstr) free (rsp.op_errstr); + GF_FREE (peerid); STACK_DESTROY (frame->root); synctask_barrier_wake(args); @@ -642,7 +647,7 @@ gd_mgmt_v3_pre_validate_req (glusterd_op_t op, dict_t *op_ctx, gd1_mgmt_v3_pre_val_req req = {{0},}; glusterd_conf_t *conf = THIS->private; xlator_t *this = NULL; - uuid_t peerid = {0,}; + uuid_t *peerid = NULL; this = THIS; GF_ASSERT (this); @@ -659,9 +664,11 @@ gd_mgmt_v3_pre_validate_req (glusterd_op_t op, dict_t *op_ctx, gf_uuid_copy (req.uuid, my_uuid); req.op = op; - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, peerid, &gd_mgmt_v3_prog, GLUSTERD_MGMT_V3_PRE_VALIDATE, gd_mgmt_v3_pre_validate_cbk, @@ -877,6 +884,7 @@ out: if (rsp.dict.dict_val) free (rsp.dict.dict_val); + GF_FREE (peerid); STACK_DESTROY (frame->root); synctask_barrier_wake(args); @@ -901,7 +909,7 @@ gd_mgmt_v3_brick_op_req (glusterd_op_t op, dict_t *op_ctx, gd1_mgmt_v3_brick_op_req req = {{0},}; glusterd_conf_t *conf = THIS->private; xlator_t *this = NULL; - uuid_t peerid = {0,}; + uuid_t *peerid = {0,}; this = THIS; GF_ASSERT (this); @@ -918,9 +926,11 @@ gd_mgmt_v3_brick_op_req (glusterd_op_t op, dict_t *op_ctx, gf_uuid_copy (req.uuid, my_uuid); req.op = op; - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, peerid, &gd_mgmt_v3_prog, GLUSTERD_MGMT_V3_BRICK_OP, gd_mgmt_v3_brick_op_cbk, @@ -1120,7 +1130,7 @@ out: gd_mgmt_v3_collate_errors (args, op_ret, op_errno, rsp.op_errstr, GLUSTERD_MGMT_V3_COMMIT, *peerid, rsp.uuid); - + GF_FREE (peerid); STACK_DESTROY (frame->root); synctask_barrier_wake(args); @@ -1145,7 +1155,7 @@ gd_mgmt_v3_commit_req (glusterd_op_t op, dict_t *op_ctx, gd1_mgmt_v3_commit_req req = {{0},}; glusterd_conf_t *conf = THIS->private; xlator_t *this = NULL; - uuid_t peerid = {0,}; + uuid_t *peerid = NULL; this = THIS; GF_ASSERT (this); @@ -1162,9 +1172,11 @@ gd_mgmt_v3_commit_req (glusterd_op_t op, dict_t *op_ctx, gf_uuid_copy (req.uuid, my_uuid); req.op = op; - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, peerid, &gd_mgmt_v3_prog, GLUSTERD_MGMT_V3_COMMIT, gd_mgmt_v3_commit_cbk, @@ -1343,6 +1355,7 @@ out: if (rsp.dict.dict_val) free (rsp.dict.dict_val); + GF_FREE (peerid); STACK_DESTROY (frame->root); synctask_barrier_wake(args); @@ -1367,7 +1380,7 @@ gd_mgmt_v3_post_validate_req (glusterd_op_t op, int32_t op_ret, dict_t *op_ctx, gd1_mgmt_v3_post_val_req req = {{0},}; glusterd_conf_t *conf = THIS->private; xlator_t *this = NULL; - uuid_t peerid = {0,}; + uuid_t *peerid = NULL; this = THIS; GF_ASSERT (this); @@ -1385,9 +1398,11 @@ gd_mgmt_v3_post_validate_req (glusterd_op_t op, int32_t op_ret, dict_t *op_ctx, req.op = op; req.op_ret = op_ret; - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, peerid, &gd_mgmt_v3_prog, GLUSTERD_MGMT_V3_POST_VALIDATE, gd_mgmt_v3_post_validate_cbk, @@ -1556,6 +1571,7 @@ out: GLUSTERD_MGMT_V3_UNLOCK, *peerid, rsp.uuid); if (rsp.dict.dict_val) free (rsp.dict.dict_val); + GF_FREE (peerid); STACK_DESTROY (frame->root); synctask_barrier_wake(args); @@ -1580,7 +1596,7 @@ gd_mgmt_v3_unlock (glusterd_op_t op, dict_t *op_ctx, gd1_mgmt_v3_unlock_req req = {{0},}; glusterd_conf_t *conf = THIS->private; xlator_t *this = NULL; - uuid_t peerid = {0,}; + uuid_t *peerid = NULL; this = THIS; GF_ASSERT (this); @@ -1597,9 +1613,11 @@ gd_mgmt_v3_unlock (glusterd_op_t op, dict_t *op_ctx, gf_uuid_copy (req.uuid, my_uuid); req.op = op; - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, peerid, &gd_mgmt_v3_prog, GLUSTERD_MGMT_V3_UNLOCK, gd_mgmt_v3_unlock_cbk, diff --git a/xlators/mgmt/glusterd/src/glusterd-syncop.c b/xlators/mgmt/glusterd/src/glusterd-syncop.c index 6f36478aeca..83988a182b7 100644 --- a/xlators/mgmt/glusterd/src/glusterd-syncop.c +++ b/xlators/mgmt/glusterd/src/glusterd-syncop.c @@ -322,7 +322,7 @@ out: int32_t gd_syncop_mgmt_v3_lock_cbk_fn (struct rpc_req *req, struct iovec *iov, - int count, void *myframe) + int count, void *myframe) { int ret = -1; struct syncargs *args = NULL; @@ -366,6 +366,8 @@ out: gd_mgmt_v3_collate_errors (args, op_ret, op_errno, NULL, GLUSTERD_MGMT_V3_LOCK, *peerid, rsp.uuid); + GF_FREE (peerid); + STACK_DESTROY (frame->root); synctask_barrier_wake(args); return 0; @@ -388,7 +390,7 @@ gd_syncop_mgmt_v3_lock (glusterd_op_t op, dict_t *op_ctx, int ret = -1; gd1_mgmt_v3_lock_req req = {{0},}; glusterd_conf_t *conf = THIS->private; - uuid_t peerid = {0,}; + uuid_t *peerid = NULL; GF_ASSERT(op_ctx); GF_ASSERT(peerinfo); @@ -404,9 +406,11 @@ gd_syncop_mgmt_v3_lock (glusterd_op_t op, dict_t *op_ctx, gf_uuid_copy (req.txn_id, txn_id); req.op = op; - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, peerid, &gd_mgmt_v3_prog, GLUSTERD_MGMT_V3_LOCK, gd_syncop_mgmt_v3_lock_cbk, @@ -463,6 +467,8 @@ out: gd_mgmt_v3_collate_errors (args, op_ret, op_errno, NULL, GLUSTERD_MGMT_V3_UNLOCK, *peerid, rsp.uuid); + GF_FREE (peerid); + STACK_DESTROY (frame->root); synctask_barrier_wake(args); return 0; @@ -484,7 +490,7 @@ gd_syncop_mgmt_v3_unlock (dict_t *op_ctx, glusterd_peerinfo_t *peerinfo, int ret = -1; gd1_mgmt_v3_unlock_req req = {{0},}; glusterd_conf_t *conf = THIS->private; - uuid_t peerid = {0,}; + uuid_t *peerid = NULL; GF_ASSERT(op_ctx); GF_ASSERT(peerinfo); @@ -499,9 +505,11 @@ gd_syncop_mgmt_v3_unlock (dict_t *op_ctx, glusterd_peerinfo_t *peerinfo, gf_uuid_copy (req.uuid, my_uuid); gf_uuid_copy (req.txn_id, txn_id); - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, peerid, &gd_mgmt_v3_prog, GLUSTERD_MGMT_V3_UNLOCK, gd_syncop_mgmt_v3_unlock_cbk, @@ -569,6 +577,8 @@ out: gd_collate_errors (args, op_ret, op_errno, NULL, GLUSTERD_MGMT_CLUSTER_LOCK, *peerid, rsp.uuid); + GF_FREE (peerid); + STACK_DESTROY (frame->root); synctask_barrier_wake(args); return 0; @@ -589,16 +599,19 @@ gd_syncop_mgmt_lock (glusterd_peerinfo_t *peerinfo, struct syncargs *args, int ret = -1; gd1_mgmt_cluster_lock_req req = {{0},}; glusterd_conf_t *conf = THIS->private; - uuid_t peerid = {0,}; + uuid_t *peerid = NULL; gf_uuid_copy (req.uuid, my_uuid); - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, peerid, &gd_mgmt_prog, GLUSTERD_MGMT_CLUSTER_LOCK, gd_syncop_mgmt_lock_cbk, (xdrproc_t) xdr_gd1_mgmt_cluster_lock_req); +out: return ret; } @@ -657,6 +670,8 @@ out: gd_collate_errors (args, op_ret, op_errno, NULL, GLUSTERD_MGMT_CLUSTER_UNLOCK, *peerid, rsp.uuid); + GF_FREE (peerid); + STACK_DESTROY (frame->root); synctask_barrier_wake(args); return 0; @@ -678,16 +693,19 @@ gd_syncop_mgmt_unlock (glusterd_peerinfo_t *peerinfo, struct syncargs *args, int ret = -1; gd1_mgmt_cluster_unlock_req req = {{0},}; glusterd_conf_t *conf = THIS->private; - uuid_t peerid = {0,}; + uuid_t *peerid = NULL; gf_uuid_copy (req.uuid, my_uuid); - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, &req, args, peerid, &gd_mgmt_prog, GLUSTERD_MGMT_CLUSTER_UNLOCK, gd_syncop_mgmt_unlock_cbk, (xdrproc_t) xdr_gd1_mgmt_cluster_lock_req); +out: return ret; } @@ -779,6 +797,7 @@ out: if (rsp_dict) dict_unref (rsp_dict); + GF_FREE (peerid); STACK_DESTROY (frame->root); synctask_barrier_wake(args); @@ -802,7 +821,7 @@ gd_syncop_mgmt_stage_op (glusterd_peerinfo_t *peerinfo, struct syncargs *args, gd1_mgmt_stage_op_req *req = NULL; glusterd_conf_t *conf = THIS->private; int ret = -1; - uuid_t peerid = {0,}; + uuid_t *peerid = NULL; req = GF_CALLOC (1, sizeof (*req), gf_gld_mt_mop_stage_req_t); if (!req) @@ -816,9 +835,11 @@ gd_syncop_mgmt_stage_op (glusterd_peerinfo_t *peerinfo, struct syncargs *args, if (ret) goto out; - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, req, args, peerid, &gd_mgmt_prog, GLUSTERD_MGMT_STAGE_OP, gd_syncop_stage_op_cbk, (xdrproc_t) xdr_gd1_mgmt_stage_op_req); @@ -1058,6 +1079,7 @@ out: GLUSTERD_MGMT_COMMIT_OP, *peerid, rsp.uuid); if (rsp_dict) dict_unref (rsp_dict); + GF_FREE (peerid); STACK_DESTROY (frame->root); synctask_barrier_wake(args); @@ -1082,7 +1104,7 @@ gd_syncop_mgmt_commit_op (glusterd_peerinfo_t *peerinfo, struct syncargs *args, glusterd_conf_t *conf = THIS->private; gd1_mgmt_commit_op_req *req = NULL; int ret = -1; - uuid_t peerid = {0,}; + uuid_t *peerid = NULL; req = GF_CALLOC (1, sizeof (*req), gf_gld_mt_mop_commit_req_t); if (!req) @@ -1096,9 +1118,11 @@ gd_syncop_mgmt_commit_op (glusterd_peerinfo_t *peerinfo, struct syncargs *args, if (ret) goto out; - gf_uuid_copy (peerid, peerinfo->uuid); + GD_ALLOC_COPY_UUID (peerid, peerinfo->uuid, ret); + if (ret) + goto out; - ret = gd_syncop_submit_request (peerinfo->rpc, req, args, &peerid, + ret = gd_syncop_submit_request (peerinfo->rpc, req, args, peerid, &gd_mgmt_prog, GLUSTERD_MGMT_COMMIT_OP, gd_syncop_commit_op_cbk, (xdrproc_t) xdr_gd1_mgmt_commit_op_req); @@ -1837,14 +1861,14 @@ local_locking_done: out: op_ret = ret; if (txn_id) { - if (volname) - (void) gd_unlock_op_phase (conf, op, &op_ret, req, op_ctx, - op_errstr, volname, is_acquired, - *txn_id, &txn_opinfo); if (global) (void) gd_unlock_op_phase (conf, op, &op_ret, req, op_ctx, op_errstr, global, is_acquired, *txn_id, &txn_opinfo); + else + (void) gd_unlock_op_phase (conf, op, &op_ret, req, op_ctx, + op_errstr, volname, is_acquired, + *txn_id, &txn_opinfo); /* Clearing the transaction opinfo */ diff --git a/xlators/mgmt/glusterd/src/glusterd-syncop.h b/xlators/mgmt/glusterd/src/glusterd-syncop.h index 1163677d626..f3425c2f538 100644 --- a/xlators/mgmt/glusterd/src/glusterd-syncop.h +++ b/xlators/mgmt/glusterd/src/glusterd-syncop.h @@ -39,6 +39,16 @@ synclock_lock (&conf->big_lock); \ } while (0) +#define GD_ALLOC_COPY_UUID(dst_ptr, uuid, ret) do { \ + dst_ptr = GF_CALLOC (1, sizeof (*dst_ptr), gf_common_mt_uuid_t); \ + if (dst_ptr) { \ + gf_uuid_copy (*dst_ptr, uuid); \ + ret = 0; \ + } else { \ + ret = -1; \ + } \ +} while (0) + int gd_syncop_submit_request (struct rpc_clnt *rpc, void *req, void *local, void *cookie, rpc_clnt_prog_t *prog, int procnum, fop_cbk_fn_t cbkfn, xdrproc_t xdrproc); |