diff options
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; |