diff options
Diffstat (limited to 'xlators/cluster/afr/src/afr-common.c')
-rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index d503609e8a2..dd6c1dfac5c 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -4374,27 +4374,21 @@ __afr_transform_event_from_state (afr_private_t *priv) return GF_EVENT_MAXVAL; up_children = __afr_get_up_children_count (priv); - if (up_children) { - /* We received at least one child up and there are pending - * notifications from some children. Treat these children as - * having sent a GF_EVENT_CHILD_DOWN. i.e. set the event as - * GF_EVENT_CHILD_MODIFIED, as done in afr_notify() */ - for (i = 0; i < priv->child_count; i++) { - if (priv->last_event[i]) - continue; - priv->last_event[i] = GF_EVENT_CHILD_MODIFIED; - priv->child_up[i] = 0; - } + /* Treat the children with pending notification, as having sent a + * GF_EVENT_CHILD_DOWN. i.e. set the event as GF_EVENT_SOME_DESCENDENT_DOWN, + * as done in afr_notify() */ + for (i = 0; i < priv->child_count; i++) { + if (priv->last_event[i]) + continue; + priv->last_event[i] = GF_EVENT_SOME_DESCENDENT_DOWN; + priv->child_up[i] = 0; + } + + if (up_children) + /* We received at least one child up */ return GF_EVENT_CHILD_UP; - } else { - for (i = 0; i < priv->child_count; i++) { - if (priv->last_event[i]) - continue; - priv->last_event[i] = GF_EVENT_SOME_CHILD_DOWN; - priv->child_up[i] = 0; - } + else return GF_EVENT_CHILD_DOWN; - } return GF_EVENT_MAXVAL; } @@ -4563,7 +4557,7 @@ afr_notify (xlator_t *this, int32_t event, "subvol=%s", this->name); } else { - event = GF_EVENT_CHILD_MODIFIED; + event = GF_EVENT_SOME_DESCENDENT_UP; } priv->last_event[idx] = event; @@ -4587,7 +4581,7 @@ afr_notify (xlator_t *this, int32_t event, gf_event (EVENT_AFR_SUBVOLS_DOWN, "subvol=%s", this->name); } else { - event = GF_EVENT_SOME_CHILD_DOWN; + event = GF_EVENT_SOME_DESCENDENT_DOWN; } priv->last_event[idx] = event; @@ -4599,7 +4593,7 @@ afr_notify (xlator_t *this, int32_t event, break; - case GF_EVENT_SOME_CHILD_DOWN: + case GF_EVENT_SOME_DESCENDENT_DOWN: priv->last_event[idx] = event; break; case GF_EVENT_UPCALL: |