From ff0cd7c4e326d848d5fa6591c7cc8ce54711d2d7 Mon Sep 17 00:00:00 2001 From: Poornima G Date: Wed, 19 Feb 2014 14:12:29 +0530 Subject: libgfapi: In glfs_resolve_at(), do not override the previous return value. Overriding ret to contain glfs_loc_touchup()s' return value implies that if glfs_loc_touchup() is successful, glfs_resolve_at() is also successful which is not necessarily true. This was causing glfs_resolve_at() to succeed even if it couldn't resolve, thus create and other fops would fail. Hence overriding ret only if glfs_loc_touchup() fails. Change-Id: I0804afbd120b3798abe07e870bfc40bf162bc289 BUG: 1066837 Signed-off-by: Poornima G Reviewed-on: http://review.gluster.org/7125 Tested-by: Gluster Build System Reviewed-by: Anand Avati --- api/src/glfs-resolve.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/api/src/glfs-resolve.c b/api/src/glfs-resolve.c index 0ad9ce723..7cd1e47bc 100644 --- a/api/src/glfs-resolve.c +++ b/api/src/glfs-resolve.c @@ -450,7 +450,9 @@ glfs_resolve_at (struct glfs *fs, xlator_t *subvol, inode_t *at, ret = 0; } - ret = glfs_loc_touchup (loc); + if (glfs_loc_touchup (loc) < 0) { + ret = -1; + } out: GF_FREE (path); -- cgit