diff options
author | Mohammed Rafi KC <rkavunga@redhat.com> | 2019-09-05 18:12:35 +0530 |
---|---|---|
committer | mohammed rafi kc <rkavunga@redhat.com> | 2019-09-05 12:43:45 +0000 |
commit | fcfcb0ad04402a34f07075d29981922a6dbc858c (patch) | |
tree | caea769a9afde8ef5e59a3d098fc4f20b59aff8a /xlators/cluster/afr/src/afr-common.c | |
parent | 23e391b6d1db72563a0f8e239d7877c9839d49fd (diff) |
afr/lookup: Pass xattr_req in while doing a selfheal in lookup
We were not passing xattr_req when doing a name self heal
as well as a meta data heal. Because of this, some xdata
was missing which causes i/o errors
Backport of>https://review.gluster.org/#/c/glusterfs/+/23024/
>Change-Id: Ibfb1205a7eb0195632dc3820116ffbbb8043545f
>Fixes: bz#1728770
>Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
Change-Id: I740ccdbfcf2667fe4a850c12ecdc4b9eeed08293
Fixes: bz#1749352
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
Diffstat (limited to 'xlators/cluster/afr/src/afr-common.c')
-rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 605d8b52438..a1a36bb965e 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -2605,6 +2605,11 @@ afr_lookup_sh_metadata_wrap(void *opaque) dict = dict_new(); if (!dict) goto out; + + if (local->xattr_req) { + dict_copy(local->xattr_req, dict); + } + ret = dict_set_str(dict, "link-count", GF_XATTROP_INDEX_COUNT); if (ret) { gf_msg_debug(this->name, -ret, "Unable to set link-count in dict "); @@ -2613,7 +2618,7 @@ afr_lookup_sh_metadata_wrap(void *opaque) if (loc_is_nameless(&local->loc)) { ret = afr_selfheal_unlocked_discover_on(frame, local->inode, local->loc.gfid, local->replies, - local->child_up); + local->child_up, dict); } else { inode = afr_selfheal_unlocked_lookup_on(frame, local->loc.parent, local->loc.name, local->replies, @@ -2787,7 +2792,7 @@ afr_lookup_selfheal_wrap(void *opaque) inode = afr_selfheal_unlocked_lookup_on(frame, local->loc.parent, local->loc.name, local->replies, - local->child_up, NULL); + local->child_up, local->xattr_req); if (inode) inode_unref(inode); |