From bb41d03cf8a907794749cd83266461b06c1b1172 Mon Sep 17 00:00:00 2001
From: Pranith Kumar K <pkarampu@redhat.com>
Date: Wed, 6 Jan 2016 14:30:08 +0530
Subject: [PATCH 640/642] dict: Don't expose get_new_dict/dict_destroy
get_new_dict/dict_destroy is causing confusion where, dict_new/dict_destroy or
get_new_dict/dict_unref are used instead of dict_new/dict_unref.
The downstream patch only covers the dictionary changes in glusterd and
cli codebase and skip the other parts as the bug is only tracked for
glusterd memory leak issues.
>Reviewed-on: http://review.gluster.org/13183
>Smoke: Gluster Build System <jenkins@build.gluster.org>
>CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
>NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
>Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
>Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com>
Change-Id: I4cc69f5b6711d720823395e20fd624a0c6c1168c
BUG: 1526363
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/125957
Tested-by: Atin Mukherjee <amukherj@redhat.com>
Tested-by: RHGS Build Bot <nigelb@redhat.com>
---
cli/src/cli-cmd-parser.c | 44 ++++++++++++++--------------
cli/src/cli-cmd-system.c | 6 ++--
cli/src/cli-cmd-volume.c | 2 +-
cli/src/cli-rpc-ops.c | 4 +--
cli/src/cli.c | 2 +-
libglusterfs/src/dict.h | 4 +--
xlators/mgmt/glusterd/src/glusterd-geo-rep.c | 4 +--
xlators/mgmt/glusterd/src/glusterd-op-sm.c | 4 +--
xlators/mgmt/glusterd/src/glusterd-volgen.c | 12 ++++----
9 files changed, 40 insertions(+), 42 deletions(-)
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c
index 12717cd..0056581 100644
--- a/cli/src/cli-cmd-parser.c
+++ b/cli/src/cli-cmd-parser.c
@@ -741,7 +741,7 @@ out:
if (ret) {
gf_log ("cli", GF_LOG_ERROR, "Unable to parse create volume CLI");
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
}
GF_FREE (trans_type);
@@ -817,7 +817,7 @@ cli_cmd_volume_reset_parse (const char **words, int wordcount, dict_t **options)
out:
if (ret && dict) {
- dict_destroy (dict);
+ dict_unref (dict);
}
return ret;
@@ -1138,7 +1138,7 @@ cli_cmd_inode_quota_parse (const char **words, int wordcount, dict_t **options)
out:
if (ret < 0) {
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
}
return ret;
@@ -1477,7 +1477,7 @@ set_type:
out:
if (ret < 0) {
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
}
return ret;
@@ -1748,8 +1748,8 @@ cli_cmd_volume_set_parse (struct cli_state *state, const char **words,
*options = dict;
out:
- if (ret)
- dict_destroy (dict);
+ if (ret && dict)
+ dict_unref (dict);
return ret;
}
@@ -1889,7 +1889,7 @@ out:
if (ret) {
gf_log ("cli", GF_LOG_ERROR, "Unable to parse add-brick CLI");
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
}
return ret;
@@ -1968,7 +1968,7 @@ out:
if (ret) {
gf_log ("cli", GF_LOG_ERROR, "Unable to parse tier CLI");
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
}
return ret;
@@ -2197,7 +2197,7 @@ out:
if (ret) {
gf_log ("cli", GF_LOG_ERROR, "Unable to parse remove-brick CLI");
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
}
GF_FREE (tmp_brick);
@@ -2392,7 +2392,7 @@ out:
if (ret) {
gf_log ("cli", GF_LOG_ERROR, "Unable to parse reset-brick CLI");
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
}
return ret;
@@ -2453,7 +2453,7 @@ cli_cmd_log_filename_parse (const char **words, int wordcount, dict_t **options)
out:
if (ret && dict)
- dict_destroy (dict);
+ dict_unref (dict);
return ret;
}
@@ -2510,7 +2510,7 @@ cli_cmd_log_level_parse (const char **words, int worcount, dict_t **options)
out:
if (ret && dict)
- dict_destroy (dict);
+ dict_unref (dict);
return ret;
}
@@ -2561,7 +2561,7 @@ cli_cmd_log_locate_parse (const char **words, int wordcount, dict_t **options)
out:
if (ret && dict)
- dict_destroy (dict);
+ dict_unref (dict);
return ret;
}
@@ -2615,7 +2615,7 @@ cli_cmd_log_rotate_parse (const char **words, int wordcount, dict_t **options)
out:
if (ret && dict)
- dict_destroy (dict);
+ dict_unref (dict);
return ret;
}
@@ -3057,7 +3057,7 @@ out:
GF_FREE (slave_temp);
if (ret) {
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
} else
*options = dict;
@@ -3154,7 +3154,7 @@ cli_cmd_volume_profile_parse (const char **words, int wordcount,
*options = dict;
out:
if (ret && dict)
- dict_destroy (dict);
+ dict_unref (dict);
return ret;
}
@@ -3343,7 +3343,7 @@ cli_cmd_volume_top_parse (const char **words, int wordcount,
*options = dict;
out:
if (ret && dict)
- dict_destroy (dict);
+ dict_unref (dict);
return ret;
}
@@ -3556,7 +3556,7 @@ cli_cmd_volume_status_parse (const char **words, int wordcount,
out:
if (ret && dict)
- dict_destroy (dict);
+ dict_unref (dict);
return ret;
}
@@ -3644,7 +3644,7 @@ cli_cmd_volume_statedump_options_parse (const char **words, int wordcount,
out:
GF_FREE (tmp);
if (ret && dict)
- dict_destroy (dict);
+ dict_unref (dict);
if (ret)
gf_log ("cli", GF_LOG_ERROR, "Error parsing dumpoptions");
return ret;
@@ -4134,7 +4134,7 @@ done:
out:
if (ret && dict)
- dict_destroy (dict);
+ dict_unref (dict);
return ret;
}
@@ -5458,7 +5458,7 @@ cli_cmd_snapshot_parse (const char **words, int wordcount, dict_t **options,
out:
if (ret) {
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
} else
*options = dict;
@@ -5716,7 +5716,7 @@ out:
if (ret) {
gf_log ("cli", GF_LOG_ERROR, "Unable to parse bitrot command");
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
}
return ret;
diff --git a/cli/src/cli-cmd-system.c b/cli/src/cli-cmd-system.c
index ad6bb73..93aac0b 100644
--- a/cli/src/cli-cmd-system.c
+++ b/cli/src/cli-cmd-system.c
@@ -66,7 +66,7 @@ cli_cmd_getspec_cbk (struct cli_state *state, struct cli_cmd_word *word,
out:
if (!proc && ret) {
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
if (wordcount > 1)
cli_out ("Fetching spec for volume %s failed",
(char *)words[2]);
@@ -109,7 +109,7 @@ cli_cmd_pmap_b2p_cbk (struct cli_state *state, struct cli_cmd_word *word,
out:
if (!proc && ret) {
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
if (wordcount > 1)
cli_out ("Fetching spec for volume %s failed",
(char *)words[3]);
@@ -188,7 +188,7 @@ make_seq_dict (int argc, char **argv)
}
if (ret) {
- dict_destroy (dict);
+ dict_unref (dict);
dict = NULL;
}
diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c
index 3ec39fd..927c802 100644
--- a/cli/src/cli-cmd-volume.c
+++ b/cli/src/cli-cmd-volume.c
@@ -592,7 +592,7 @@ cli_cmd_volume_rename_cbk (struct cli_state *state, struct cli_cmd_word *word,
out:
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
if (ret) {
cli_cmd_sent_status_get (&sent);
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
index 7ded5f9..24037aa 100644
--- a/cli/src/cli-rpc-ops.c
+++ b/cli/src/cli-rpc-ops.c
@@ -493,7 +493,7 @@ out:
cli_cmd_broadcast_response (ret);
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
return ret;
}
@@ -1127,7 +1127,7 @@ out:
cli_cmd_broadcast_response (ret);
if (dict)
- dict_destroy (dict);
+ dict_unref (dict);
free (rsp.dict.dict_val);
diff --git a/cli/src/cli.c b/cli/src/cli.c
index e0d6b3e..33250d3 100644
--- a/cli/src/cli.c
+++ b/cli/src/cli.c
@@ -607,7 +607,7 @@ cli_quotad_clnt_rpc_init (void)
out:
if (ret) {
if (rpc_opts)
- dict_destroy(rpc_opts);
+ dict_unref(rpc_opts);
}
return rpc;
}
diff --git a/libglusterfs/src/dict.h b/libglusterfs/src/dict.h
index b5d9f3e..455391a 100644
--- a/libglusterfs/src/dict.h
+++ b/libglusterfs/src/dict.h
@@ -156,10 +156,7 @@ char *data_to_str (data_t *data);
void *data_to_bin (data_t *data);
void *data_to_ptr (data_t *data);
-data_t *get_new_data ();
data_t * data_copy (data_t *old);
-dict_t *get_new_dict_full (int size_hint);
-dict_t *get_new_dict ();
int dict_foreach (dict_t *this,
int (*fn)(dict_t *this,
@@ -193,6 +190,7 @@ int dict_null_foreach_fn (dict_t *d, char *k,
int dict_remove_foreach_fn (dict_t *d, char *k,
data_t *v, void *tmp);
dict_t *dict_copy (dict_t *this, dict_t *new);
+dict_t *get_new_dict (void);
int dict_keys_join (void *value, int size, dict_t *dict,
int (*filter_fn)(char *key));
diff --git a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c
index fa3b151..907c29f 100644
--- a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c
+++ b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c
@@ -1976,7 +1976,7 @@ is_geo_rep_active (glusterd_volinfo_t *volinfo, char *slave,
ret = 0;
out:
if (confd)
- dict_destroy (confd);
+ dict_unref (confd);
return ret;
}
@@ -2617,7 +2617,7 @@ fetch_data:
}
if (confd)
- dict_destroy (confd);
+ dict_unref (confd);
gf_msg_debug (this->name, 0, "Returning %d ", ret);
return ret;
diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
index 51eae2d..f034ae8 100644
--- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c
+++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
@@ -4369,7 +4369,7 @@ glusterd_op_build_payload (dict_t **req, char **op_errstr, dict_t *op_ctx)
if (ret)
goto out;
}
- dict_destroy (req_dict);
+ dict_unref (req_dict);
req_dict = dict_ref (dict);
}
break;
@@ -4395,7 +4395,7 @@ glusterd_op_build_payload (dict_t **req, char **op_errstr, dict_t *op_ctx)
goto out;
}
- dict_destroy (req_dict);
+ dict_unref (req_dict);
req_dict = dict_ref (dict);
}
break;
diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c
index 701cccf..859a932 100644
--- a/xlators/mgmt/glusterd/src/glusterd-volgen.c
+++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c
@@ -93,7 +93,7 @@ xlator_instantiate_va (const char *type, const char *format, va_list arg)
ret = xlator_set_type_virtual (xl, type);
if (ret)
goto error;
- xl->options = get_new_dict();
+ xl->options = dict_new ();
if (!xl->options)
goto error;
xl->name = volname;
@@ -1052,7 +1052,7 @@ build_graph_generic (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
int ret = 0;
if (mod_dict) {
- set_dict = dict_copy (volinfo->dict, NULL);
+ set_dict = dict_copy_with_ref (volinfo->dict, NULL);
if (!set_dict)
return -1;
dict_copy (mod_dict, set_dict);
@@ -1066,7 +1066,7 @@ build_graph_generic (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
ret = volgen_graph_set_options (graph, set_dict);
if (mod_dict)
- dict_destroy (set_dict);
+ dict_unref (set_dict);
return ret;
}
@@ -4728,7 +4728,7 @@ build_rebalance_volfile (glusterd_volinfo_t *volinfo, char *filepath,
return 0;
}
- set_dict = dict_copy (volinfo->dict, NULL);
+ set_dict = dict_copy_with_ref (volinfo->dict, NULL);
if (!set_dict)
return -1;
@@ -4770,7 +4770,7 @@ build_rebalance_volfile (glusterd_volinfo_t *volinfo, char *filepath,
out:
volgen_graph_free (&graph);
- dict_destroy (set_dict);
+ dict_unref (set_dict);
return ret;
}
@@ -5037,7 +5037,7 @@ build_nfs_graph (volgen_graph_t *graph, dict_t *mod_dict)
out:
gf_msg_debug ("glusterd", 0, "Returning %d", ret);
- dict_destroy (set_dict);
+ dict_unref (set_dict);
return ret;
}
--
2.9.3