From 22827d51c232c44a8f5ac003529d907d93baf7b0 Mon Sep 17 00:00:00 2001 From: Gaurav Kumar Garg Date: Wed, 25 Nov 2015 17:38:43 +0530 Subject: bitrot: getting correct value of scrub stat's When user execute bitrot scrub status command then gluster is not giving correct value of Number of Scrubbed files, Number of Unsigned files, Last completed scrub time, Duration of last scrub. With this patch scrub status will give correct value for all the above fields. Change-Id: Ic966f76d22db5b0c889e6386a1c2219afbda1f49 BUG: 1285989 Signed-off-by: Gaurav Kumar Garg Signed-off-by: Kotresh HR Reviewed-on: http://review.gluster.org/12776 Tested-by: NetBSD Build System Tested-by: Gluster Build System Reviewed-by: Venky Shankar --- xlators/features/bit-rot/src/bitd/bit-rot.c | 45 ++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'xlators/features/bit-rot/src/bitd/bit-rot.c') diff --git a/xlators/features/bit-rot/src/bitd/bit-rot.c b/xlators/features/bit-rot/src/bitd/bit-rot.c index b28bf2622af..4ee2020aaf1 100644 --- a/xlators/features/bit-rot/src/bitd/bit-rot.c +++ b/xlators/features/bit-rot/src/bitd/bit-rot.c @@ -1550,7 +1550,16 @@ int br_scrubber_status_get (xlator_t *this, dict_t **dict) { - int ret = -1; + int ret = -1; + char key[256] = {0,}; + br_private_t *priv = NULL; + struct br_scrub_stats *scrub_stats = NULL; + + priv = this->private; + + GF_VALIDATE_OR_GOTO ("bit-rot", priv, out); + + scrub_stats = &priv->scrub_stat; ret = br_get_bad_objects_list (this, dict); if (ret) { @@ -1558,6 +1567,40 @@ br_scrubber_status_get (xlator_t *this, dict_t **dict) "files"); } + memset (key, 0, 256); + snprintf (key, 256, "scrubbed-files"); + ret = dict_set_uint32 (*dict, key, scrub_stats->scrubbed_files); + if (ret) { + gf_msg_debug (this->name, 0, "Failed to setting scrubbed file " + "entry to the dictionary"); + } + + memset (key, 0, 256); + snprintf (key, 256, "unsigned-files"); + ret = dict_set_uint32 (*dict, key, scrub_stats->unsigned_files); + if (ret) { + gf_msg_debug (this->name, 0, "Failed to set unsigned file count" + " entry to the dictionary"); + } + + memset (key, 0, 256); + snprintf (key, 256, "scrub-duration"); + ret = dict_set_uint32 (*dict, key, scrub_stats->scrub_duration); + if (ret) { + gf_msg_debug (this->name, 0, "Failed to set scrub duration" + " entry to the dictionary"); + } + + memset (key, 0, 256); + snprintf (key, 256, "last-scrub-time"); + ret = dict_set_dynstr_with_alloc (*dict, key, + scrub_stats->last_scrub_time); + if (ret) { + gf_msg_debug (this->name, 0, "Failed to set " + "last scrub time value"); + } + +out: return ret; } -- cgit