From 40c18b189f31a87b5c5f9344c4a0ab44cb61ef75 Mon Sep 17 00:00:00 2001 From: Kinglong Mee Date: Mon, 13 May 2019 16:42:01 +0800 Subject: gfapi: set right pargfid according to parent's inode EC updates parent's inode from loc, when pargfid is not the parent's inode's, a warnning message is print, and an error is returned to up xlator. [ec-helpers.c:400:ec_loc_gfid_check] 0-openfs1-disperse-0: Mismatching GFID's in loc Change-Id: Ie8036be91f039083a1e3fe17ec235a222df84b97 fixes: bz#1723280 Signed-off-by: Kinglong Mee --- api/src/glfs-resolve.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api/src/glfs-resolve.c b/api/src/glfs-resolve.c index a79f4905749..e03bbecbd8d 100644 --- a/api/src/glfs-resolve.c +++ b/api/src/glfs-resolve.c @@ -335,6 +335,7 @@ glfs_resolve_component(struct glfs *fs, xlator_t *subvol, inode_t *parent, if (temp_parent) { inode_unref(loc.parent); loc.parent = temp_parent; + gf_uuid_copy(loc.pargfid, temp_parent->gfid); inode_find_directory_name(loc.inode, &loc.name); } @@ -345,10 +346,12 @@ glfs_resolve_component(struct glfs *fs, xlator_t *subvol, inode_t *parent, if (temp_parent) { inode_unref(loc.parent); loc.parent = temp_parent; + gf_uuid_copy(loc.pargfid, temp_parent->gfid); inode_find_directory_name(loc.inode, &loc.name); } else if (__is_root_gfid(loc.inode->gfid)) { inode_unref(loc.parent); loc.parent = inode_ref(loc.inode); + gf_uuid_copy(loc.pargfid, loc.inode->gfid); loc.name = "."; } else { inode_unref(loc.inode); -- cgit