summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr/src/afr-self-heal-name.c
diff options
context:
space:
mode:
authorPranith Kumar K <pkarampu@redhat.com>2014-09-23 12:43:02 +0530
committerVijay Bellur <vbellur@redhat.com>2014-09-23 09:49:10 -0700
commit1b27b8231e2d69c3bfd4710ab3f631cd3604e362 (patch)
tree4fe5d5e5a43d5ae38c2401b4bff13586fc52db2c /xlators/cluster/afr/src/afr-self-heal-name.c
parente582cc6577913760d6b8636cef3d7267890ac1f1 (diff)
cluster/afr: Don't start heal when lookup succeeds on < 2 children
Backport of http://review.gluster.org/8698 Problem: When self-heal code doesn't see at least 2 successes on looking up children, then self-heal can't be done. What is happening now is if all the lookups fail then the pending changelog is all zeros in xattrs so all the children are becoming sources and leading to crashes when the code paths further assume that some data structures are populated properly Fix: Don't proceed with self-heals when < 2 children succeed lookups. BUG: 1145726 Change-Id: I65465843f0e554c8ccdd8fa930ab42ac123ec023 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> Reviewed-on: http://review.gluster.org/8824 Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/cluster/afr/src/afr-self-heal-name.c')
-rw-r--r--xlators/cluster/afr/src/afr-self-heal-name.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/xlators/cluster/afr/src/afr-self-heal-name.c b/xlators/cluster/afr/src/afr-self-heal-name.c
index a3020f4e1a7..c5d126185c7 100644
--- a/xlators/cluster/afr/src/afr-self-heal-name.c
+++ b/xlators/cluster/afr/src/afr-self-heal-name.c
@@ -571,7 +571,7 @@ afr_selfheal_name_do (call_frame_t *frame, xlator_t *this, inode_t *parent,
ret = afr_selfheal_entrylk (frame, this, parent, this->name, bname,
locked_on);
{
- if (ret < 2) {
+ if (ret < AFR_SH_MIN_PARTICIPANTS) {
ret = -ENOTCONN;
goto unlock;
}