diff options
author | Pranith Kumar K <pkarampu@redhat.com> | 2015-02-02 18:49:01 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2015-03-05 21:56:20 -0800 |
commit | 3797caabb95ad8e62dee74a5331d324ddffc654f (patch) | |
tree | ffc7c647e40388e9229b80a5aff710538c710f73 /xlators/cluster/afr/src/afr-read-txn.c | |
parent | 8fa36bc7a11968086e31ac32b9a24de07dd50d15 (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-read-txn.c')
-rw-r--r-- | xlators/cluster/afr/src/afr-read-txn.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/xlators/cluster/afr/src/afr-read-txn.c b/xlators/cluster/afr/src/afr-read-txn.c index 29a926dbd97..ec67a20e624 100644 --- a/xlators/cluster/afr/src/afr-read-txn.c +++ b/xlators/cluster/afr/src/afr-read-txn.c @@ -195,6 +195,15 @@ afr_read_txn (call_frame_t *frame, xlator_t *this, inode_t *inode, local->readfn = readfn; local->inode = inode_ref (inode); + if (priv->quorum_reads && + priv->quorum_count && !afr_has_quorum (priv->child_up, this)) { + local->op_ret = -1; + local->op_errno = ENOTCONN; + read_subvol = -1; + goto read; + } + + local->transaction.type = type; ret = afr_inode_read_subvol_type_get (inode, this, local->readable, &event_generation, type); @@ -232,6 +241,7 @@ afr_read_txn (call_frame_t *frame, xlator_t *this, inode_t *inode, local->read_attempted[read_subvol] = 1; +read: local->readfn (frame, this, read_subvol); return 0; |