diff options
author | karthik-us <ksubrahm@redhat.com> | 2019-03-18 11:57:28 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2019-04-12 05:07:14 +0000 |
commit | 2589658c7cd967d977fc4f8541379ee2f40eb2fa (patch) | |
tree | bde6f11f32eb00eaa063027ee8ffaa1335fbdea8 | |
parent | a1ce2910522335c2fffaebd941c4aaf861ef04fa (diff) |
cluster/afr: Thin-arbiter SHD fixes
This patch address post-merge review comments for commit
5784a00f997212d34bd52b2303e20c097240d91c
Change-Id: I7ed954664a2ae8e1091d23ee3ceb9c66e83bfeac
fixes: bz#1697930
Signed-off-by: karthik-us <ksubrahm@redhat.com>
-rw-r--r-- | xlators/cluster/afr/src/afr-self-heald.c | 24 | ||||
-rw-r--r-- | xlators/cluster/afr/src/afr.c | 2 |
2 files changed, 13 insertions, 13 deletions
diff --git a/xlators/cluster/afr/src/afr-self-heald.c b/xlators/cluster/afr/src/afr-self-heald.c index 8bc4720005e..fe8ca026781 100644 --- a/xlators/cluster/afr/src/afr-self-heald.c +++ b/xlators/cluster/afr/src/afr-self-heald.c @@ -592,7 +592,9 @@ _afr_shd_ta_get_xattrs(xlator_t *this, loc_t *loc, dict_t **xdata) { afr_private_t *priv = NULL; dict_t *xattr = NULL; - int *raw = NULL; + int raw[AFR_NUM_CHANGE_LOGS] = { + 0, + }; int ret = -1; int i = 0; @@ -604,18 +606,11 @@ _afr_shd_ta_get_xattrs(xlator_t *this, loc_t *loc, dict_t **xdata) "Failed to create dict."); goto out; } - for (i = 0; i < priv->child_count; i++) { - raw = GF_CALLOC(AFR_NUM_CHANGE_LOGS, sizeof(int), gf_afr_mt_int32_t); - if (!raw) - goto out; - - ret = dict_set_bin(xattr, priv->pending_key[i], raw, - AFR_NUM_CHANGE_LOGS * sizeof(int)); - if (ret) { - GF_FREE(raw); + ret = dict_set_static_bin(xattr, priv->pending_key[i], &raw, + AFR_NUM_CHANGE_LOGS * sizeof(int)); + if (ret) goto out; - } } ret = syncop_xattrop(priv->children[THIN_ARBITER_BRICK_INDEX], loc, @@ -642,6 +637,7 @@ afr_shd_ta_get_xattrs(xlator_t *this, loc_t *loc, struct subvol_healer *healer, if (afr_shd_fill_ta_loc(this, loc)) { gf_msg(this->name, GF_LOG_ERROR, -ret, AFR_MSG_THIN_ARB, "Failed to populate thin-arbiter loc for: %s.", loc->name); + ret = -1; goto out; } @@ -856,9 +852,13 @@ afr_shd_index_healer(void *data) sleep(1); } while (ret > 0); - if (pre_crawl_xdata && !healer->crawl_event.heal_failed_count) { + if (ret == 0 && pre_crawl_xdata && + !healer->crawl_event.heal_failed_count) { afr_shd_ta_check_and_unset_xattrs(this, &loc, healer, pre_crawl_xdata); + } + + if (pre_crawl_xdata) { dict_unref(pre_crawl_xdata); pre_crawl_xdata = NULL; } diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c index a0a755169dd..1cd4f021a01 100644 --- a/xlators/cluster/afr/src/afr.c +++ b/xlators/cluster/afr/src/afr.c @@ -368,7 +368,7 @@ afr_ta_init(afr_private_t *priv) priv->release_ta_notify_dom_lock = _gf_false; INIT_LIST_HEAD(&priv->ta_waitq); INIT_LIST_HEAD(&priv->ta_onwireq); - *priv->ta_gfid = 0; + gf_uuid_clear(priv->ta_gfid); } int32_t |