diff options
Diffstat (limited to 'xlators/protocol/server/src/server-resolve.c')
-rw-r--r-- | xlators/protocol/server/src/server-resolve.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/xlators/protocol/server/src/server-resolve.c b/xlators/protocol/server/src/server-resolve.c index 1ad45394dd7..a1fe2e85267 100644 --- a/xlators/protocol/server/src/server-resolve.c +++ b/xlators/protocol/server/src/server-resolve.c @@ -11,6 +11,7 @@ #include "server.h" #include "server-helpers.h" #include "server-messages.h" +#include "compat-errno.h" int @@ -58,6 +59,10 @@ resolve_gfid_entry_cbk (call_frame_t *frame, void *cookie, xlator_t *this, resolve = state->resolve_now; resolve_loc = &resolve->resolve_loc; + if (!state->loc.inode && inode) { + state->loc.inode = inode_ref (inode); + } + if (op_ret == -1) { if (op_errno == ENOENT) { gf_msg_debug (this->name, 0, "%s/%s: failed to resolve" @@ -71,7 +76,9 @@ resolve_gfid_entry_cbk (call_frame_t *frame, void *cookie, xlator_t *this, uuid_utoa (resolve_loc->pargfid), resolve_loc->name, strerror (op_errno)); } - goto out; + if (op_errno != ENODATA) { + goto out; + } } link_inode = inode_link (inode, resolve_loc->parent, |