From 326747aa892de2e345d7d74d76314d3f696430bb Mon Sep 17 00:00:00 2001 From: krishna Date: Wed, 22 Feb 2012 13:46:12 +0530 Subject: nfs: If entry is not found return ENOENT instead of entering an infinite loop. Change-Id: I06d471cb996e18fb656a6470de38d2401d846318 BUG: 772542 Signed-off-by: krishna Reviewed-on: http://review.gluster.com/2793 Tested-by: Gluster Build System Reviewed-by: Anand Avati --- xlators/nfs/server/src/nfs3-helpers.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/xlators/nfs/server/src/nfs3-helpers.c b/xlators/nfs/server/src/nfs3-helpers.c index cb6f9ffe058..54e98b8ca58 100644 --- a/xlators/nfs/server/src/nfs3-helpers.c +++ b/xlators/nfs/server/src/nfs3-helpers.c @@ -2503,6 +2503,14 @@ nfs3_fh_resolve_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, gf_dirent_t *entries); +void +nfs3_fh_resolve_not_found (nfs3_call_state_t *cs) +{ + cs->resolve_ret = -1; + cs->resolve_errno = ENOENT; + nfs3_call_resume (cs); +} + int nfs3_fh_resolve_found_entry (nfs3_call_state_t *cs, gf_dirent_t *candidate) { @@ -2813,7 +2821,6 @@ int nfs3_fh_resolve_check_response (nfs3_call_state_t *cs) { int ret = -EFAULT; - nfs_user_t nfu = {0, }; int response = GF_NFS3_FHRESOLVE_NOTFOUND; if (!cs) @@ -2834,10 +2841,7 @@ nfs3_fh_resolve_check_response (nfs3_call_state_t *cs) break; case GF_NFS3_FHRESOLVE_NOTFOUND: - nfs_user_root_create (&nfu); - nfs_readdirp (cs->nfsx, cs->vol, &nfu, cs->resolve_dir_fd, - GF_NFS3_DTPREF, cs->lastentryoffset, - nfs3_fh_resolve_readdir_cbk, cs); + nfs3_fh_resolve_not_found (cs); break; } -- cgit