summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKotresh HR <khiremat@redhat.com>2017-06-15 08:31:06 -0400
committerRaghavendra Talur <rtalur@redhat.com>2017-06-20 04:54:16 +0000
commit8f8850ae8c7fd64db01ec19bfeb6ef4bd1911bd8 (patch)
tree553e4e5eb1fca9152e460516c82ca38b0fcee4d9
parent34b136a8b55a2518529e2bdc43de99e43868dde8 (diff)
feature/bitrot: Fix ondemand scrub
The flag which keeps tracks of whether the scrub frequency is changed from previous value should not be considered for on-demand scrubbing. It should be considered only for 'scrub-frequency' where it should not be re-scheduled if it is set to same value again. But in case ondemand scrub, it should start the scrub immediately no matter what the scrub-frequency. Reproducer: 1. Enable bitrot 2. Set scrub-throttle 3. Set ondemand scrub Make sure glusterd is not restarted while doing below steps > Change-Id: Ice5feaece7fff1579fb009d1a59d2b8292e23e0b > BUG: 1461845 > Signed-off-by: Kotresh HR <khiremat@redhat.com> > Reviewed-on: https://review.gluster.org/17552 > Smoke: Gluster Build System <jenkins@build.gluster.org> > CentOS-regression: Gluster Build System <jenkins@build.gluster.org> > Reviewed-by: Raghavendra Bhat <raghavendra@redhat.com> > NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> (cherry picked from commit f0fb166078d59cab2a33583591b6448326247c40) Change-Id: Ice5feaece7fff1579fb009d1a59d2b8292e23e0b BUG: 1462080 Signed-off-by: Kotresh HR <khiremat@redhat.com> Reviewed-on: https://review.gluster.org/17553 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: Atin Mukherjee <amukherj@redhat.com> Reviewed-by: Raghavendra Talur <rtalur@redhat.com>
-rw-r--r--xlators/features/bit-rot/src/bitd/bit-rot-scrub.c5
-rw-r--r--xlators/features/bit-rot/src/bitd/bit-rot.c8
2 files changed, 7 insertions, 6 deletions
diff --git a/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c b/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c
index 72bdb843488..e043ef84a52 100644
--- a/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c
+++ b/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c
@@ -1049,16 +1049,11 @@ br_fsscan_ondemand (xlator_t *this)
char timestr[1024] = {0,};
struct timeval now = {0,};
br_private_t *priv = NULL;
- struct br_scrubber *fsscrub = NULL;
struct br_monitor *scrub_monitor = NULL;
priv = this->private;
- fsscrub = &priv->fsscrub;
scrub_monitor = &priv->scrub_monitor;
- if (!fsscrub->frequency_reconf)
- return 0;
-
(void) gettimeofday (&now, NULL);
timo = BR_SCRUB_ONDEMAND;
diff --git a/xlators/features/bit-rot/src/bitd/bit-rot.c b/xlators/features/bit-rot/src/bitd/bit-rot.c
index e55a22f1cdc..42067949d8b 100644
--- a/xlators/features/bit-rot/src/bitd/bit-rot.c
+++ b/xlators/features/bit-rot/src/bitd/bit-rot.c
@@ -1682,8 +1682,14 @@ notify (xlator_t *this, int32_t event, void *data, ...)
gf_log (this->name, GF_LOG_INFO, "BitRot scrub ondemand "
"called");
- if (scrub_monitor->state != BR_SCRUB_STATE_PENDING)
+ if (scrub_monitor->state != BR_SCRUB_STATE_PENDING) {
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ BRB_MSG_RESCHEDULE_SCRUBBER_FAILED,
+ "on demand scrub schedule failed. Scrubber is "
+ "not in pending state. Current state is %d",
+ scrub_monitor->state);
return -2;
+ }
/* Needs synchronization with reconfigure thread */
pthread_mutex_lock (&priv->lock);