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,  | 
