diff options
author | Mohammed Rafi KC <rkavunga@redhat.com> | 2015-12-28 19:31:36 +0530 |
---|---|---|
committer | Dan Lambright <dlambrig@redhat.com> | 2015-12-29 15:36:01 -0800 |
commit | 4b52e6c0d73937c93464a1db15027796e3ecbd68 (patch) | |
tree | 24b93603f7498bbc73efe8d25a055282d756a435 /xlators/cluster/dht/src/tier-common.c | |
parent | 137b11d616c6086b05c32089903a39334999a76e (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.c | 15 |
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" |