diff options
Diffstat (limited to 'xlators')
| -rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 6 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-self-heald.c | 14 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-self-heald.h | 3 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr.c | 10 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr.h | 2 | 
5 files changed, 24 insertions, 11 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 5d56efca777..5f8159304cf 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -5626,10 +5626,8 @@ afr_notify(xlator_t *this, int32_t event, void *data, void *data2)           * b) Already heard from everyone, but we now got a child-up           *    event.           */ -        if (have_heard_from_all && priv->shd.iamshd) { -            for (i = 0; i < priv->child_count; i++) -                if (priv->child_up[i]) -                    afr_selfheal_childup(this, i); +        if (have_heard_from_all) { +            afr_selfheal_childup(this, priv);          }      }  out: diff --git a/xlators/cluster/afr/src/afr-self-heald.c b/xlators/cluster/afr/src/afr-self-heald.c index 7a2f43c646a..824f8c0127c 100644 --- a/xlators/cluster/afr/src/afr-self-heald.c +++ b/xlators/cluster/afr/src/afr-self-heald.c @@ -1258,12 +1258,18 @@ out:      return ret;  } -int -afr_selfheal_childup(xlator_t *this, int subvol) +void +afr_selfheal_childup(xlator_t *this, afr_private_t *priv)  { -    afr_shd_index_healer_spawn(this, subvol); +    int subvol = 0; -    return 0; +    if (!priv->shd.iamshd) +        return; +    for (subvol = 0; subvol < priv->child_count; subvol++) +        if (priv->child_up[subvol]) +            afr_shd_index_healer_spawn(this, subvol); + +    return;  }  int diff --git a/xlators/cluster/afr/src/afr-self-heald.h b/xlators/cluster/afr/src/afr-self-heald.h index 7de7c431460..19905394540 100644 --- a/xlators/cluster/afr/src/afr-self-heald.h +++ b/xlators/cluster/afr/src/afr-self-heald.h @@ -60,9 +60,6 @@ typedef struct {  } afr_self_heald_t;  int -afr_selfheal_childup(xlator_t *this, int subvol); - -int  afr_selfheal_daemon_init(xlator_t *this);  int diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c index 0a5bab89bcf..0b27f507843 100644 --- a/xlators/cluster/afr/src/afr.c +++ b/xlators/cluster/afr/src/afr.c @@ -141,6 +141,7 @@ reconfigure(xlator_t *this, dict_t *options)      afr_private_t *priv = NULL;      xlator_t *read_subvol = NULL;      int read_subvol_index = -1; +    int timeout_old = 0;      int ret = -1;      int index = -1;      char *qtype = NULL; @@ -150,6 +151,7 @@ reconfigure(xlator_t *this, dict_t *options)      char *locking_scheme = NULL;      gf_boolean_t consistent_io = _gf_false;      gf_boolean_t choose_local_old = _gf_false; +    gf_boolean_t enabled_old = _gf_false;      priv = this->private; @@ -255,11 +257,13 @@ reconfigure(xlator_t *this, dict_t *options)      GF_OPTION_RECONF("ensure-durability", priv->ensure_durability, options,                       bool, out); +    enabled_old = priv->shd.enabled;      GF_OPTION_RECONF("self-heal-daemon", priv->shd.enabled, options, bool, out);      GF_OPTION_RECONF("iam-self-heal-daemon", priv->shd.iamshd, options, bool,                       out); +    timeout_old = priv->shd.timeout;      GF_OPTION_RECONF("heal-timeout", priv->shd.timeout, options, int32, out);      GF_OPTION_RECONF("consistent-metadata", priv->consistent_metadata, options, @@ -283,6 +287,12 @@ reconfigure(xlator_t *this, dict_t *options)          consistent_io = _gf_false;      priv->consistent_io = consistent_io; +    if (priv->shd.enabled) { +        if ((priv->shd.enabled != enabled_old) || +            (timeout_old != priv->shd.timeout)) +            afr_selfheal_childup(this, priv); +    } +      ret = 0;  out:      return ret; diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h index 88e327bb00e..600c7551801 100644 --- a/xlators/cluster/afr/src/afr.h +++ b/xlators/cluster/afr/src/afr.h @@ -1339,4 +1339,6 @@ afr_lookup_has_quorum(call_frame_t *frame, xlator_t *this,  void  afr_mark_new_entry_changelog(call_frame_t *frame, xlator_t *this); +void +afr_selfheal_childup(xlator_t *this, afr_private_t *priv);  #endif /* __AFR_H__ */  | 
