diff options
author | karthik-us <ksubrahm@redhat.com> | 2019-03-18 11:57:28 +0530 |
---|---|---|
committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2019-04-16 10:53:04 +0000 |
commit | 6bd52e5108e73a1f1ac186d432f94a287d435475 (patch) | |
tree | 91943ad04a2bf30ed3372a2d405bf0fa0337e92d /xlators/cluster/afr | |
parent | fbba6e397f5ce473eddca710d593a6c2b62906d5 (diff) |
cluster/afr: Thin-arbiter SHD fixes
This patch address post-merge review comments for commit
5784a00f997212d34bd52b2303e20c097240d91c
Change-Id: I7ed954664a2ae8e1091d23ee3ceb9c66e83bfeac
fixes: bz#1699319
Signed-off-by: karthik-us <ksubrahm@redhat.com>
Diffstat (limited to 'xlators/cluster/afr')
-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 7eb12070a39..7a2f43c646a 100644 --- a/xlators/cluster/afr/src/afr-self-heald.c +++ b/xlators/cluster/afr/src/afr-self-heald.c @@ -590,7 +590,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; @@ -602,18 +604,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, @@ -640,6 +635,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; } @@ -854,9 +850,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 33258a048a4..0a5bab89bcf 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 |