summaryrefslogtreecommitdiffstats
path: root/xlators/features/bit-rot/src
diff options
context:
space:
mode:
authorGaurav Kumar Garg <ggarg@redhat.com>2015-06-05 13:58:28 +0530
committerVenky Shankar <vshankar@redhat.com>2015-06-15 05:23:46 -0700
commit554fa0c1315d0b4b78ba35a2d332d7ac0fd07d48 (patch)
tree2b56e439a5547fe27e6f33b9bffb5dd24ba38654 /xlators/features/bit-rot/src
parent3fb18451311c34aeced1054472b6f81fc13dd679 (diff)
features/bitrot: tuanble object signing waiting time value for bitrot
Currently bitrot using 120 second waiting time for object to be signed after all fop's released. This signing waiting time value should be tunable. Command for changing the signing waiting time will be #gluster volume bitrot <VOLNAME> signing-time <waiting time value in second> Change-Id: I89f3121564c1bbd0825f60aae6147413a2fbd798 BUG: 1228680 Signed-off-by: Gaurav Kumar Garg <ggarg@redhat.com> Signed-off-by: Venky Shankar <vshankar@redhat.com> Reviewed-on: http://review.gluster.org/11105
Diffstat (limited to 'xlators/features/bit-rot/src')
-rw-r--r--xlators/features/bit-rot/src/bitd/bit-rot.c37
-rw-r--r--xlators/features/bit-rot/src/bitd/bit-rot.h2
2 files changed, 31 insertions, 8 deletions
diff --git a/xlators/features/bit-rot/src/bitd/bit-rot.c b/xlators/features/bit-rot/src/bitd/bit-rot.c
index a645085..651c42f 100644
--- a/xlators/features/bit-rot/src/bitd/bit-rot.c
+++ b/xlators/features/bit-rot/src/bitd/bit-rot.c
@@ -748,8 +748,11 @@ br_initialize_timer (xlator_t *this, br_object_t *object, br_child_t *child,
goto out;
INIT_LIST_HEAD (&timer->entry);
+ timer->expires = (priv->expiry_time >> 1);
+ if (!timer->expires)
+ timer->expires = 1;
+
timer->data = object;
- timer->expires = priv->expiry_time;
timer->function = br_add_object_to_queue;
gf_tw_add_timer (priv->timer_wheel, timer);
@@ -1486,12 +1489,28 @@ br_rate_limit_signer (xlator_t *this, int child_count, int numbricks)
}
static int32_t
+br_signer_handle_options (xlator_t *this, br_private_t *priv, dict_t *options)
+{
+ if (options)
+ GF_OPTION_RECONF ("expiry-time", priv->expiry_time,
+ options, uint32, error_return);
+ else
+ GF_OPTION_INIT ("expiry-time", priv->expiry_time,
+ uint32, error_return);
+
+ return 0;
+
+error_return:
+ return -1;
+}
+
+static int32_t
br_signer_init (xlator_t *this, br_private_t *priv)
{
int32_t ret = 0;
int numbricks = 0;
- GF_OPTION_INIT ("expiry-time", priv->expiry_time, int32, error_return);
+ GF_OPTION_INIT ("expiry-time", priv->expiry_time, uint32, error_return);
GF_OPTION_INIT ("brick-count", numbricks, int32, error_return);
ret = br_rate_limit_signer (this, priv->child_count, numbricks);
@@ -1576,6 +1595,8 @@ init (xlator_t *this)
if (!priv->iamscrubber) {
ret = br_signer_init (this, priv);
+ if (!ret)
+ ret = br_signer_handle_options (this, priv, NULL);
} else {
ret = br_scrubber_init (this, priv);
if (!ret)
@@ -1646,8 +1667,12 @@ reconfigure (xlator_t *this, dict_t *options)
priv = this->private;
- if (!priv->iamscrubber)
+ if (!priv->iamscrubber) {
+ ret = br_signer_handle_options (this, priv, options);
+ if (ret)
+ goto err;
return 0;
+ }
ret = br_scrubber_handle_options (this, priv, options);
if (ret)
@@ -1695,10 +1720,8 @@ struct xlator_cbks cbks;
struct volume_options options[] = {
{ .key = {"expiry-time"},
.type = GF_OPTION_TYPE_INT,
- /* Let the default timer be half the value of the wait time for
- * sining (which is 120 as of now) */
- .default_value = "60",
- .description = "default time duration for which an object waits "
+ .default_value = SIGNING_TIMEOUT,
+ .description = "Waiting time for an object on which it waits "
"before it is signed",
},
{ .key = {"brick-count"},
diff --git a/xlators/features/bit-rot/src/bitd/bit-rot.h b/xlators/features/bit-rot/src/bitd/bit-rot.h
index e702f3a..7be4398 100644
--- a/xlators/features/bit-rot/src/bitd/bit-rot.h
+++ b/xlators/features/bit-rot/src/bitd/bit-rot.h
@@ -157,7 +157,7 @@ struct br_private {
and ready to be picked up for
signing and the workers which sign
the objects */
- int32_t expiry_time; /* objects "wait" time */
+ uint32_t expiry_time; /* objects "wait" time */
br_tbf_t *tbf; /* token bucket filter */