summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/dht/src/tier-common.c
diff options
context:
space:
mode:
authorMohammed Rafi KC <rkavunga@redhat.com>2015-12-28 19:31:36 +0530
committerDan Lambright <dlambrig@redhat.com>2015-12-29 15:36:01 -0800
commit4b52e6c0d73937c93464a1db15027796e3ecbd68 (patch)
tree24b93603f7498bbc73efe8d25a055282d756a435 /xlators/cluster/dht/src/tier-common.c
parent137b11d616c6086b05c32089903a39334999a76e (diff)
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 <rkavunga@redhat.com> Reviewed-on: http://review.gluster.org/13102 Tested-by: NetBSD Build System <jenkins@build.gluster.org> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: N Balachandran <nbalacha@redhat.com> Reviewed-by: Dan Lambright <dlambrig@redhat.com> Tested-by: Dan Lambright <dlambrig@redhat.com>
Diffstat (limited to 'xlators/cluster/dht/src/tier-common.c')
-rw-r--r--xlators/cluster/dht/src/tier-common.c15
1 files changed, 13 insertions, 2 deletions
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"