diff options
| -rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 2925a1dc1da..9c96056a723 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -730,6 +730,7 @@ afr_set_split_brain_choice_cbk (void *data)          xlator_t     *this      = THIS;          afr_spb_choice_timeout_cancel (this, inode); +        inode_invalidate (inode);          inode_unref (inode);          return;  } @@ -749,6 +750,7 @@ afr_set_split_brain_choice (int ret, call_frame_t *frame, void *opaque)          gf_boolean_t        timer_set        = _gf_false;          gf_boolean_t        timer_cancelled  = _gf_false;          gf_boolean_t        timer_reset      = _gf_false; +        gf_boolean_t        need_invalidate  = _gf_true;          int                 old_spb_choice   = -1;          frame = data->frame; @@ -861,6 +863,7 @@ set_timer:                          timer_set = _gf_true;                  if (timer_reset && !ctx->timer)                          timer_cancelled = _gf_true; +                need_invalidate = _gf_false;          }  unlock:          UNLOCK(&inode->lock); @@ -873,7 +876,8 @@ unlock:           * reads from an older cached value despite a change in spb_choice to           * a new value.           */ -        inode_invalidate (inode); +        if (need_invalidate) +                inode_invalidate (inode);  out:          if (data)                  GF_FREE (data);  | 
