diff options
| author | Pranith Kumar K <pranithk@gluster.com> | 2012-04-03 08:12:34 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vijay@gluster.com> | 2012-04-05 05:07:19 -0700 | 
| commit | 7d62749f14663ea6c0000a4aab2c32041cbb4e75 (patch) | |
| tree | a7b8228ece64b1e842a4f29b56a23b80d8173019 /xlators/cluster/afr/src/afr-common.c | |
| parent | 1f3a0dd4742a2fcd3215aee4a5e22125d7ea4f4d (diff) | |
self-heald: Find self-heal failures, split-brain
Change-Id: Ib967f0fe0b537fe60e51d7d05462b58a7f16596e
BUG: 806745
Signed-off-by: Pranith Kumar K <pranithk@gluster.com>
Reviewed-on: http://review.gluster.com/3077
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
Diffstat (limited to 'xlators/cluster/afr/src/afr-common.c')
| -rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 15 | 
1 files changed, 13 insertions, 2 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 2cfe92acf..9874b2619 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -1301,7 +1301,8 @@ afr_launch_self_heal (call_frame_t *frame, xlator_t *this, inode_t *inode,                        void (*gfid_sh_success_cbk) (call_frame_t *sh_frame,                                                     xlator_t *this),                        int (*unwind) (call_frame_t *frame, xlator_t *this, -                                     int32_t op_ret, int32_t op_errno)) +                                     int32_t op_ret, int32_t op_errno, +                                     int32_t sh_failed))  {          afr_local_t             *local = NULL;          char                    sh_type_str[256] = {0,}; @@ -1527,9 +1528,12 @@ afr_lookup_set_self_heal_params (afr_local_t *local, xlator_t *this)  int  afr_self_heal_lookup_unwind (call_frame_t *frame, xlator_t *this, -                             int32_t op_ret, int32_t op_errno) +                             int32_t op_ret, int32_t op_errno, +                             int32_t sh_failed)  {          afr_local_t *local = NULL; +        int         ret    = -1; +        dict_t      *xattr = NULL;          local = frame->local; @@ -1544,6 +1548,13 @@ afr_self_heal_lookup_unwind (call_frame_t *frame, xlator_t *this,          }          afr_lookup_done_success_action (frame, this, _gf_true); +        xattr = local->cont.lookup.xattr; +        if (xattr) { +                ret = dict_set_int32 (xattr, "sh-failed", sh_failed); +                if (ret) +                        gf_log (this->name, GF_LOG_ERROR, "%s: Failed to set " +                                "sh-failed to %d", local->loc.path, sh_failed); +        }  out:          AFR_STACK_UNWIND (lookup, frame, local->op_ret, local->op_errno,                            local->cont.lookup.inode, &local->cont.lookup.buf,  | 
