diff options
| -rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 15 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-inode-read.c | 11 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-inode-write.c | 23 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr.h | 3 | 
4 files changed, 33 insertions, 19 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 80134640..e66be035 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -325,21 +325,6 @@ out:  }  gf_boolean_t -afr_is_data_split_brain (xlator_t *this, inode_t *inode) -{ -        afr_inode_ctx_t *ctx = NULL; -        gf_boolean_t    spb  = _gf_false; - -        ctx = afr_inode_ctx_get (inode, this); -        if (!ctx) -                goto out; -        if (ctx->data_spb == SPB) -                spb = _gf_true; -out: -        return spb; -} - -gf_boolean_t  afr_is_opendir_done (xlator_t *this, inode_t *inode)  {          afr_inode_params_t params = {0}; diff --git a/xlators/cluster/afr/src/afr-inode-read.c b/xlators/cluster/afr/src/afr-inode-read.c index 40d57b6f..1263749b 100644 --- a/xlators/cluster/afr/src/afr-inode-read.c +++ b/xlators/cluster/afr/src/afr-inode-read.c @@ -348,6 +348,11 @@ afr_fstat (call_frame_t *frame, xlator_t *this,          VALIDATE_OR_GOTO (fd->inode, out); +        if (afr_is_split_brain (this, fd->inode)) { +                op_errno = EIO; +                goto out; +        } +          AFR_LOCAL_ALLOC_OR_GOTO (frame->local, out);          local = frame->local; @@ -1658,6 +1663,10 @@ afr_fgetxattr (call_frame_t *frame, xlator_t *this,          children = priv->children; +        if (afr_is_split_brain (this, fd->inode)) { +                op_errno = EIO; +                goto out; +        }          AFR_LOCAL_ALLOC_OR_GOTO (local, out);          frame->local = local; @@ -1813,7 +1822,7 @@ afr_readv (call_frame_t *frame, xlator_t *this,          priv     = this->private;          children = priv->children; -        if (afr_is_data_split_brain (this, fd->inode)) { +        if (afr_is_split_brain (this, fd->inode)) {                  op_errno = EIO;                  goto out;          } diff --git a/xlators/cluster/afr/src/afr-inode-write.c b/xlators/cluster/afr/src/afr-inode-write.c index c619536c..99fa027d 100644 --- a/xlators/cluster/afr/src/afr-inode-write.c +++ b/xlators/cluster/afr/src/afr-inode-write.c @@ -549,6 +549,11 @@ afr_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          priv = this->private; +        if (afr_is_split_brain (this, fd->inode)) { +                op_errno = EIO; +                goto out; +        } +          QUORUM_CHECK(writev,out);          AFR_LOCAL_ALLOC_OR_GOTO (frame->local, out); @@ -1005,6 +1010,10 @@ afr_ftruncate (call_frame_t *frame, xlator_t *this,          priv = this->private; +        if (afr_is_split_brain (this, fd->inode)) { +                op_errno = EIO; +                goto out; +        }          QUORUM_CHECK(ftruncate,out);          AFR_LOCAL_ALLOC_OR_GOTO (frame->local, out); @@ -1410,6 +1419,11 @@ afr_fsetattr (call_frame_t *frame, xlator_t *this,          priv = this->private; +        if (afr_is_split_brain (this, fd->inode)) { +                op_errno = EIO; +                goto out; +        } +          QUORUM_CHECK(fsetattr,out);          transaction_frame = copy_frame (frame); @@ -1797,6 +1811,11 @@ afr_fsetxattr (call_frame_t *frame, xlator_t *this,          priv = this->private; +        if (afr_is_split_brain (this, fd->inode)) { +                op_errno = EIO; +                goto out; +        } +          QUORUM_CHECK(fsetxattr,out);          AFR_LOCAL_ALLOC_OR_GOTO (local, out); @@ -2182,6 +2201,10 @@ afr_fremovexattr (call_frame_t *frame, xlator_t *this,          VALIDATE_OR_GOTO (this->private, out);          priv = this->private; +        if (afr_is_split_brain (this, fd->inode)) { +                op_errno = EIO; +                goto out; +        }          QUORUM_CHECK(fremovexattr, out); diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h index cc0d0107..f4ebf435 100644 --- a/xlators/cluster/afr/src/afr.h +++ b/xlators/cluster/afr/src/afr.h @@ -859,9 +859,6 @@ afr_frame_return (call_frame_t *frame);  gf_boolean_t  afr_is_split_brain (xlator_t *this, inode_t *inode); -gf_boolean_t -afr_is_data_split_brain (xlator_t *this, inode_t *inode); -  void  afr_set_split_brain (xlator_t *this, inode_t *inode, afr_spb_state_t mdata_spb,                       afr_spb_state_t data_spb);  | 
