From 66205114267ec659b4ad8084c7e9497009529c61 Mon Sep 17 00:00:00 2001 From: Raghavendra G Date: Mon, 14 May 2012 14:23:56 +0530 Subject: mount/fuse: ignore any erros that might've happened while resolving entry in resolver. One error we hit was absence of gfid on backend. While the lookup code-path generates a new uuid and sets it on file, resolver code doesn't do that. Since, functionally (atleast after resolving parent inode, we would be resolving the path in new-graph) both resolver and lookup does same work, it would be no harm in ignoring errors during resolving the entry. This would help us to continue with the _extra_ work (like healing gfid as of now) in fuse_lookup_resume. Change-Id: If46d5e07c32e67b5744287a6ef55d0b0fe347689 BUG: 821138 Signed-off-by: Raghavendra G Reviewed-on: http://review.gluster.com/3344 Tested-by: Gluster Build System Reviewed-by: Anand Avati --- xlators/mount/fuse/src/fuse-bridge.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'xlators/mount/fuse/src/fuse-bridge.c') diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c index 124cca14eab..fc294e7a8a5 100644 --- a/xlators/mount/fuse/src/fuse-bridge.c +++ b/xlators/mount/fuse/src/fuse-bridge.c @@ -432,6 +432,14 @@ fuse_lookup_resume (fuse_state_t *state) return; } + /* parent was resolved, entry could not, may be a missing gfid? + * Hence try to do a regular lookup + */ + if ((state->resolve.op_ret == -2) + && (state->resolve.op_errno == ENODATA)) { + state->resolve.op_ret = 0; + } + if (state->loc.inode) { gf_log ("glusterfs-fuse", GF_LOG_TRACE, "%"PRIu64": LOOKUP %s(%s)", state->finh->unique, -- cgit