diff options
author | Ravishankar N <ravishankar@redhat.com> | 2017-06-25 21:50:09 +0530 |
---|---|---|
committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2017-07-03 15:20:55 +0000 |
commit | e9699c20eebf88d658eb9e32d7c6d00288b28cc2 (patch) | |
tree | ffcd77820a49584868acccc925e931d19c6e6475 /heal | |
parent | 26a81d878c6669cfecb81892a4460bd904512196 (diff) |
glfsheal: prevent background self-heals
Problem:
For a file in gfid split-brain, the parent directory ('/' during
testing) was detected as possibly undergoing heal instead of split-brain
in `heal-info` output. Also, it was not being displayed in `info
split-brain` output for the same reason. The problem was that when `glfsheal`
was run, lookup on '/' triggered a background self-heal due to which processing
of '/' during `heal info` failed to acquire locks with errno=EAGAIN.
Fix:
Set background-self-heal-count to zero while launching glfsheal.
> Reviewed-on: https://review.gluster.org/13772
> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
> Smoke: Gluster Build System <jenkins@build.gluster.org>
> Reviewed-by: Jeff Darcy <jeff@pl.atyp.us>
(cherry picked from commit b4db625d0ccb4fdc6537ed9f6e8ebeaffd1c4873)
Change-Id: I153a7c75af71f213a4eefacf504a0f9806c528a5
BUG: 1467268
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
Reviewed-on: https://review.gluster.org/17675
Smoke: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Shyamsundar Ranganathan <srangana@redhat.com>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'heal')
-rw-r--r-- | heal/src/glfs-heal.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/heal/src/glfs-heal.c b/heal/src/glfs-heal.c index 07fc6acbf81..fb997948f57 100644 --- a/heal/src/glfs-heal.c +++ b/heal/src/glfs-heal.c @@ -881,6 +881,11 @@ glfsh_set_heal_options (glfs_t *fs, gf_xl_afr_op_t heal_op) { int ret = 0; + ret = glfs_set_xlator_option (fs, "*-replicate-*", + "background-self-heal-count", "0"); + if (ret) + goto out; + if ((heal_op != GF_SHD_OP_SBRAIN_HEAL_FROM_BIGGER_FILE) && (heal_op != GF_SHD_OP_SBRAIN_HEAL_FROM_BRICK) && (heal_op != GF_SHD_OP_SBRAIN_HEAL_FROM_LATEST_MTIME)) @@ -897,6 +902,7 @@ glfsh_set_heal_options (glfs_t *fs, gf_xl_afr_op_t heal_op) ret = glfs_set_xlator_option (fs, "*-replicate-*", "entry-self-heal", "on"); + out: return ret; } |