diff options
author | Kotresh HR <khiremat@redhat.com> | 2016-06-30 14:49:51 +0530 |
---|---|---|
committer | Jeff Darcy <jdarcy@redhat.com> | 2016-07-05 04:46:14 -0700 |
commit | 7df1174f7bed2a00631cf17201f5217a053afeb1 (patch) | |
tree | fce0e43bc1c6a77af9399e56ff286c1f89104959 | |
parent | 427ef5511232614bafcab686ad797cebb6a2d6b5 (diff) |
features/bitrot: Option to set scrub interval to a minute
Bitrot scrub-frequency supports "hourly|daily|weekly|biweekly|monthly".
But it is painful for testing as minimum scrub-interval is an hour
Hence introducing a scrub interval of minute to ease testing.
It is intentionally not exposed in bitrot command help as it is
only for testing.
e.g.,
gluster vol bitrot <volname> scrub-frequency minute
Change-Id: I155a65298d3fad5ae9e529d9c7d4b0d25fa297c0
BUG: 1351537
Signed-off-by: Kotresh HR <khiremat@redhat.com>
Reviewed-on: http://review.gluster.org/14836
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: Jeff Darcy <jdarcy@redhat.com>
-rw-r--r-- | cli/src/cli-cmd-parser.c | 2 | ||||
-rw-r--r-- | xlators/features/bit-rot/src/bitd/bit-rot-scrub.c | 7 | ||||
-rw-r--r-- | xlators/features/bit-rot/src/bitd/bit-rot.h | 1 |
3 files changed, 9 insertions, 1 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index a570c343133..77092b47591 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -5181,7 +5181,7 @@ cli_cmd_bitrot_parse (const char **words, int wordcount, dict_t **options) char *scrub_freq_values[] = {"hourly", "daily", "weekly", "biweekly", "monthly", - NULL}; + "minute", NULL}; char *scrub_values[] = {"pause", "resume", "status", NULL}; dict_t *dict = NULL; 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 8c88d62eceb..8b95f056a16 100644 --- a/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c +++ b/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c @@ -836,6 +836,7 @@ br_fsscan_calculate_delta (uint32_t times) return times; } +#define BR_SCRUB_MINUTE (60) #define BR_SCRUB_HOURLY (60 * 60) #define BR_SCRUB_DAILY (1 * 24 * 60 * 60) #define BR_SCRUB_WEEKLY (7 * 24 * 60 * 60) @@ -848,6 +849,9 @@ br_fsscan_calculate_timeout (scrub_freq_t freq) uint32_t timo = 0; switch (freq) { + case BR_FSSCRUB_FREQ_MINUTE: + timo = br_fsscan_calculate_delta (BR_SCRUB_MINUTE); + break; case BR_FSSCRUB_FREQ_HOURLY: timo = br_fsscan_calculate_delta (BR_SCRUB_HOURLY); break; @@ -1421,6 +1425,8 @@ br_scrubber_handle_freq (xlator_t *this, br_private_t *priv, frequency = BR_FSSCRUB_FREQ_BIWEEKLY; } else if (strcasecmp (tmp, "monthly") == 0) { frequency = BR_FSSCRUB_FREQ_MONTHLY; + } else if (strcasecmp (tmp, "minute") == 0) { + frequency = BR_FSSCRUB_FREQ_MINUTE; } else if (strcasecmp (tmp, BR_SCRUB_STALLED) == 0) { frequency = BR_FSSCRUB_FREQ_STALLED; } else @@ -1453,6 +1459,7 @@ static void br_scrubber_log_option (xlator_t *this, [BR_FSSCRUB_FREQ_WEEKLY] = "weekly", [BR_FSSCRUB_FREQ_BIWEEKLY] = "biweekly", [BR_FSSCRUB_FREQ_MONTHLY] = "monthly (30 days)", + [BR_FSSCRUB_FREQ_MINUTE] = "every minute", }; if (scrubstall) diff --git a/xlators/features/bit-rot/src/bitd/bit-rot.h b/xlators/features/bit-rot/src/bitd/bit-rot.h index 4153d0e4724..8e9267048be 100644 --- a/xlators/features/bit-rot/src/bitd/bit-rot.h +++ b/xlators/features/bit-rot/src/bitd/bit-rot.h @@ -50,6 +50,7 @@ typedef enum scrub_freq { BR_FSSCRUB_FREQ_WEEKLY, BR_FSSCRUB_FREQ_BIWEEKLY, BR_FSSCRUB_FREQ_MONTHLY, + BR_FSSCRUB_FREQ_MINUTE, BR_FSSCRUB_FREQ_STALLED, } scrub_freq_t; |