From 6faf89f4179c452be20f02966b9722641938599d Mon Sep 17 00:00:00 2001 From: Gaurav Kumar Garg Date: Sat, 11 Apr 2015 17:05:45 +0530 Subject: glusterd: volume info should not show "feature.scrub: resume" if scrub resumed If bitrot is enable on the volume and if user paused the scrub process and then resume the scrub process then command #gluster volume info should show status of option features.scrub: Active. If bitrot is enable on the volume and user disable the bitrot on the volume then command #gluster volume info should show status of option features.scrub: Inactive. If bitrot is enable on the volume and user paused the scrub porcess then command gluster volume info should show the status of option features.scrub: pause. Change-Id: I55972eef3b8570b7cb05dc28700d4e28dc45a86a BUG: 1209818 Signed-off-by: Gaurav Kumar Garg Reviewed-on: http://review.gluster.org/10207 Tested-by: Gluster Build System Reviewed-by: Venky Shankar Reviewed-by: Krishnan Parthasarathi --- xlators/mgmt/glusterd/src/glusterd-bitrot.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'xlators/mgmt/glusterd/src/glusterd-bitrot.c') diff --git a/xlators/mgmt/glusterd/src/glusterd-bitrot.c b/xlators/mgmt/glusterd/src/glusterd-bitrot.c index 13e08962c7a..55a5e3ac750 100644 --- a/xlators/mgmt/glusterd/src/glusterd-bitrot.c +++ b/xlators/mgmt/glusterd/src/glusterd-bitrot.c @@ -208,7 +208,12 @@ glusterd_bitrot_scrub (glusterd_volinfo_t *volinfo, dict_t *dict, goto out; } - option = gf_strdup (scrub_value); + if (!strcmp (scrub_value, "resume")) { + option = gf_strdup ("Active"); + } else { + option = gf_strdup (scrub_value); + } + ret = dict_set_dynstr (volinfo->dict, key, option); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to set option %s", @@ -253,6 +258,15 @@ glusterd_bitrot_enable (glusterd_volinfo_t *volinfo, char **op_errstr) goto out; } + /*Once bitrot is enable scrubber should be in Active state*/ + ret = dict_set_dynstr_with_alloc (volinfo->dict, "features.scrub", + "Active"); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to set option " + "features.scrub value"); + goto out; + } + ret = 0; out: if (ret && op_errstr && !*op_errstr) @@ -280,6 +294,15 @@ glusterd_bitrot_disable (glusterd_volinfo_t *volinfo, char **op_errstr) goto out; } + /*Once bitrot disabled scrubber should be Inactive state*/ + ret = dict_set_dynstr_with_alloc (volinfo->dict, "features.scrub", + "Inactive"); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to set " + "features.scrub value"); + goto out; + } + ret = 0; out: if (ret && op_errstr && !*op_errstr) -- cgit