diff options
author | Ravishankar N <ravishankar@redhat.com> | 2018-06-14 12:59:06 +0530 |
---|---|---|
committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2018-07-09 15:18:31 +0000 |
commit | 6e4ca3168696fd85fec5a4ad29ecdbee4d2b2101 (patch) | |
tree | 868c778d4dbfdaabb1c235888e7384df22ece98d /xlators/cluster/afr/src/afr-self-heal-name.c | |
parent | 16e35706aafbcd710136a33a51881d7ffb2471ca (diff) |
afr: heal gfids when file is not present on all bricks
commit 20fa80057eb430fd72b4fa31b9b65598b8ec1265 introduced a regression
wherein if a file is present in only 1 brick of replica *and* doesn't
have a gfid associated with it, it doesn't get healed upon the next
lookup from the client. Fix it.
Change-Id: I7d1111dcb45b1b8b8340a7d02558f05df70aa599
fixes: bz#1597117
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
(cherry picked from commit eb472d82a083883335bc494b87ea175ac43471ff)
Diffstat (limited to 'xlators/cluster/afr/src/afr-self-heal-name.c')
-rw-r--r-- | xlators/cluster/afr/src/afr-self-heal-name.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/xlators/cluster/afr/src/afr-self-heal-name.c b/xlators/cluster/afr/src/afr-self-heal-name.c index 556d14baf82..bcd0e60c947 100644 --- a/xlators/cluster/afr/src/afr-self-heal-name.c +++ b/xlators/cluster/afr/src/afr-self-heal-name.c @@ -19,7 +19,7 @@ __afr_selfheal_assign_gfid (xlator_t *this, inode_t *parent, uuid_t pargfid, const char *bname, inode_t *inode, struct afr_reply *replies, void *gfid, unsigned char *locked_on, int source, - gf_boolean_t is_gfid_absent) + unsigned char *sources, gf_boolean_t is_gfid_absent) { int ret = 0; int up_count = 0; @@ -48,7 +48,7 @@ __afr_selfheal_assign_gfid (xlator_t *this, inode_t *parent, uuid_t pargfid, } afr_lookup_and_heal_gfid (this, parent, bname, inode, replies, source, - gfid); + sources, gfid); out: return ret; @@ -426,7 +426,7 @@ __afr_selfheal_name_do (call_frame_t *frame, xlator_t *this, inode_t *parent, is_gfid_absent = (gfid_idx == -1) ? _gf_true : _gf_false; ret = __afr_selfheal_assign_gfid (this, parent, pargfid, bname, inode, replies, gfid, locked_on, source, - is_gfid_absent); + sources, is_gfid_absent); if (ret) return ret; |