Patchwork [BUG:1670,2/2] mgmt/glusterd: cleanup generate_perf_xlator_list ()

login
register
Submitter Csaba Henk
Date 2010-09-23 13:59:15
Message ID <1285250355-17836-2-git-send-email-csaba@gluster.com>
Download mbox | patch
Permalink /patch/4945/
State Accepted
Headers show

Comments

Csaba Henk - 2010-09-23 13:59:15
Signed-off-by: Csaba Henk <csaba@gluster.com>
---
 xlators/mgmt/glusterd/src/glusterd-volgen.c |  152 +++++++++------------------
 1 files changed, 52 insertions(+), 100 deletions(-)

Patch

diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c
index 120cef0..bf0e8c5 100644
--- a/xlators/mgmt/glusterd/src/glusterd-volgen.c
+++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c
@@ -1768,126 +1768,78 @@  __write_perf_xlator (char *xlator_name, FILE *file,
 
 }
 
-static gf_boolean_t
-is_perf_xlator_enabled (char *status)
-{
-        gf_boolean_t ret = _gf_false;
-
-        if (strcmp (status, "enable") == 0)
-                ret = _gf_true;
-
-        return ret;
-}
-
-static int
-generate_perf_xlator_list (dict_t *dict, char *perf_xlator_list[])
+static
+int
+add_perf_xlator_list_item (dict_t *dict, char **perf_xlator_list,
+                           char *xlator_name, int *idx)
 {
-        char *status = NULL;
-        int i        = 0;
-        int dict_ret = 0;
-        int ret      = 0;
-
-        GF_ASSERT (dict);
-
-        dict_ret = dict_get_str (dict, "write-behind", &status);
-        if (dict_ret || is_perf_xlator_enabled (status)) {
-                gf_log ("", GF_LOG_DEBUG,
-                        "Write behind is enabled");
-                perf_xlator_list[i] = gf_strdup ("write-behind");
-                if (!perf_xlator_list[i]) {
-                        gf_log ("", GF_LOG_ERROR,
-                                "Out of memory");
-                        ret = -1;
-                        goto out;
-                }
-
-                i++;
+        int ret = 0;
 
-        } else {
+        ret = dict_get_str_boolean (dict, xlator_name, 1);
+        switch (ret) {
+        case -1:
+                goto out;
+        case 1:
                 gf_log ("", GF_LOG_DEBUG,
-                        "write-behind option is disabled");
-        }
-
+                        "%s is enabled", xlator_name);
+                perf_xlator_list[*idx] = gf_strdup (xlator_name);
+                if (!perf_xlator_list[*idx]) {
+                        gf_log ("", GF_LOG_ERROR, "Out of memory");
 
-        dict_ret = dict_get_str (dict, "read-ahead", &status);
-        if (dict_ret || is_perf_xlator_enabled (status)) {
-                gf_log ("", GF_LOG_DEBUG,
-                        "read-ahead is enabled");
-                perf_xlator_list[i] = gf_strdup ("read-ahead");
-                if (!perf_xlator_list[i]) {
-                        gf_log ("", GF_LOG_ERROR,
-                                "Out of memory");
-                        ret = -1;
-                        goto out;
+                        return -1;
                 }
 
-                i++;
+                (*idx)++;
 
-        } else {
-                gf_log ("", GF_LOG_DEBUG,
-                        "read-ahead option is disabled");
+                break;
+        case 0:
+                gf_log ("", GF_LOG_DEBUG, "%s option is disabled", xlator_name);
+                break;
+        default:
+                GF_ASSERT (!"Biohazard!");
         }
 
-        dict_ret = dict_get_str (dict, "io-cache", &status);
-        if (dict_ret || is_perf_xlator_enabled (status)) {
-                gf_log ("", GF_LOG_DEBUG,
-                        "io-cache is enabled");
-                perf_xlator_list[i] = gf_strdup ("io-cache");
-                if (!perf_xlator_list[i]) {
-                        gf_log ("", GF_LOG_ERROR,
-                                "Out of memory");
-                        ret = -1;
-                        goto out;
-                }
+        ret = 0;
 
-                i++;
+out:
+        return ret;
+}
 
-        } else {
-                gf_log ("", GF_LOG_DEBUG,
-                        "io-cache option is disabled");
-        }
+static int
+generate_perf_xlator_list (dict_t *dict, char *perf_xlator_list[])
+{
+        int i   = 0;
+        int ret = 0;
 
-        dict_ret = dict_get_str (dict, "quick-read", &status);
-        if (dict_ret || is_perf_xlator_enabled (status)) {
-                gf_log ("", GF_LOG_DEBUG,
-                        "quick-read is enabled");
-                perf_xlator_list[i] = gf_strdup ("quick-read");
-                if (!perf_xlator_list[i]) {
-                        gf_log ("", GF_LOG_ERROR,
-                                "Out of memory");
-                        ret = -1;
-                        goto out;
-                }
+        GF_ASSERT (dict);
 
-                i++;
+        ret = add_perf_xlator_list_item (dict, perf_xlator_list,
+                                         "write-behind", &i);
+        if (ret == -1)
+                goto out;
 
-        } else {
-                gf_log ("", GF_LOG_DEBUG,
-                        "quick-read option is disabled");
-        }
+        ret = add_perf_xlator_list_item (dict, perf_xlator_list,
+                                         "read-ahead", &i);
+        if (ret == -1)
+                goto out;
 
-        dict_ret = dict_get_str (dict, "stat-prefetch", &status);
-        if (dict_ret || is_perf_xlator_enabled (status)) {
-                gf_log ("", GF_LOG_DEBUG,
-                        "stat-prefetch is enabled");
-                perf_xlator_list[i] = gf_strdup ("stat-prefetch");
-                if (!perf_xlator_list[i]) {
-                        gf_log ("", GF_LOG_ERROR,
-                                "Out of memory");
-                        ret = -1;
-                        goto out;
-                }
+        ret = add_perf_xlator_list_item (dict, perf_xlator_list,
+                                         "io-cache", &i);
+        if (ret == -1)
+                goto out;
 
-                i++;
+        ret = add_perf_xlator_list_item (dict, perf_xlator_list,
+                                         "quick-read", &i);
+        if (ret == -1)
+                goto out;
 
-        } else {
-                gf_log ("", GF_LOG_DEBUG,
-                        "stat-prefetch option is disabled");
-        }
+        ret = add_perf_xlator_list_item (dict, perf_xlator_list,
+                                         "stat-prefetch", &i);
+        if (ret == -1)
+                goto out;
 
 out:
         return ret;
-
 }
 
 static int