From 4b52e6c0d73937c93464a1db15027796e3ecbd68 Mon Sep 17 00:00:00 2001 From: Mohammed Rafi KC Date: Mon, 28 Dec 2015 19:31:36 +0530 Subject: tier/create: Dynamically allocate gfid memory Currently we are storing the memory as a static pointer. There is a chance to go that variable in out of scope. So we should allocate in Dynamic way. Change-Id: I096876deb8055ac3a44681599591a0a032bc0c24 BUG: 1290677 Signed-off-by: Mohammed Rafi KC Reviewed-on: http://review.gluster.org/13102 Tested-by: NetBSD Build System Tested-by: Gluster Build System Reviewed-by: N Balachandran Reviewed-by: Dan Lambright Tested-by: Dan Lambright --- xlators/cluster/dht/src/tier-common.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'xlators/cluster/dht') diff --git a/xlators/cluster/dht/src/tier-common.c b/xlators/cluster/dht/src/tier-common.c index 8de21df24ef..f24d6404c66 100644 --- a/xlators/cluster/dht/src/tier-common.c +++ b/xlators/cluster/dht/src/tier-common.c @@ -135,6 +135,7 @@ tier_create_linkfile_create_cbk (call_frame_t *frame, void *cookie, xlator_t *cached_subvol = NULL; dht_conf_t *conf = NULL; int ret = -1; + unsigned char *gfid = NULL; local = frame->local; if (!local) { @@ -159,9 +160,19 @@ tier_create_linkfile_create_cbk (call_frame_t *frame, void *cookie, if (local->params) { dict_del (local->params, conf->link_xattr_name); dict_del (local->params, GLUSTERFS_INTERNAL_FOP_KEY); - ret = dict_set_static_bin (local->params, TIER_LINKFILE_GFID, - stbuf->ia_gfid, 16); + + gfid = GF_CALLOC (1, sizeof (uuid_t), gf_common_mt_char); + if (!gfid) { + local->op_errno = ENOMEM; + op_errno = ENOMEM; + goto err; + } + + gf_uuid_copy (gfid, stbuf->ia_gfid); + ret = dict_set_dynptr (local->params, TIER_LINKFILE_GFID, + gfid, sizeof (uuid_t)); if (ret) { + GF_FREE (gfid); gf_msg (this->name, GF_LOG_WARNING, 0, DHT_MSG_DICT_SET_FAILED, "Failed to set dictionary value" -- cgit