diff options
| author | Joseph Fernandes <josferna@redhat.com> | 2016-05-02 16:20:30 +0530 | 
|---|---|---|
| committer | Dan Lambright <dlambrig@redhat.com> | 2016-05-14 03:23:32 -0700 | 
| commit | d8a673effa83c1c03082ec13045175b92313f221 (patch) | |
| tree | 83f01c3061992288e1efa78137c6fed5fac7ba9d | |
| parent | 93dd9a34e9cad915ba0f99ac1cc383fc4ec129ff (diff) | |
tier/detach : During detach check if background fixlayout is done
During detach check if background fixlayout is done, if not done ignore
the case and continue detach.
Backport of http://review.gluster.org/14147
> Change-Id: I5d5cfc0e73d0eb217fdeab54c432dc4af8bc598d
> BUG: 1332136
> Signed-off-by: Joseph Fernandes <josferna@redhat.com>
> Reviewed-on: http://review.gluster.org/14147
> Smoke: Gluster Build System <jenkins@build.gluster.com>
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
> CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
> Reviewed-by: N Balachandran <nbalacha@redhat.com>
> Reviewed-by: Dan Lambright <dlambrig@redhat.com>
>Signed-off-by: Joseph Fernandes <josferna@redhat.com>
Change-Id: I2161673cf6861b02a8e323366a13a13587258bef
BUG: 1333934
Signed-off-by: Joseph Fernandes <josferna@redhat.com>
Reviewed-on: http://review.gluster.org/14246
Smoke: Gluster Build System <jenkins@build.gluster.com>
Tested-by: Joseph Fernandes
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: N Balachandran <nbalacha@redhat.com>
Reviewed-by: Dan Lambright <dlambrig@redhat.com>
| -rw-r--r-- | xlators/cluster/dht/src/dht-rebalance.c | 17 | 
1 files changed, 16 insertions, 1 deletions
diff --git a/xlators/cluster/dht/src/dht-rebalance.c b/xlators/cluster/dht/src/dht-rebalance.c index f41aa224642..abdb8ebb0a0 100644 --- a/xlators/cluster/dht/src/dht-rebalance.c +++ b/xlators/cluster/dht/src/dht-rebalance.c @@ -3350,7 +3350,20 @@ out:  int  gf_tier_clear_fix_layout (xlator_t *this, loc_t *loc, gf_defrag_info_t *defrag)  { -        int ret = -1; +        int ret         = -1; +        dict_t *dict    = NULL; + +        /* Check if background fixlayout is completed. */ +        ret = syncop_getxattr (this, loc, &dict, +                        GF_XATTR_TIER_LAYOUT_FIXED_KEY, NULL, NULL); +        if (ret) { +                /* Background fixlayout not complete - nothing to clear*/ +                gf_log (this->name, GF_LOG_WARNING, +                        "Unable to retrieve fixlayout xattr." +                        "Assume background fix layout not complete"); +                ret = 0; +                goto out; +        }          ret = syncop_removexattr (this, loc, GF_XATTR_TIER_LAYOUT_FIXED_KEY,                                    NULL, NULL); @@ -3364,6 +3377,8 @@ gf_tier_clear_fix_layout (xlator_t *this, loc_t *loc, gf_defrag_info_t *defrag)          }          ret = 0;  out: +        if (dict) +                dict_unref (dict);          return ret;  }  | 
