diff options
Diffstat (limited to 'xlators/cluster')
-rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 3 | ||||
-rw-r--r-- | xlators/cluster/ec/src/ec.c | 13 |
2 files changed, 14 insertions, 2 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 46396cf1163..a400031b404 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -4807,8 +4807,7 @@ afr_notify (xlator_t *this, int32_t event, break; for (i = 0; i < priv->child_count; i++) { if (dict_get (up_ci->dict, priv->pending_key[i])) { - ret = dict_set_int8 (up_ci->dict, - MDC_INVALIDATE_IATT, 0); + up_ci->flags |= UP_INVAL_ATTR; itable = ((xlator_t *)this->graph->top)->itable; /*Internal processes may not have itable for top xlator*/ if (itable) diff --git a/xlators/cluster/ec/src/ec.c b/xlators/cluster/ec/src/ec.c index 677761256b4..4d550176f19 100644 --- a/xlators/cluster/ec/src/ec.c +++ b/xlators/cluster/ec/src/ec.c @@ -11,6 +11,7 @@ #include "defaults.h" #include "statedump.h" #include "compat-errno.h" +#include "upcall-utils.h" #include "ec.h" #include "ec-messages.h" @@ -472,10 +473,21 @@ ec_notify (xlator_t *this, int32_t event, void *data, void *data2) dict_t *output = NULL; gf_boolean_t propagate = _gf_true; int32_t orig_event = event; + struct gf_upcall *up_data = NULL; + struct gf_upcall_cache_invalidation *up_ci = NULL; gf_msg_trace (this->name, 0, "NOTIFY(%d): %p, %p", event, data, data2); + if (event == GF_EVENT_UPCALL) { + up_data = (struct gf_upcall *)data; + if (up_data->event_type == GF_UPCALL_CACHE_INVALIDATION) { + up_ci = (struct gf_upcall_cache_invalidation *)up_data->data; + up_ci->flags |= UP_INVAL_ATTR; + } + goto done; + } + if (event == GF_EVENT_TRANSLATOR_OP) { if (!ec->up) { error = -1; @@ -542,6 +554,7 @@ ec_notify (xlator_t *this, int32_t event, void *data, void *data2) unlock: UNLOCK (&ec->lock); +done: if (propagate) { error = default_notify (this, event, data); } |