diff options
Diffstat (limited to 'xlators/cluster/afr/src')
| -rw-r--r-- | xlators/cluster/afr/src/afr-self-heal-entry.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/xlators/cluster/afr/src/afr-self-heal-entry.c b/xlators/cluster/afr/src/afr-self-heal-entry.c index 9fa128e42..4db47c257 100644 --- a/xlators/cluster/afr/src/afr-self-heal-entry.c +++ b/xlators/cluster/afr/src/afr-self-heal-entry.c @@ -1196,6 +1196,18 @@ afr_sh_entry_impunge_hardlink_cbk (call_frame_t *impunge_frame, void *cookie,                                     struct iatt *postparent, dict_t *xdata)  {          int              call_count        = 0; +        afr_local_t     *impunge_local = NULL; +        afr_self_heal_t *impunge_sh  = NULL; + +        impunge_local = impunge_frame->local; +        impunge_sh = &impunge_local->self_heal; + +        if (IA_IFLNK == impunge_sh->entrybuf.ia_type) { +                //For symlinks impunge is attempted un-conditionally +                //So the file can already exist. +                if ((op_ret < 0) && (op_errno == EEXIST)) +                        op_ret = 0; +        }          call_count = afr_frame_return (impunge_frame);          if (call_count == 0)  | 
