diff options
author | Pranith Kumar K <pranithk@gluster.com> | 2012-02-21 22:06:29 +0530 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2012-03-01 09:16:30 -0800 |
commit | 326a7d04260c15f1b6e201621438844f8747b963 (patch) | |
tree | 0080b4d4521ba930dac4d20f7e32d91aa8308f9b /xlators/cluster/afr | |
parent | 86f631f4283cba7185e5b1d5a3be4b9a614ed985 (diff) |
cluster/afr: Add new option to know which process it is in
Afr xl needs to maintain inode-table inside the xl if it is in
self-heal-daemon. The code was depending on the option
self-heal-daemon to do this. This is wrong as the option can be
reconfigured to on/off. Added a new option which can't be
reconfigured for this purpose.
Change-Id: Idc42c403c4bd9b73d1f328427ae4158ff1420b3a
BUG: 795741
Signed-off-by: Pranith Kumar K <pranithk@gluster.com>
Reviewed-on: http://review.gluster.com/2787
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
Diffstat (limited to 'xlators/cluster/afr')
-rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 4 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr-self-heald.c | 3 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr.c | 8 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr.h | 1 |
4 files changed, 11 insertions, 5 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index d241825940f..e82eecbf03c 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -3555,10 +3555,8 @@ afr_notify (xlator_t *this, int32_t event, ret = 0; if (propagate) ret = default_notify (this, event, data); - if (call_psh && priv->shd.enabled) { - gf_log (this->name, GF_LOG_DEBUG, "start crawl: %d", up_child); + if (call_psh && priv->shd.iamshd) afr_do_poll_self_heal ((void*) (long) up_child); - } out: return ret; diff --git a/xlators/cluster/afr/src/afr-self-heald.c b/xlators/cluster/afr/src/afr-self-heald.c index c8fb4d38ee6..34376b1853d 100644 --- a/xlators/cluster/afr/src/afr-self-heald.c +++ b/xlators/cluster/afr/src/afr-self-heald.c @@ -486,7 +486,8 @@ afr_do_poll_self_heal (void *data) priv = this->private; shd = &priv->shd; - _do_self_heal_on_subvol (this, child, INDEX); + if (shd->enabled) + _do_self_heal_on_subvol (this, child, INDEX); if (shd->pos[child] == AFR_POS_REMOTE) goto out; timeout.tv_sec = AFR_POLL_TIMEOUT; diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c index da0e56ffc84..ce82aede839 100644 --- a/xlators/cluster/afr/src/afr.c +++ b/xlators/cluster/afr/src/afr.c @@ -276,6 +276,8 @@ init (xlator_t *this) GF_OPTION_INIT ("self-heal-daemon", priv->shd.enabled, bool, out); + GF_OPTION_INIT ("iam-self-heal-daemon", priv->shd.iamshd, bool, out); + GF_OPTION_INIT ("data-change-log", priv->data_change_log, bool, out); GF_OPTION_INIT ("metadata-change-log", priv->metadata_change_log, bool, @@ -365,7 +367,7 @@ init (xlator_t *this) priv->first_lookup = 1; priv->root_inode = NULL; - if (!priv->shd.enabled) { + if (!priv->shd.iamshd) { ret = 0; goto out; } @@ -574,6 +576,10 @@ struct volume_options options[] = { .type = GF_OPTION_TYPE_BOOL, .default_value = "off", }, + { .key = {"iam-self-heal-daemon"}, + .type = GF_OPTION_TYPE_BOOL, + .default_value = "off", + }, { .key = {"quorum-type"}, .type = GF_OPTION_TYPE_STR, .value = { "none", "auto", "fixed", "" }, diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h index a9162b8adc0..fc77b806e2f 100644 --- a/xlators/cluster/afr/src/afr.h +++ b/xlators/cluster/afr/src/afr.h @@ -96,6 +96,7 @@ typedef enum { typedef struct afr_self_heald_ { gf_boolean_t enabled; + gf_boolean_t iamshd; afr_crawl_type_t *pending; gf_boolean_t *inprogress; afr_child_pos_t *pos; |