diff options
| author | Kotresh HR <khiremat@redhat.com> | 2017-06-15 08:31:06 -0400 | 
|---|---|---|
| committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2017-06-19 15:50:33 +0000 | 
| commit | 94b378c18ae968719beb71bdf5c8229f7df5625f (patch) | |
| tree | 0c05dd019b48e63cf6ab42e8742f06d7f505ce31 /xlators | |
| parent | 6e377faf4490f20a63634c8baecb76886c0dac8a (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: 1462127
Signed-off-by: Kotresh HR <khiremat@redhat.com>
Reviewed-on: https://review.gluster.org/17555
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: Shyamsundar Ranganathan <srangana@redhat.com>
Diffstat (limited to 'xlators')
| -rw-r--r-- | xlators/features/bit-rot/src/bitd/bit-rot-scrub.c | 5 | ||||
| -rw-r--r-- | xlators/features/bit-rot/src/bitd/bit-rot.c | 8 | 
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 6e86ceb02e7..c591db53ad4 100644 --- a/xlators/features/bit-rot/src/bitd/bit-rot.c +++ b/xlators/features/bit-rot/src/bitd/bit-rot.c @@ -1680,8 +1680,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);  | 
