diff options
-rw-r--r-- | libglusterfs/src/glusterfs.h | 4 | ||||
-rw-r--r-- | libglusterfs/src/upcall-utils.h | 2 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 3 | ||||
-rw-r--r-- | xlators/cluster/ec/src/ec.c | 13 | ||||
-rw-r--r-- | xlators/performance/md-cache/src/md-cache.c | 4 |
5 files changed, 18 insertions, 8 deletions
diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h index c1bb29ad974..ab24e9a45f8 100644 --- a/libglusterfs/src/glusterfs.h +++ b/libglusterfs/src/glusterfs.h @@ -287,10 +287,6 @@ #define GF_LK_ADVISORY 0 #define GF_LK_MANDATORY 1 -/* md-cache keys */ -#define MDC_INVALIDATE_IATT "mdc.invalidate.iatt" -#define MDC_INVALIDATE_XATT "mdc.invalidate.xatt" - const char *fop_enum_to_pri_string (glusterfs_fop_t fop); const char *fop_enum_to_string (glusterfs_fop_t fop); diff --git a/libglusterfs/src/upcall-utils.h b/libglusterfs/src/upcall-utils.h index 47049fd7014..3b5dce33e45 100644 --- a/libglusterfs/src/upcall-utils.h +++ b/libglusterfs/src/upcall-utils.h @@ -35,6 +35,8 @@ #define UP_EXPLICIT_LOOKUP 0x00001000 /* Request an explicit lookup */ +#define UP_INVAL_ATTR 0x00002000 /* Request to invalidate iatt and xatt */ + /* for fops - open, read, lk, */ #define UP_UPDATE_CLIENT (UP_ATIME) 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); } diff --git a/xlators/performance/md-cache/src/md-cache.c b/xlators/performance/md-cache/src/md-cache.c index 9edbdf4aebe..9806e642c9a 100644 --- a/xlators/performance/md-cache/src/md-cache.c +++ b/xlators/performance/md-cache/src/md-cache.c @@ -2644,8 +2644,8 @@ mdc_invalidate (xlator_t *this, void *data) goto out; } - if ((up_ci->flags & (UP_NLINK | UP_RENAME_FLAGS | UP_FORGET)) || - (up_ci->dict && dict_get (up_ci->dict, MDC_INVALIDATE_IATT))) { + if (up_ci->flags & + (UP_NLINK | UP_RENAME_FLAGS | UP_FORGET | UP_INVAL_ATTR)) { mdc_inode_iatt_invalidate (this, inode); mdc_inode_xatt_invalidate (this, inode); INCREMENT_ATOMIC (conf->mdc_counter.lock, |