diff options
-rw-r--r-- | api/src/glfs-fops.c | 4 | ||||
-rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 18 | ||||
-rw-r--r-- | libglusterfs/src/graph.c | 2 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-tier.c | 52 |
4 files changed, 39 insertions, 37 deletions
diff --git a/api/src/glfs-fops.c b/api/src/glfs-fops.c index cb6dffc9335..ee4271fb4dc 100644 --- a/api/src/glfs-fops.c +++ b/api/src/glfs-fops.c @@ -5095,7 +5095,7 @@ glfs_recall_lease_fd (struct glfs *fs, inode_t *inode = NULL; struct glfs_fd *glfd = NULL; struct glfs_fd *tmp = NULL; - struct list_head glfd_list; + struct list_head glfd_list = { 0, }; fd_t *fd = NULL; uint64_t value = 0; struct glfs_lease lease = {0, }; @@ -5106,6 +5106,8 @@ glfs_recall_lease_fd (struct glfs *fs, recall_lease = up_data->data; GF_VALIDATE_OR_GOTO ("gfapi", recall_lease, out); + INIT_LIST_HEAD(&glfd_list); + subvol = glfs_active_subvol (fs); if (!subvol) { ret = -1; diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index df9a05c75f0..3228c27c6aa 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -1979,7 +1979,7 @@ volfile: list_for_each_entry (volfile_obj, &ctx->volfile_list, volfile_list) { if (!strcmp (volfile_id, volfile_obj->vol_id)) { - if (!strncmp (sha256_hash, + if (!memcmp (sha256_hash, volfile_obj->volfile_checksum, sizeof (volfile_obj->volfile_checksum))) { gf_log (frame->this->name, GF_LOG_INFO, @@ -2047,8 +2047,8 @@ volfile: "checksum."); goto out; } - strncpy (volfile_tmp->volfile_checksum, sha256_hash, - sizeof (volfile_tmp->volfile_checksum)); + memcpy (volfile_tmp->volfile_checksum, sha256_hash, + sizeof (volfile_tmp->volfile_checksum)); goto out; } @@ -2080,8 +2080,8 @@ volfile: sizeof (volfile_tmp->vol_id), "%s", volfile_id); } - strncpy (volfile_tmp->volfile_checksum, sha256_hash, - sizeof (volfile_tmp->volfile_checksum)); + memcpy (volfile_tmp->volfile_checksum, sha256_hash, + sizeof (volfile_tmp->volfile_checksum)); } UNLOCK (&ctx->volfile_lock); @@ -2098,11 +2098,9 @@ out: if (locked) UNLOCK (&ctx->volfile_lock); - if (frame) { - GF_FREE (frame->local); - frame->local = NULL; - STACK_DESTROY (frame->root); - } + GF_FREE (frame->local); + frame->local = NULL; + STACK_DESTROY (frame->root); free (rsp.spec); diff --git a/libglusterfs/src/graph.c b/libglusterfs/src/graph.c index 26dfc4e6b81..03ef55c5892 100644 --- a/libglusterfs/src/graph.c +++ b/libglusterfs/src/graph.c @@ -1264,7 +1264,7 @@ glusterfs_graph_attach (glusterfs_graph_t *orig_graph, char *path, INIT_LIST_HEAD (&volfile_obj->volfile_list); snprintf (volfile_obj->vol_id, sizeof (volfile_obj->vol_id), "%s", xl->volfile_id); - strncpy (volfile_obj->volfile_checksum, sha256_hash, + memcpy (volfile_obj->volfile_checksum, sha256_hash, sizeof (volfile_obj->volfile_checksum)); list_add (&volfile_obj->volfile_list, &this->ctx->volfile_list); diff --git a/xlators/mgmt/glusterd/src/glusterd-tier.c b/xlators/mgmt/glusterd/src/glusterd-tier.c index 608b035fa16..d20f6900b21 100644 --- a/xlators/mgmt/glusterd/src/glusterd-tier.c +++ b/xlators/mgmt/glusterd/src/glusterd-tier.c @@ -1245,18 +1245,17 @@ int glusterd_op_tier_status (dict_t *dict, char **op_errstr, dict_t *rsp_dict, glusterd_op_t op) { - int ret = -1; + int ret = -1; xlator_t *this = NULL; - struct syncargs args = {0, }; - glusterd_req_ctx_t *data = NULL; + struct syncargs args = {0, }; gd1_mgmt_brick_op_req *req = NULL; glusterd_conf_t *priv = NULL; - int pending_bricks = 0; + int pending_bricks = 0; glusterd_pending_node_t *pending_node; glusterd_req_ctx_t *req_ctx = NULL; struct rpc_clnt *rpc = NULL; uuid_t *txn_id = NULL; - extern glusterd_op_info_t opinfo; + extern glusterd_op_info_t opinfo; this = THIS; GF_VALIDATE_OR_GOTO (THIS->name, this, out); @@ -1267,10 +1266,15 @@ glusterd_op_tier_status (dict_t *dict, char **op_errstr, dict_t *rsp_dict, GF_VALIDATE_OR_GOTO (this->name, priv, out); args.op_ret = -1; args.op_errno = ENOTCONN; - data = GF_CALLOC (1, sizeof (*data), - gf_gld_mt_op_allack_ctx_t); - gf_uuid_copy (data->uuid, MY_UUID); + req_ctx = GF_MALLOC (sizeof (*req_ctx), gf_gld_mt_op_allack_ctx_t); + if (!req_ctx) { + gf_msg (this->name, GF_LOG_ERROR, ENOMEM, + GD_MSG_NO_MEMORY, "Allocation failed"); + goto out; + } + + gf_uuid_copy (req_ctx->uuid, MY_UUID); /* we are printing the detach status for issue of detach start * by then we need the op to be GD_OP_DETACH_TIER_STATUS for it to @@ -1278,15 +1282,12 @@ glusterd_op_tier_status (dict_t *dict, char **op_errstr, dict_t *rsp_dict, */ if (op == GD_OP_REMOVE_TIER_BRICK) - data->op = GD_OP_DETACH_TIER_STATUS; + req_ctx->op = GD_OP_DETACH_TIER_STATUS; else - data->op = op; - data->dict = dict; + req_ctx->op = op; + req_ctx->dict = dict; txn_id = &priv->global_txn_id; - - req_ctx = data; - GF_VALIDATE_OR_GOTO (this->name, req_ctx, out); CDS_INIT_LIST_HEAD (&opinfo.pending_bricks); ret = dict_get_bin (req_ctx->dict, "transaction_id", (void **)&txn_id); @@ -1309,7 +1310,7 @@ glusterd_op_tier_status (dict_t *dict, char **op_errstr, dict_t *rsp_dict, (gd1_mgmt_brick_op_req **)&req, req_ctx->dict); - if (ret) { + if (ret || !req) { gf_msg (this->name, GF_LOG_ERROR, 0, GD_MSG_BRICK_OP_PAYLOAD_BUILD_FAIL, "Failed to build brick op payload during " @@ -1334,15 +1335,15 @@ glusterd_op_tier_status (dict_t *dict, char **op_errstr, dict_t *rsp_dict, goto out; } - GD_SYNCOP (rpc, (&args), NULL, glusterd_tier_status_cbk, req, - &gd_brick_prog, req->op, xdr_gd1_mgmt_brick_op_req); + GD_SYNCOP (rpc, (&args), NULL, glusterd_tier_status_cbk, + req, &gd_brick_prog, req->op, + xdr_gd1_mgmt_brick_op_req); + + if (req->input.input_val) + GF_FREE (req->input.input_val); + GF_FREE (req); + req = NULL; - if (req != NULL) { - if (req->input.input_val) - GF_FREE (req->input.input_val); - GF_FREE (req); - req = NULL; - } if (!ret) pending_bricks++; @@ -1355,9 +1356,7 @@ glusterd_op_tier_status (dict_t *dict, char **op_errstr, dict_t *rsp_dict, "'Volume %s' to %d bricks", gd_op_list[req_ctx->op], pending_bricks); opinfo.brick_pending_count = pending_bricks; - out: - if (ret) opinfo.op_ret = ret; @@ -1371,6 +1370,9 @@ out: if (args.errstr) GF_FREE (args.errstr); + if (req_ctx) + GF_FREE (req_ctx); + gf_msg_debug (this ? this->name : "glusterd", 0, "Returning %d. Failed to get tier status", ret); return ret; |