summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr/src/afr-self-heal-metadata.c
diff options
context:
space:
mode:
authorPranith Kumar K <pkarampu@redhat.com>2014-04-15 12:40:57 +0530
committerVijay Bellur <vbellur@redhat.com>2014-04-28 09:43:24 -0700
commit07ed48398e41df1b65202f3d2e0be6f2c3ca8ceb (patch)
tree61223ce6be2394606058b8403e0a70e40a6df9f0 /xlators/cluster/afr/src/afr-self-heal-metadata.c
parent115b4093a44f6e23c28e5a382f82e72ddf73d97c (diff)
cluster/afr: trigger self-heals even when they are set to off.
When attempt-self-heal is set to true, trigger data/metadata/entry self-heals even when they are disabled. This is useful for gluster volume heal info to report them even when metadata-self-heal entry-self-heal, data-self-heal are set to off. Change-Id: Idc3f0d5d049c875b4f975248fef56ea2238da47c BUG: 1039544 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> Reviewed-on: http://review.gluster.org/7480 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Ravishankar N <ravishankar@redhat.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/cluster/afr/src/afr-self-heal-metadata.c')
-rw-r--r--xlators/cluster/afr/src/afr-self-heal-metadata.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/xlators/cluster/afr/src/afr-self-heal-metadata.c b/xlators/cluster/afr/src/afr-self-heal-metadata.c
index e26d3580e51..7abd852de6c 100644
--- a/xlators/cluster/afr/src/afr-self-heal-metadata.c
+++ b/xlators/cluster/afr/src/afr-self-heal-metadata.c
@@ -688,8 +688,10 @@ afr_sh_metadata_post_nonblocking_inodelk_cbk (call_frame_t *frame,
{
afr_internal_lock_t *int_lock = NULL;
afr_local_t *local = NULL;
+ afr_self_heal_t *sh = NULL;
local = frame->local;
+ sh = &local->self_heal;
int_lock = &local->internal_lock;
if (int_lock->lock_op_ret < 0) {
@@ -697,6 +699,7 @@ afr_sh_metadata_post_nonblocking_inodelk_cbk (call_frame_t *frame,
"inodelks failed for %s.", local->loc.path);
gf_log (this->name, GF_LOG_DEBUG, "Metadata self-heal "
"failed for %s.", local->loc.path);
+ afr_set_self_heal_status (sh, AFR_SELF_HEAL_FAILED);
afr_sh_metadata_done (frame, this);
} else {
@@ -740,16 +743,6 @@ afr_sh_metadata_lock (call_frame_t *frame, xlator_t *this)
return 0;
}
-gf_boolean_t
-afr_can_start_metadata_self_heal (afr_self_heal_t *sh, afr_private_t *priv)
-{
- if (sh->force_confirm_spb)
- return _gf_true;
- if (sh->do_metadata_self_heal && priv->metadata_self_heal)
- return _gf_true;
- return _gf_false;
-}
-
int
afr_self_heal_metadata (call_frame_t *frame, xlator_t *this)
{
@@ -761,7 +754,7 @@ afr_self_heal_metadata (call_frame_t *frame, xlator_t *this)
sh = &local->self_heal;
sh->sh_type_in_action = AFR_SELF_HEAL_METADATA;
- if (afr_can_start_metadata_self_heal (sh, priv)) {
+ if (afr_can_start_metadata_self_heal (local, priv)) {
afr_set_self_heal_status (sh, AFR_SELF_HEAL_STARTED);
afr_sh_metadata_lock (frame, this);
} else {