summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr/src/afr-transaction.c
diff options
context:
space:
mode:
authorPranith Kumar K <pkarampu@redhat.com>2015-02-02 18:49:01 +0530
committerPranith Kumar Karampuri <pkarampu@redhat.com>2015-03-05 21:56:20 -0800
commit3797caabb95ad8e62dee74a5331d324ddffc654f (patch)
treeffc7c647e40388e9229b80a5aff710538c710f73 /xlators/cluster/afr/src/afr-transaction.c
parent8fa36bc7a11968086e31ac32b9a24de07dd50d15 (diff)
cluster/afr: Implementation of quorum-reads
Provide a way of disabling reads when quorum is not met. Change-Id: Ic4f57c2b87a0b8514600759de3a7a47e217fe3b5 BUG: 1187885 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> Reviewed-on: http://review.gluster.org/9543 Reviewed-by: Ravishankar N <ravishankar@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'xlators/cluster/afr/src/afr-transaction.c')
-rw-r--r--xlators/cluster/afr/src/afr-transaction.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/xlators/cluster/afr/src/afr-transaction.c b/xlators/cluster/afr/src/afr-transaction.c
index 3cb073ecfc3..afa11bba7ab 100644
--- a/xlators/cluster/afr/src/afr-transaction.c
+++ b/xlators/cluster/afr/src/afr-transaction.c
@@ -28,6 +28,13 @@ int
afr_changelog_do (call_frame_t *frame, xlator_t *this, dict_t *xattr,
afr_changelog_resume_t changelog_resume);
+static int32_t
+afr_quorum_errno (afr_private_t *priv)
+{
+ if (priv->quorum_reads)
+ return ENOTCONN;
+ return EROFS;
+}
int
__afr_txn_write_fop (call_frame_t *frame, xlator_t *this)
@@ -558,7 +565,7 @@ afr_handle_quorum (call_frame_t *frame)
}
local->op_ret = -1;
- local->op_errno = EROFS;
+ local->op_errno = afr_quorum_errno (priv);
}
int
@@ -992,7 +999,7 @@ afr_changelog_pre_op (call_frame_t *frame, xlator_t *this)
* quorum number of nodes.
*/
if (priv->quorum_count && !afr_has_fop_quorum (frame)) {
- op_errno = EROFS;
+ op_errno = afr_quorum_errno (priv);
goto err;
}