summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/src/glfs-fops.c4
-rw-r--r--glusterfsd/src/glusterfsd-mgmt.c18
-rw-r--r--libglusterfs/src/graph.c2
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-tier.c52
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;