diff options
| author | Anuradha Talur <atalur@redhat.com> | 2013-12-15 13:26:15 +0000 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2013-12-19 08:08:51 -0800 | 
| commit | 7b392ad395ae7597a3ed3a1aa7fe61faefd96368 (patch) | |
| tree | 09d24d8ad3cb15f2e5501684989edd99d6962070 | |
| parent | e22c42d9154c2d9090149003038f38164701dc08 (diff) | |
glusterd : enable/disable quota using volume set cmd deprecated.
Using the command 'gluster volume set <volname> quota {on|off}'
doesn't really enable/disable quota. So, a message to the user is
provided. Message asks the user to use 'gluster volume
quota <volname> {enable|disable}' instead.
Improvement of the previous method to solve the issue.
Change-Id: Ibeda35bb49ec7b541d53e592b48fd132380fce76
BUG: 1024626
Signed-off-by: Anuradha Talur <atalur@redhat.com>
Reviewed-on: http://review.gluster.org/6512
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
| -rw-r--r-- | cli/src/cli-cmd-parser.c | 31 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 38 | 
2 files changed, 38 insertions, 31 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index 0aeaccd0ce0..dd9398184aa 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -38,13 +38,6 @@ str_getunamb (const char *tok, char **opwords)          return (char *)cli_getunamb (tok, (void **)opwords, id_sel);  } -static inline gf_boolean_t -cli_is_quota_cmd (char *key) -{ -        return ((strcmp (key, "quota") == 0) || -                (strcmp (key, "features.quota") == 0)); -} -  int32_t  cli_cmd_bricks_parse (const char **words, int wordcount, int brick_index,                        char **bricks, int *brick_count) @@ -865,11 +858,6 @@ cli_cmd_volume_set_parse (const char **words, int wordcount, dict_t **options,          char                    *value = NULL;          int                     i = 0;          char                    str[50] = {0,}; -        char                    *true_keys[] = {"on", "enable", "yes", -                                                "true", "1", NULL}; -        char                    *false_keys[] = {"off", "disable", "no", -                                               "false", "0", NULL}; -        char                    *w1 = NULL, *w2 = NULL;          GF_ASSERT (words);          GF_ASSERT (options); @@ -922,25 +910,6 @@ cli_cmd_volume_set_parse (const char **words, int wordcount, dict_t **options,                  if (ret == 0)                          *options = dict;                  goto out; -        } else if (wordcount == 5 && cli_is_quota_cmd ((char *)words[3])) { -                value = (char *)words[4]; -                w1 = str_getunamb (value, true_keys); -                w2 = str_getunamb (value, false_keys); -                if (w1 != NULL) { -                        gf_asprintf (op_errstr,"'gluster volume set <VOLNAME> " -                                     "%s %s' is deprecated. Use 'gluster " -                                     "volume quota <VOLNAME> enable' instead.", -                                     (char *)words[3], w1); -                        ret = -1; -                        goto out; -                } else if (w2 != NULL) { -                        gf_asprintf (op_errstr,"'gluster volume set <VOLNAME> " -                                     "%s %s' is deprecated. Use 'gluster " -                                     "volume quota <VOLNAME> disable' instead.", -                                     (char *)words[3], w2); -                        ret = -1; -                        goto out; -                }          }          for (i = 3; i < wordcount; i+=2) { diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index 0bf7a335298..06ee849f53d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -155,6 +155,40 @@ glusterd_op_sm_inject_all_acc ()          return ret;  } +static int +glusterd_check_quota_cmd (char *key, char *value, char *errstr, size_t size) +{ +        int                ret = -1; +        gf_boolean_t       b   = _gf_false; + +        if ((strcmp (key, "quota") == 0) || +           (strcmp (key, "features.quota") == 0)) { +                ret = gf_string2boolean (value, &b); +                if (ret) +                        goto out; +                if (b) { +                          snprintf (errstr, size," 'gluster " +                                    "volume set <VOLNAME> %s %s' is " +                                    "deprecated. Use 'gluster volume " +                                    "quota <VOLNAME> enable' instead.", +                                     key, value); +                          ret = -1; +                          goto out; +                } else { +                          snprintf (errstr, size, " 'gluster " +                                    "volume set <VOLNAME> %s %s' is " +                                    "deprecated. Use 'gluster volume " +                                    "quota <VOLNAME> disable' instead.", +                                     key, value); +                          ret = -1; +                          goto out; +                } +        } +        ret = 0; +out: +        return ret; +} +  int  glusterd_brick_op_build_payload (glusterd_op_t op, glusterd_brickinfo_t *brickinfo,                                   gd1_mgmt_brick_op_req **req, dict_t *dict) @@ -544,6 +578,10 @@ glusterd_op_stage_set_volume (dict_t *dict, char **op_errstr)                          }                  } +                ret = glusterd_check_quota_cmd (key, value, errstr, sizeof (errstr)); +                if (ret) +                        goto out; +                  if (is_key_glusterd_hooks_friendly (key))                          continue;  | 
