diff options
author | Gaurav Kumar Garg <ggarg@redhat.com> | 2015-06-05 13:58:28 +0530 |
---|---|---|
committer | Venky Shankar <vshankar@redhat.com> | 2015-06-15 05:23:46 -0700 |
commit | 554fa0c1315d0b4b78ba35a2d332d7ac0fd07d48 (patch) | |
tree | 2b56e439a5547fe27e6f33b9bffb5dd24ba38654 /xlators/features | |
parent | 3fb18451311c34aeced1054472b6f81fc13dd679 (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')
-rw-r--r-- | xlators/features/bit-rot/src/bitd/bit-rot.c | 37 | ||||
-rw-r--r-- | xlators/features/bit-rot/src/bitd/bit-rot.h | 2 |
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 a645085fd58..651c42fcb82 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 e702f3ac72d..7be4398d00d 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 */ |