diff options
Diffstat (limited to 'xlators')
-rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 96ed41d3abf..4dd5d74a16b 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -692,6 +692,10 @@ afr_replies_interpret (call_frame_t *frame, xlator_t *this, inode_t *inode) data_readable[i] = 1; metadata_readable[i] = 1; } + if (AFR_IS_ARBITER_BRICK (priv, ARBITER_BRICK_INDEX)) { + data_readable[ARBITER_BRICK_INDEX] = 0; + metadata_readable[ARBITER_BRICK_INDEX] = 0; + } for (i = 0; i < priv->child_count; i++) { if (!replies[i].valid) { @@ -1789,6 +1793,10 @@ unwind: read_subvol = spb_choice; else read_subvol = afr_first_up_child (frame, this); + if (AFR_IS_ARBITER_BRICK (priv, read_subvol)) { + local->op_ret = -1; + local->op_errno = ENOTCONN; + } } par_read_subvol = afr_get_parent_read_subvol (this, parent, replies, readable); |