summaryrefslogtreecommitdiffstats
path: root/cli/src/cli-cmd-parser.c
diff options
context:
space:
mode:
authorKrutika Dhananjay <kdhananj@redhat.com>2016-09-22 16:48:54 +0530
committerPranith Kumar Karampuri <pkarampu@redhat.com>2016-11-29 02:52:15 -0800
commiteaeef4b80cd9e19f8ecda5f842732470712d476b (patch)
tree3b5c47fb4f9abe941cf0204b6978610e16bf0fd6 /cli/src/cli-cmd-parser.c
parent290999db11feedb3021022edfaabef516bf5f6e6 (diff)
cluster/afr: CLI for granular entry heal enablement/disablement
Backport of: http://review.gluster.org/15747 When there are already existing non-granular indices created that are yet to be healed, if granular-entry-heal option is toggled from 'off' to 'on', AFR self-heal whenever it kicks in, will try to look for granular indices in 'entry-changes'. Because of the absence of name indices, granular entry healing logic will fail to heal these directories, and worse yet unset pending extended attributes with the assumption that are no entries that need heal. To get around this, a new CLI is introduced which will invoke glfsheal program to figure whether at the time an attempt is made to enable granular entry heal, there are pending heals on the volume OR there are one or more bricks that are down. If either of them is true, the command will be failed with the appropriate error. New CLI: gluster volume heal <VOL> granular-entry-heal {enable,disable} Change-Id: Ic79519468a087cd337df664b968188c4adcba43a BUG: 1398500 Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com> Reviewed-on: http://review.gluster.org/15941 Smoke: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Diffstat (limited to 'cli/src/cli-cmd-parser.c')
-rw-r--r--cli/src/cli-cmd-parser.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c
index 6d57290aaaa..6000fb5ffee 100644
--- a/cli/src/cli-cmd-parser.c
+++ b/cli/src/cli-cmd-parser.c
@@ -3797,7 +3797,8 @@ cli_cmd_volume_heal_options_parse (const char **words, int wordcount,
if (wordcount == 5) {
if (strcmp (words[3], "info") &&
- strcmp (words[3], "statistics")) {
+ strcmp (words[3], "statistics") &&
+ strcmp (words[3], "granular-entry-heal")) {
ret = -1;
goto out;
}
@@ -3827,6 +3828,19 @@ cli_cmd_volume_heal_options_parse (const char **words, int wordcount,
goto done;
}
}
+
+ if (!strcmp (words[3], "granular-entry-heal")) {
+ if (!strcmp (words[4], "enable")) {
+ ret = dict_set_int32 (dict, "heal-op",
+ GF_SHD_OP_GRANULAR_ENTRY_HEAL_ENABLE);
+ goto done;
+ } else if (!strcmp (words[4], "disable")) {
+ ret = dict_set_int32 (dict, "heal-op",
+ GF_SHD_OP_GRANULAR_ENTRY_HEAL_DISABLE);
+ goto done;
+ }
+ }
+
ret = -1;
goto out;
}